15#ifndef __FW_CI24R1_H__
16#define __FW_CI24R1_H__
21#define CI24R1_PLOAD_WIDTH 16
24#define CI24R1_MOSI P34
27#define CI24R1_DATA_OUT() GPIO_P3_SetMode(GPIO_Pin_4, GPIO_Mode_Output_PP)
28#define CI24R1_DATA_IN() GPIO_P3_SetMode(GPIO_Pin_4, GPIO_Mode_Input_HIP)
29#define CI24R1_DATA_LOW() CI24R1_MOSI = 0
30#define CI24R1_DATA_HIGH() CI24R1_MOSI = 1
31#define CI24R1_DATA_READ() CI24R1_MOSI
33#define CI24R1_CLK_LOW() CI24R1_SCK = 0
34#define CI24R1_CLK_HIGH() CI24R1_SCK = 1
36#define CI24R1_NSS_LOW() CI24R1_CSN = 0
37#define CI24R1_NSS_HIGH() CI24R1_CSN = 1
39#define CI24R1_CE_LOW() CI24R1_WriteReg(CI24R1_CMD_CE_OFF, CI24R1_CMD_NOP)
40#define CI24R1_CE_HIGH() CI24R1_WriteReg(CI24R1_CMD_CE_ON, CI24R1_CMD_NOP)
46#define CI24R1_CMD_R_REGISTER 0x00
47#define CI24R1_CMD_W_REGISTER 0x20
48#define CI24R1_CMD_R_RX_PAYLOAD 0x61
49#define CI24R1_CMD_W_TX_PAYLOAD 0xA0
50#define CI24R1_CMD_FLUSH_TX 0xE1
51#define CI24R1_CMD_FLUSH_RX 0xE2
52#define CI24R1_CMD_REUSE_TX_PL 0xE3
53#define CI24R1_CMD_R_RX_PL_WID 0x60
54#define CI24R1_CMD_W_ACK_PAYLOAD 0xA8
55#define CI24R1_CMD_W_TX_PAYLOAD_NOACK 0xB0
56#define CI24R1_CMD_NOP 0xFF
57#define CI24R1_CMD_CE_ON 0x70
58#define CI24R1_CMD_CE_OFF 0x71
59#define CI24R1_CMD_SELSPI 0x74
60#define CI24R1_CMD_SELIRQ 0x75
63#define CI24R1_REG_CONFIG 0x00
64#define CI24R1_REG_EN_AA 0x01
65#define CI24R1_REG_EN_RXADDR 0x02
66#define CI24R1_REG_SETUP_AW 0x03
67#define CI24R1_REG_SETUP_RETR 0x04
68#define CI24R1_REG_RF_CH 0x05
69#define CI24R1_REG_RF_SETUP 0x06
70#define CI24R1_REG_STATUS 0x07
71#define CI24R1_REG_OBSERVE_TX 0x08
72#define CI24R1_REG_RSSI 0x09
73#define CI24R1_REG_RX_ADDR_P0 0x0A
74#define CI24R1_REG_RX_ADDR_P1 0x0B
75#define CI24R1_REG_RX_ADDR_P2 0x0C
76#define CI24R1_REG_RX_ADDR_P3 0x0D
77#define CI24R1_REG_RX_ADDR_P4 0x0E
78#define CI24R1_REG_RX_ADDR_P5AF 0x0F
83#define CI24R1_REG_TX_ADDR 0x10
84#define CI24R1_REG_RX_PW_P0 0x11
85#define CI24R1_REG_RX_PW_P1 0x12
86#define CI24R1_REG_RX_PW_P2 0x13
87#define CI24R1_REG_RX_PW_P3 0x14
88#define CI24R1_REG_RX_PW_P4 0x15
89#define CI24R1_REG_RX_PW_P5 0x16
90#define CI24R1_REG_FIFO_STATUS 0x17
91#define CI24R1_REG_DYNPD 0x1C
92#define CI24R1_REG_FEATURE 0x1D
96#define CI24R1_EN_RXADDR_P5 0x00
97#define CI24R1_EN_RXADDR_CRC 0x01
98#define CI24R1_EN_RXADDR_OSC_C 0x02
99#define CI24R1_EN_RXADDR_BT 0x04
100#define CI24R1_EN_RXADDR_BT_CRC_L 0x06
101#define CI24R1_EN_RXADDR_BT_CRC_M 0x07
102#define CI24R1_EN_RXADDR_BT_CRC_H 0x08
104#define CI24R1_RF_SETUP_11DB 0x07
105#define CI24R1_RF_SETUP_10DB 0x06
106#define CI24R1_RF_SETUP_9DB 0x05
107#define CI24R1_RF_SETUP_7DB 0x04
108#define CI24R1_RF_SETUP_3DB 0x03
109#define CI24R1_RF_SETUP__1DB 0x02
110#define CI24R1_RF_SETUP__4DB 0x01
111#define CI24R1_RF_SETUP__9DB 0x00
113#define CI24R1_RF_SETUP_250K 0x20
114#define CI24R1_RF_SETUP_1M 0x00
115#define CI24R1_RF_SETUP_2M 0x08
118#define CI24R1_FLAG_RX_READY 0x40
119#define CI24R1_FLAG_TX_SENT 0x20
120#define CI24R1_FLAG_MAX_RT 0x10
122#define CI24R1_PLOAD_MAX_WIDTH 32
123#define CI24R1_TEST_ADDR "CI24R"
uint8_t CI24R1_ReadStatus(void)
void CI24R1_WriteFromBuf(uint8_t reg, const uint8_t *pBuf, uint8_t len)
void CI24R1_SetTxAddress(uint8_t *address)
uint8_t CI24R1_ReadReg(uint8_t reg)
void CI24R1_SetChannel(uint8_t channel)
void CI24R1_SetTxMode(void)
void CI24R1_WriteReg(uint8_t reg, uint8_t value)
uint8_t CI24R1_Tx(uint8_t *ucPayload, uint8_t length)
void CI24R1_SetRxAddress(uint8_t *address)
void CI24R1_SetRxMode(void)
void CI24R1_ReadToBuf(uint8_t reg, uint8_t *pBuf, uint8_t len)
uint8_t CI24R1_SPI_Test(void)
uint8_t CI24R1_PrintStatus(void)