mirror of
https://github.com/jam422470459/EPD-nRF52-hema213.git
synced 2025-12-18 06:18:12 +08:00
move components to SDK dir
This commit is contained in:
@@ -0,0 +1,188 @@
|
||||
/**
|
||||
* Copyright (c) 2009 - 2017, Nordic Semiconductor ASA
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form, except as embedded into a Nordic
|
||||
* Semiconductor ASA integrated circuit in a product or a software update for
|
||||
* such product, must reproduce the above copyright notice, this list of
|
||||
* conditions and the following disclaimer in the documentation and/or other
|
||||
* materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of Nordic Semiconductor ASA nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* 4. This software, with or without modification, must only be used with a
|
||||
* Nordic Semiconductor ASA integrated circuit.
|
||||
*
|
||||
* 5. Any software provided in binary form under this license must not be reverse
|
||||
* engineered, decompiled, modified and/or disassembled.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
|
||||
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
/** @file
|
||||
* @addtogroup nrf_dev_radio_rx_example_main nrf_dev_radio_tx_example_main
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include "radio_config.h"
|
||||
#include "nrf_delay.h"
|
||||
|
||||
/* These are set to zero as ShockBurst packets don't have corresponding fields. */
|
||||
#define PACKET_S1_FIELD_SIZE (0UL) /**< Packet S1 field size in bits. */
|
||||
#define PACKET_S0_FIELD_SIZE (0UL) /**< Packet S0 field size in bits. */
|
||||
#define PACKET_LENGTH_FIELD_SIZE (0UL) /**< Packet length field size in bits. */
|
||||
|
||||
/**
|
||||
* @brief Function for swapping/mirroring bits in a byte.
|
||||
*
|
||||
*@verbatim
|
||||
* output_bit_7 = input_bit_0
|
||||
* output_bit_6 = input_bit_1
|
||||
* :
|
||||
* output_bit_0 = input_bit_7
|
||||
*@endverbatim
|
||||
*
|
||||
* @param[in] inp is the input byte to be swapped.
|
||||
*
|
||||
* @return
|
||||
* Returns the swapped/mirrored input byte.
|
||||
*/
|
||||
static uint32_t swap_bits(uint32_t inp);
|
||||
|
||||
/**
|
||||
* @brief Function for swapping bits in a 32 bit word for each byte individually.
|
||||
*
|
||||
* The bits are swapped as follows:
|
||||
* @verbatim
|
||||
* output[31:24] = input[24:31]
|
||||
* output[23:16] = input[16:23]
|
||||
* output[15:8] = input[8:15]
|
||||
* output[7:0] = input[0:7]
|
||||
* @endverbatim
|
||||
* @param[in] input is the input word to be swapped.
|
||||
*
|
||||
* @return
|
||||
* Returns the swapped input byte.
|
||||
*/
|
||||
static uint32_t bytewise_bitswap(uint32_t inp);
|
||||
|
||||
static uint32_t swap_bits(uint32_t inp)
|
||||
{
|
||||
uint32_t i;
|
||||
uint32_t retval = 0;
|
||||
|
||||
inp = (inp & 0x000000FFUL);
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
retval |= ((inp >> i) & 0x01) << (7 - i);
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
static uint32_t bytewise_bitswap(uint32_t inp)
|
||||
{
|
||||
return (swap_bits(inp >> 24) << 24)
|
||||
| (swap_bits(inp >> 16) << 16)
|
||||
| (swap_bits(inp >> 8) << 8)
|
||||
| (swap_bits(inp));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Function for configuring the radio to operate in ShockBurst compatible mode.
|
||||
*
|
||||
* To configure the application running on nRF24L series devices:
|
||||
*
|
||||
* @verbatim
|
||||
* uint8_t tx_address[5] = { 0xC0, 0x01, 0x23, 0x45, 0x67 };
|
||||
* hal_nrf_set_rf_channel(7);
|
||||
* hal_nrf_set_address_width(HAL_NRF_AW_5BYTES);
|
||||
* hal_nrf_set_address(HAL_NRF_TX, tx_address);
|
||||
* hal_nrf_set_address(HAL_NRF_PIPE0, tx_address);
|
||||
* hal_nrf_open_pipe(0, false);
|
||||
* hal_nrf_set_datarate(HAL_NRF_1MBPS);
|
||||
* hal_nrf_set_crc_mode(HAL_NRF_CRC_16BIT);
|
||||
* hal_nrf_setup_dynamic_payload(0xFF);
|
||||
* hal_nrf_enable_dynamic_payload(false);
|
||||
* @endverbatim
|
||||
*
|
||||
* When transmitting packets with hal_nrf_write_tx_payload(const uint8_t *tx_pload, uint8_t length),
|
||||
* match the length with PACKET_STATIC_LENGTH.
|
||||
* hal_nrf_write_tx_payload(payload, PACKET_STATIC_LENGTH);
|
||||
*
|
||||
*/
|
||||
void radio_configure()
|
||||
{
|
||||
// Radio config
|
||||
NRF_RADIO->TXPOWER = (RADIO_TXPOWER_TXPOWER_0dBm << RADIO_TXPOWER_TXPOWER_Pos);
|
||||
NRF_RADIO->FREQUENCY = 7UL; // Frequency bin 7, 2407MHz
|
||||
NRF_RADIO->MODE = (RADIO_MODE_MODE_Nrf_1Mbit << RADIO_MODE_MODE_Pos);
|
||||
|
||||
// Radio address config
|
||||
NRF_RADIO->PREFIX0 =
|
||||
((uint32_t)swap_bits(0xC3) << 24) // Prefix byte of address 3 converted to nRF24L series format
|
||||
| ((uint32_t)swap_bits(0xC2) << 16) // Prefix byte of address 2 converted to nRF24L series format
|
||||
| ((uint32_t)swap_bits(0xC1) << 8) // Prefix byte of address 1 converted to nRF24L series format
|
||||
| ((uint32_t)swap_bits(0xC0) << 0); // Prefix byte of address 0 converted to nRF24L series format
|
||||
|
||||
NRF_RADIO->PREFIX1 =
|
||||
((uint32_t)swap_bits(0xC7) << 24) // Prefix byte of address 7 converted to nRF24L series format
|
||||
| ((uint32_t)swap_bits(0xC6) << 16) // Prefix byte of address 6 converted to nRF24L series format
|
||||
| ((uint32_t)swap_bits(0xC4) << 0); // Prefix byte of address 4 converted to nRF24L series format
|
||||
|
||||
NRF_RADIO->BASE0 = bytewise_bitswap(0x01234567UL); // Base address for prefix 0 converted to nRF24L series format
|
||||
NRF_RADIO->BASE1 = bytewise_bitswap(0x89ABCDEFUL); // Base address for prefix 1-7 converted to nRF24L series format
|
||||
|
||||
NRF_RADIO->TXADDRESS = 0x00UL; // Set device address 0 to use when transmitting
|
||||
NRF_RADIO->RXADDRESSES = 0x01UL; // Enable device address 0 to use to select which addresses to receive
|
||||
|
||||
// Packet configuration
|
||||
NRF_RADIO->PCNF0 = (PACKET_S1_FIELD_SIZE << RADIO_PCNF0_S1LEN_Pos) |
|
||||
(PACKET_S0_FIELD_SIZE << RADIO_PCNF0_S0LEN_Pos) |
|
||||
(PACKET_LENGTH_FIELD_SIZE << RADIO_PCNF0_LFLEN_Pos); //lint !e845 "The right argument to operator '|' is certain to be 0"
|
||||
|
||||
// Packet configuration
|
||||
NRF_RADIO->PCNF1 = (RADIO_PCNF1_WHITEEN_Disabled << RADIO_PCNF1_WHITEEN_Pos) |
|
||||
(RADIO_PCNF1_ENDIAN_Big << RADIO_PCNF1_ENDIAN_Pos) |
|
||||
(PACKET_BASE_ADDRESS_LENGTH << RADIO_PCNF1_BALEN_Pos) |
|
||||
(PACKET_STATIC_LENGTH << RADIO_PCNF1_STATLEN_Pos) |
|
||||
(PACKET_PAYLOAD_MAXSIZE << RADIO_PCNF1_MAXLEN_Pos); //lint !e845 "The right argument to operator '|' is certain to be 0"
|
||||
|
||||
// CRC Config
|
||||
NRF_RADIO->CRCCNF = (RADIO_CRCCNF_LEN_Two << RADIO_CRCCNF_LEN_Pos); // Number of checksum bits
|
||||
if ((NRF_RADIO->CRCCNF & RADIO_CRCCNF_LEN_Msk) == (RADIO_CRCCNF_LEN_Two << RADIO_CRCCNF_LEN_Pos))
|
||||
{
|
||||
NRF_RADIO->CRCINIT = 0xFFFFUL; // Initial value
|
||||
NRF_RADIO->CRCPOLY = 0x11021UL; // CRC poly: x^16 + x^12^x^5 + 1
|
||||
}
|
||||
else if ((NRF_RADIO->CRCCNF & RADIO_CRCCNF_LEN_Msk) == (RADIO_CRCCNF_LEN_One << RADIO_CRCCNF_LEN_Pos))
|
||||
{
|
||||
NRF_RADIO->CRCINIT = 0xFFUL; // Initial value
|
||||
NRF_RADIO->CRCPOLY = 0x107UL; // CRC poly: x^8 + x^2^x^1 + 1
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
@@ -0,0 +1,58 @@
|
||||
/**
|
||||
* Copyright (c) 2009 - 2017, Nordic Semiconductor ASA
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form, except as embedded into a Nordic
|
||||
* Semiconductor ASA integrated circuit in a product or a software update for
|
||||
* such product, must reproduce the above copyright notice, this list of
|
||||
* conditions and the following disclaimer in the documentation and/or other
|
||||
* materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of Nordic Semiconductor ASA nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* 4. This software, with or without modification, must only be used with a
|
||||
* Nordic Semiconductor ASA integrated circuit.
|
||||
*
|
||||
* 5. Any software provided in binary form under this license must not be reverse
|
||||
* engineered, decompiled, modified and/or disassembled.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
|
||||
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
#ifndef RADIO_CONFIG_H
|
||||
#define RADIO_CONFIG_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define PACKET_BASE_ADDRESS_LENGTH (4UL) //!< Packet base address length field size in bytes
|
||||
#define PACKET_STATIC_LENGTH (1UL) //!< Packet static length in bytes
|
||||
#define PACKET_PAYLOAD_MAXSIZE (PACKET_STATIC_LENGTH) //!< Packet payload maximum size in bytes
|
||||
|
||||
void radio_configure(void);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user