ATY_LIB V2_102_230218
ATY_LIB for general devices or ALGO
 
Loading...
Searching...
No Matches
xl2400.h File Reference
#include "fw_hal.h"
#include "string.h"

Go to the source code of this file.

Macros

#define XL2400_CSN   P35
 
#define XL2400_SCK   P32
 
#define XL2400_MOSI   P34
 
#define XL2400_PLOAD_WIDTH   32
 
#define XL2400_CMD_R_REGISTER   0x00
 
#define XL2400_CMD_W_REGISTER   0x20
 
#define XL2400_CMD_R_RX_PAYLOAD   0x61
 
#define XL2400_CMD_W_TX_PAYLOAD   0xA0
 
#define XL2400_CMD_FLUSH_TX   0xE1
 
#define XL2400_CMD_FLUSH_RX   0xE2
 
#define XL2400_CMD_REUSE_TX_PL   0xE3
 
#define XL2400_CMD_ACTIVATE   0x50
 
#define XL2400_CMD_DEACTIVATE   0x50
 
#define XL2400_CMD_RST_FSPI   0x53
 
#define XL2400_CMD_R_RX_PL_WID   0x60
 
#define XL2400_CMD_W_ACK_PAYLOAD   0xA8
 
#define XL2400_CMD_W_TX_PAYLOAD_NOACK   0xB0
 
#define XL2400_CMD_NOP   0xFF
 
#define XL2400_REG_CFG_TOP   0x00
 
#define XL2400_REG_EN_AA   0x01
 
#define XL2400_REG_EN_RXADDR   0x02
 
#define XL2400_REG_SETUP_AW   0x03
 
#define XL2400_REG_SETUP_RETR   0x04
 
#define XL2400_REG_RF_CH   0x05
 
#define XL2400_REG_RF_SETUP   0x06
 
#define XL2400_REG_STATUS   0x07
 
#define XL2400_REG_OBSERVE_TX   0x08
 
#define XL2400_REG_RSSI   0x09
 
#define XL2400_REG_RX_ADDR_P0   0x0A
 
#define XL2400_REG_RX_ADDR_P1   0x0B
 
#define XL2400_REG_RX_ADDR_P2_P5   0x0C
 
#define XL2400_REG_BER_RESULT   0x0D
 
#define XL2400_REG_AGC_SETTING   0x0E
 
#define XL2400_REG_PGA_SETTING   0x0F
 
#define XL2400_REG_TX_ADDR   0x10
 
#define XL2400_REG_RX_PW_PX   0x11
 
#define XL2400_REG_ANALOG_CFG0   0x12
 
#define XL2400_REG_ANALOG_CFG1   0x13
 
#define XL2400_REG_ANALOG_CFG2   0x14
 
#define XL2400_REG_ANALOG_CFG3   0x15
 
#define XL2400_REG_FIFO_STATUS   0x17
 
#define XL2400_REG_RSSIREC   0x18
 
#define XL2400_REG_TXPROC_CFG   0x19
 
#define XL2400_REG_RXPROC_CFG   0x1A
 
#define XL2400_REG_DYNPD   0x1C
 
#define XL2400_REG_FEATURE   0x1D
 
#define XL2400_REG_RAMP_CFG   0x1E
 
#define XL2400_PL_WIDTH_MAX   64
 
#define XL2400_RF_10DB   0x3F
 
#define XL2400_RF_9DB   0x38
 
#define XL2400_RF_8DB   0x34
 
#define XL2400_RF_7DB   0x30
 
#define XL2400_RF_6DB   0x2C
 
#define XL2400_RF_5DB   0x28
 
#define XL2400_RF_4DB   0x24
 
#define XL2400_RF_3DB   0x20
 
#define XL2400_RF_2DB   0x14
 
#define XL2400_RF_0DB   0x10
 
#define XL2400_RF__2DB   0x0C
 
#define XL2400_RF__6DB   0x08
 
#define XL2400_RF__12DB   0x04
 
#define XL2400_RF__18DB   0x02
 
#define XL2400_RF__24DB   0x01
 
#define XL2400_RF_DR_1M   0x02
 
#define XL2400_RF_DR_250K   0x22
 
#define RX_DR_FLAG   0X40
 
#define TX_DS_FLAG   0X20
 
#define RX_TX_CMP_FLAG   0X60
 
#define MAX_RT_FLAG   0X10
 
#define XL2400_TEST_ADDR   "XL240"
 

Functions

void XL2400_WriteReg (uint8_t reg, uint8_t value)
 
uint8_t XL2400_ReadReg (uint8_t reg)
 
void XL2400_WriteFromBuf (uint8_t reg, const uint8_t *pBuf, uint8_t len)
 
void XL2400_ReadToBuf (uint8_t reg, uint8_t len)
 
void XL2400_WriteBack (uint8_t reg, uint8_t len)
 
void XL2400_CE_Low (void)
 
void XL2400_CE_High (void)
 
uint8_t XL2400_SPI_Test (void)
 
void XL2400_Init (void)
 
void XL2400_SetChannel (uint8_t channel)
 
void XL2400_SetTxAddress (uint8_t *address)
 
void XL2400_SetRxAddress (uint8_t *address)
 
void XL2400_SetPower (uint8_t power)
 
void XL2400_Sleep (void)
 
void XL2400_WakeUp (void)
 
uint8_t XL2400_RxCalibrate (void)
 
void XL2400_SetTxMode (void)
 
void XL2400_SetRxMode (void)
 
uint8_t XL2400_Tx (uint8_t *ucPayload, uint8_t length)
 
uint8_t XL2400_Rx (void)
 
uint8_t XL2400_ReadStatus (void)
 
void XL2400_ClearStatus (void)
 
void XL2400_FlushRxTX (void)
 
void XL2400_CarrierTest (void)
 
uint8_t XL2400_PrintStatus (void)
 

Macro Definition Documentation

◆ MAX_RT_FLAG

#define MAX_RT_FLAG   0X10

Definition at line 101 of file xl2400.h.

◆ RX_DR_FLAG

#define RX_DR_FLAG   0X40

Definition at line 98 of file xl2400.h.

◆ RX_TX_CMP_FLAG

#define RX_TX_CMP_FLAG   0X60

Definition at line 100 of file xl2400.h.

◆ TX_DS_FLAG

#define TX_DS_FLAG   0X20

Definition at line 99 of file xl2400.h.

◆ XL2400_CMD_ACTIVATE

#define XL2400_CMD_ACTIVATE   0x50

Definition at line 37 of file xl2400.h.

◆ XL2400_CMD_DEACTIVATE

#define XL2400_CMD_DEACTIVATE   0x50

Definition at line 38 of file xl2400.h.

◆ XL2400_CMD_FLUSH_RX

#define XL2400_CMD_FLUSH_RX   0xE2

Definition at line 35 of file xl2400.h.

◆ XL2400_CMD_FLUSH_TX

#define XL2400_CMD_FLUSH_TX   0xE1

Definition at line 34 of file xl2400.h.

◆ XL2400_CMD_NOP

#define XL2400_CMD_NOP   0xFF

Definition at line 43 of file xl2400.h.

◆ XL2400_CMD_R_REGISTER

#define XL2400_CMD_R_REGISTER   0x00

REGISTER TABLE

Definition at line 30 of file xl2400.h.

◆ XL2400_CMD_R_RX_PAYLOAD

#define XL2400_CMD_R_RX_PAYLOAD   0x61

Definition at line 32 of file xl2400.h.

◆ XL2400_CMD_R_RX_PL_WID

#define XL2400_CMD_R_RX_PL_WID   0x60

Definition at line 40 of file xl2400.h.

◆ XL2400_CMD_REUSE_TX_PL

#define XL2400_CMD_REUSE_TX_PL   0xE3

Definition at line 36 of file xl2400.h.

◆ XL2400_CMD_RST_FSPI

#define XL2400_CMD_RST_FSPI   0x53

Definition at line 39 of file xl2400.h.

◆ XL2400_CMD_W_ACK_PAYLOAD

#define XL2400_CMD_W_ACK_PAYLOAD   0xA8

Definition at line 41 of file xl2400.h.

◆ XL2400_CMD_W_REGISTER

#define XL2400_CMD_W_REGISTER   0x20

Definition at line 31 of file xl2400.h.

◆ XL2400_CMD_W_TX_PAYLOAD

#define XL2400_CMD_W_TX_PAYLOAD   0xA0

Definition at line 33 of file xl2400.h.

◆ XL2400_CMD_W_TX_PAYLOAD_NOACK

#define XL2400_CMD_W_TX_PAYLOAD_NOACK   0xB0

Definition at line 42 of file xl2400.h.

◆ XL2400_CSN

#define XL2400_CSN   P35

Definition at line 21 of file xl2400.h.

◆ XL2400_MOSI

#define XL2400_MOSI   P34

Definition at line 23 of file xl2400.h.

◆ XL2400_PL_WIDTH_MAX

#define XL2400_PL_WIDTH_MAX   64

Definition at line 79 of file xl2400.h.

◆ XL2400_PLOAD_WIDTH

#define XL2400_PLOAD_WIDTH   32

Definition at line 25 of file xl2400.h.

◆ XL2400_REG_AGC_SETTING

#define XL2400_REG_AGC_SETTING   0x0E

Definition at line 60 of file xl2400.h.

◆ XL2400_REG_ANALOG_CFG0

#define XL2400_REG_ANALOG_CFG0   0x12

Definition at line 64 of file xl2400.h.

◆ XL2400_REG_ANALOG_CFG1

#define XL2400_REG_ANALOG_CFG1   0x13

Definition at line 65 of file xl2400.h.

◆ XL2400_REG_ANALOG_CFG2

#define XL2400_REG_ANALOG_CFG2   0x14

Definition at line 66 of file xl2400.h.

◆ XL2400_REG_ANALOG_CFG3

#define XL2400_REG_ANALOG_CFG3   0x15

Definition at line 67 of file xl2400.h.

◆ XL2400_REG_BER_RESULT

#define XL2400_REG_BER_RESULT   0x0D

Definition at line 59 of file xl2400.h.

◆ XL2400_REG_CFG_TOP

#define XL2400_REG_CFG_TOP   0x00

Definition at line 46 of file xl2400.h.

◆ XL2400_REG_DYNPD

#define XL2400_REG_DYNPD   0x1C

Definition at line 72 of file xl2400.h.

◆ XL2400_REG_EN_AA

#define XL2400_REG_EN_AA   0x01

Definition at line 47 of file xl2400.h.

◆ XL2400_REG_EN_RXADDR

#define XL2400_REG_EN_RXADDR   0x02

Definition at line 48 of file xl2400.h.

◆ XL2400_REG_FEATURE

#define XL2400_REG_FEATURE   0x1D

Definition at line 73 of file xl2400.h.

◆ XL2400_REG_FIFO_STATUS

#define XL2400_REG_FIFO_STATUS   0x17

Definition at line 68 of file xl2400.h.

◆ XL2400_REG_OBSERVE_TX

#define XL2400_REG_OBSERVE_TX   0x08

Definition at line 54 of file xl2400.h.

◆ XL2400_REG_PGA_SETTING

#define XL2400_REG_PGA_SETTING   0x0F

Definition at line 61 of file xl2400.h.

◆ XL2400_REG_RAMP_CFG

#define XL2400_REG_RAMP_CFG   0x1E

Definition at line 74 of file xl2400.h.

◆ XL2400_REG_RF_CH

#define XL2400_REG_RF_CH   0x05

Definition at line 51 of file xl2400.h.

◆ XL2400_REG_RF_SETUP

#define XL2400_REG_RF_SETUP   0x06

Definition at line 52 of file xl2400.h.

◆ XL2400_REG_RSSI

#define XL2400_REG_RSSI   0x09

Definition at line 55 of file xl2400.h.

◆ XL2400_REG_RSSIREC

#define XL2400_REG_RSSIREC   0x18

Definition at line 69 of file xl2400.h.

◆ XL2400_REG_RX_ADDR_P0

#define XL2400_REG_RX_ADDR_P0   0x0A

Definition at line 56 of file xl2400.h.

◆ XL2400_REG_RX_ADDR_P1

#define XL2400_REG_RX_ADDR_P1   0x0B

Definition at line 57 of file xl2400.h.

◆ XL2400_REG_RX_ADDR_P2_P5

#define XL2400_REG_RX_ADDR_P2_P5   0x0C

Definition at line 58 of file xl2400.h.

◆ XL2400_REG_RX_PW_PX

#define XL2400_REG_RX_PW_PX   0x11

Definition at line 63 of file xl2400.h.

◆ XL2400_REG_RXPROC_CFG

#define XL2400_REG_RXPROC_CFG   0x1A

Definition at line 71 of file xl2400.h.

◆ XL2400_REG_SETUP_AW

#define XL2400_REG_SETUP_AW   0x03

Definition at line 49 of file xl2400.h.

◆ XL2400_REG_SETUP_RETR

#define XL2400_REG_SETUP_RETR   0x04

Definition at line 50 of file xl2400.h.

◆ XL2400_REG_STATUS

#define XL2400_REG_STATUS   0x07

Definition at line 53 of file xl2400.h.

◆ XL2400_REG_TX_ADDR

#define XL2400_REG_TX_ADDR   0x10

Definition at line 62 of file xl2400.h.

◆ XL2400_REG_TXPROC_CFG

#define XL2400_REG_TXPROC_CFG   0x19

Definition at line 70 of file xl2400.h.

◆ XL2400_RF_0DB

#define XL2400_RF_0DB   0x10

Definition at line 89 of file xl2400.h.

◆ XL2400_RF_10DB

#define XL2400_RF_10DB   0x3F

Definition at line 80 of file xl2400.h.

◆ XL2400_RF_2DB

#define XL2400_RF_2DB   0x14

Definition at line 88 of file xl2400.h.

◆ XL2400_RF_3DB

#define XL2400_RF_3DB   0x20

Definition at line 87 of file xl2400.h.

◆ XL2400_RF_4DB

#define XL2400_RF_4DB   0x24

Definition at line 86 of file xl2400.h.

◆ XL2400_RF_5DB

#define XL2400_RF_5DB   0x28

Definition at line 85 of file xl2400.h.

◆ XL2400_RF_6DB

#define XL2400_RF_6DB   0x2C

Definition at line 84 of file xl2400.h.

◆ XL2400_RF_7DB

#define XL2400_RF_7DB   0x30

Definition at line 83 of file xl2400.h.

◆ XL2400_RF_8DB

#define XL2400_RF_8DB   0x34

Definition at line 82 of file xl2400.h.

◆ XL2400_RF_9DB

#define XL2400_RF_9DB   0x38

Definition at line 81 of file xl2400.h.

◆ XL2400_RF__12DB

#define XL2400_RF__12DB   0x04

Definition at line 92 of file xl2400.h.

◆ XL2400_RF__18DB

#define XL2400_RF__18DB   0x02

Definition at line 93 of file xl2400.h.

◆ XL2400_RF__24DB

#define XL2400_RF__24DB   0x01

Definition at line 94 of file xl2400.h.

◆ XL2400_RF__2DB

#define XL2400_RF__2DB   0x0C

Definition at line 90 of file xl2400.h.

◆ XL2400_RF__6DB

#define XL2400_RF__6DB   0x08

Definition at line 91 of file xl2400.h.

◆ XL2400_RF_DR_1M

#define XL2400_RF_DR_1M   0x02

Definition at line 95 of file xl2400.h.

◆ XL2400_RF_DR_250K

#define XL2400_RF_DR_250K   0x22

Definition at line 96 of file xl2400.h.

◆ XL2400_SCK

#define XL2400_SCK   P32

Definition at line 22 of file xl2400.h.

◆ XL2400_TEST_ADDR

#define XL2400_TEST_ADDR   "XL240"

Definition at line 103 of file xl2400.h.

Function Documentation

◆ XL2400_CarrierTest()

void XL2400_CarrierTest ( void  )

Definition at line 343 of file xl2400.c.

344{
347 *(xbuf + 12) |= 0x40;
348 *(xbuf + 4) &= ~0x04;
351 *(xbuf + 0) = 0x01;
352 *(xbuf + 1) = 0x00;
355}
void XL2400_WriteReg(uint8_t reg, uint8_t value)
Definition: xl2400.c:72
void XL2400_WriteFromBuf(uint8_t reg, const uint8_t *pBuf, uint8_t len)
Definition: xl2400.c:90
void XL2400_CE_Low(void)
Definition: xl2400.c:114
void XL2400_ReadToBuf(uint8_t reg, uint8_t *pBuf, uint8_t len)
Definition: xl2400.c:102
__IDATA uint8_t xbuf[XL2400_PL_WIDTH_MAX+1]
Definition: xl2400.c:17
void XL2400_ClearStatus(void)
Definition: xl2400.c:330
#define XL2400_REG_TXPROC_CFG
Definition: xl2400.h:83
#define XL2400_REG_ANALOG_CFG0
Definition: xl2400.h:77
#define XL2400_CMD_R_REGISTER
Definition: xl2400.h:43
#define XL2400_CMD_W_REGISTER
Definition: xl2400.h:44
#define XL2400_REG_RF_SETUP
Definition: xl2400.h:65

◆ XL2400_CE_High()

void XL2400_CE_High ( void  )

Definition at line 121 of file xl2400.c.

122{
124 *(cbuf + 1) |= 0x40;
126}
__IDATA uint8_t cbuf[2]
Definition: xl2400.c:17
#define XL2400_REG_CFG_TOP
Definition: xl2400.h:59

◆ XL2400_CE_Low()

void XL2400_CE_Low ( void  )

Definition at line 114 of file xl2400.c.

◆ XL2400_ClearStatus()

void XL2400_ClearStatus ( void  )

Definition at line 330 of file xl2400.c.

331{
335}
#define XL2400_CMD_FLUSH_TX
Definition: xl2400.h:47
#define XL2400_CMD_FLUSH_RX
Definition: xl2400.h:48
#define XL2400_CMD_NOP
Definition: xl2400.h:56
#define XL2400_REG_STATUS
Definition: xl2400.h:66

◆ XL2400_FlushRxTX()

void XL2400_FlushRxTX ( void  )

◆ XL2400_Init()

void XL2400_Init ( void  )

Definition at line 141 of file xl2400.c.

142{
143 // Analog config
145 *(xbuf + 4) &= ~0x04;
146 *(xbuf + 12) |= 0x40;
148 // Switch to software CE control, wake up RF
150 // Enable Auto ACK Pipe 0
152 // Enable Pipe 0
154 // Address Width, 5 bytes
156 // Retries and interval
158 // RF Data Rate 1Mbps
160 // Number of bytes in RX payload, pipe 0 and pipe 1
161 *(cbuf + 0) = XL2400_PLOAD_WIDTH;
162 *(cbuf + 1) = XL2400_PLOAD_WIDTH;
164 // Dynamic payload width: off
166 // Other features
167 //bit7&6=00 return status when send register address
168 //bit5=0 long data pack off
169 //bit4=1 FEC off
170 //bit3=1 FEATURE on
171 //bit2=0 Dynamic length off
172 //bit1=0 ACK without payload
173 //bit0=0 W_TX_PAYLOAD_NOACK off
175 // Enable RSSI
176 *(cbuf + 0) = 0x10;
177 *(cbuf + 1) = 0x00;
179}
void XL2400_WakeUp(void)
Definition: xl2400.c:226
#define XL2400_REG_EN_RXADDR
Definition: xl2400.h:61
#define XL2400_REG_DYNPD
Definition: xl2400.h:85
#define XL2400_REG_FEATURE
Definition: xl2400.h:86
#define XL2400_PLOAD_WIDTH
Definition: xl2400.h:25
#define XL2400_REG_RSSI
Definition: xl2400.h:68
#define XL2400_REG_SETUP_RETR
Definition: xl2400.h:63
#define XL2400_REG_SETUP_AW
Definition: xl2400.h:62
#define XL2400_REG_EN_AA
Definition: xl2400.h:60
#define XL2400_REG_RX_PW_PX
Definition: xl2400.h:76

◆ XL2400_PrintStatus()

uint8_t XL2400_PrintStatus ( void  )

Definition at line 357 of file xl2400.c.

358{
359 uint8_t i, status;
360
361 UART1_TxString("Bytes from low to high: 0,1,2,3,...\r\n[Config]");
363 for (i = 0; i < 3; i++) {
364 UART1_TxHex(*(xbuf + i));
365 }
366
367 UART1_TxString(" [EN_AA]");
369
370 UART1_TxString(" [EN_RxAddr]");
372
373 UART1_TxString(" [AddrWidth]");
375
376 UART1_TxString(" [Retry]");
378 for (i = 0; i < 4; i++) {
379 UART1_TxHex(*(xbuf + i));
380 }
381
382 UART1_TxString("\r\n[RF_Channel]");
384 for (i = 0; i < 3; i++) {
385 UART1_TxHex(*(xbuf + i));
386 }
387
388 UART1_TxString(" [RF_Setup]");
390 for (i = 0; i < 2; i++) {
391 UART1_TxHex(*(xbuf + i));
392 }
393
394 UART1_TxString(" [Observe_Tx]");
396 for (i = 0; i < 4; i++) {
397 UART1_TxHex(*(xbuf + i));
398 }
399
400 UART1_TxString(" [RSSI]");
402 for (i = 0; i < 2; i++) {
403 UART1_TxHex(*(xbuf + i));
404 }
405
406 UART1_TxString("\r\n[TxAddr] ");
408 for (i = 0; i < 5; i++) {
409 UART1_TxHex(*(xbuf + i));
410 }
411
412 UART1_TxString("\r\n[RxAddrP0]");
414 for (i = 0; i < 5; i++) {
415 UART1_TxHex(*(xbuf + i));
416 }
417 UART1_TxString(" [RxAddrP1]");
419 for (i = 0; i < 5; i++) {
420 UART1_TxHex(*(xbuf + i));
421 }
422 UART1_TxString(" [RxAddrP2-P5]");
424 for (i = 0; i < 4; i++) {
425 UART1_TxHex(*(xbuf + i));
426 }
427
428 UART1_TxString("\r\n[RxPloadWidth_P0-P5]");
430 for (i = 0; i < 6; i++) {
431 UART1_TxHex(*(xbuf + i));
432 }
433
434 UART1_TxString("\r\n[FIFO_Status]");
436 for (i = 0; i < 3; i++) {
437 UART1_TxHex(*(xbuf + i));
438 }
439 UART1_TxString(" [DynPloadWidth]");
441 UART1_TxString(" [Feature]");
443
444 status = XL2400_ReadStatus();
445 UART1_TxString("\r\n[Status]");
446 UART1_TxHex(status);
447 UART1_TxString("\r\n\r\n");
448 return status;
449}
unsigned char uint8_t
Definition: fw_types.h:18
void UART1_TxString(uint8_t *str)
Definition: fw_uart.c:85
void UART1_TxHex(uint8_t hex)
Definition: fw_uart.c:79
uint8_t XL2400_ReadStatus(void)
Definition: xl2400.c:325
uint8_t XL2400_ReadReg(uint8_t reg)
Definition: xl2400.c:80
#define XL2400_REG_RF_CH
Definition: xl2400.h:64
#define XL2400_REG_RX_ADDR_P0
Definition: xl2400.h:69
#define XL2400_REG_OBSERVE_TX
Definition: xl2400.h:67
#define XL2400_REG_FIFO_STATUS
Definition: xl2400.h:81
#define XL2400_REG_RX_ADDR_P1
Definition: xl2400.h:70
#define XL2400_REG_RX_ADDR_P2_P5
Definition: xl2400.h:71
#define XL2400_REG_TX_ADDR
Definition: xl2400.h:75
uint8_t __XDATA i

◆ XL2400_ReadReg()

uint8_t XL2400_ReadReg ( uint8_t  reg)

Definition at line 80 of file xl2400.c.

81{
82 uint8_t reg_val;
85 reg_val = XL2400_ReadByte();
87 return reg_val;
88}
void XL2400_WriteByte(uint8_t value)
Definition: xl2400.c:23
uint8_t XL2400_ReadByte(void)
Definition: xl2400.c:48
#define XL2400_NSS_LOW()
Definition: xl2400.h:36
#define XL2400_NSS_HIGH()
Definition: xl2400.h:37

◆ XL2400_ReadStatus()

uint8_t XL2400_ReadStatus ( void  )

Definition at line 325 of file xl2400.c.

◆ XL2400_ReadToBuf()

void XL2400_ReadToBuf ( uint8_t  reg,
uint8_t  len 
)

Definition at line 48 of file xl2400.c.

49{
50 XL2400_CSN = 0;
52 xbuf[0] = reg;
53 SPI_TxRxBytes(xbuf, len + 1);
54 XL2400_CSN = 1;
55}
void SPI_TxRxBytes(uint8_t *pBuf, uint8_t len)
Definition: fw_spi.c:28
#define XL2400_CSN
Definition: xl2400.h:21
#define XL2400_PL_WIDTH_MAX
Definition: xl2400.h:92

◆ XL2400_Rx()

uint8_t XL2400_Rx ( void  )

Definition at line 306 of file xl2400.c.

307{
308 uint8_t i, status, rxplWidth;
309 status = XL2400_ReadStatus();
310 if (status & RX_DR_FLAG)
311 {
316 // UART1_TxChar('>');
317 // for (i = 0; i < rxplWidth; i++)
318 // {
319 // UART1_TxHex(*(xbuf + i));
320 // }
321 }
322 return status;
323}
#define XL2400_CMD_R_RX_PAYLOAD
Definition: xl2400.h:45
#define RX_DR_FLAG
Definition: xl2400.h:111
#define XL2400_CMD_R_RX_PL_WID
Definition: xl2400.h:53

◆ XL2400_RxCalibrate()

uint8_t XL2400_RxCalibrate ( void  )

Definition at line 236 of file xl2400.c.

237{
238 uint8_t i, j;
239 for (i = 0; i < 10; i++)
240 {
241 SYS_Delay(2);
243 *(cbuf + 1) |= 0x90;
244 *(cbuf + 1) &= ~0x20;
246 *(cbuf + 1) |= 0x40;
248 SYS_Delay(1);
250
251 if (*(cbuf + 1) & 0x20)
252 {
253 j = *(cbuf + 1) << 3;
255 *(cbuf + 1) &= 0x8F;
256 *(cbuf + 1) |= 0x20;
257 *(cbuf + 0) &= 0x07;
258 *(cbuf + 0) |= j;
260 return HAL_OK;
261 }
262 }
263 return HAL_ERROR;
264}
void SYS_Delay(uint16_t t)
Definition: fw_sys.c:65
@ HAL_ERROR
Definition: fw_types.h:77
@ HAL_OK
Definition: fw_types.h:76
#define XL2400_REG_ANALOG_CFG3
Definition: xl2400.h:80

◆ XL2400_SetChannel()

void XL2400_SetChannel ( uint8_t  channel)

Definition at line 181 of file xl2400.c.

182{
183 if (channel > 80) channel = 80;
184 // AFC reset
186 // AFC on
188 // Frequency(MHz) 2400:0x960 -> 2480:0x9B0
189 *(cbuf + 0) = 0x60 + channel;
190 *(cbuf + 1) = 0x09;
192 // AFC Locked
193 *(cbuf + 1) |= 0x20;
195}

◆ XL2400_SetPower()

void XL2400_SetPower ( uint8_t  power)

Definition at line 208 of file xl2400.c.

◆ XL2400_SetRxAddress()

void XL2400_SetRxAddress ( uint8_t address)

Definition at line 203 of file xl2400.c.

◆ XL2400_SetRxMode()

void XL2400_SetRxMode ( void  )

Definition at line 275 of file xl2400.c.

276{
280 // XL2400_RxCalibrate();
282 SYS_Delay(1);
283}
void XL2400_CE_High(void)
Definition: xl2400.c:121

◆ XL2400_SetTxAddress()

void XL2400_SetTxAddress ( uint8_t address)

Definition at line 197 of file xl2400.c.

◆ XL2400_SetTxMode()

void XL2400_SetTxMode ( void  )

Definition at line 266 of file xl2400.c.

267{
272 SYS_Delay(2);
273}
uint8_t XL2400_RxCalibrate(void)
Definition: xl2400.c:236

◆ XL2400_Sleep()

void XL2400_Sleep ( void  )

Definition at line 215 of file xl2400.c.

216{
219
220 *(xbuf + 0) = 0x7C;
221 *(xbuf + 1) = 0x82;
222 *(xbuf + 2) = 0x03;
224}

◆ XL2400_SPI_Test()

uint8_t XL2400_SPI_Test ( void  )

Definition at line 128 of file xl2400.c.

129{
130 uint8_t i;
131 const uint8_t *ptr = (const uint8_t *)XL2400_TEST_ADDR;
134 for (i = 0; i < 5; i++) {
135 UART1_TxHex(*(xbuf + i));
136 if (*(xbuf + i) != *ptr++) return HAL_ERROR;
137 }
138 return HAL_OK;
139}
#define XL2400_TEST_ADDR
Definition: xl2400.h:116

◆ XL2400_Tx()

uint8_t XL2400_Tx ( uint8_t ucPayload,
uint8_t  length 
)

Definition at line 285 of file xl2400.c.

286{
287 uint8_t y = 100, status = 0;
291 // Retry until timeout
292 while (y--)
293 {
294 SYS_DelayUs(100);
295 status = XL2400_ReadStatus();
296 // If TX successful or retry timeout, exit
297 if ((status & (MAX_RT_FLAG | TX_DS_FLAG)) != 0)
298 {
299 break;
300 }
301 }
303 return status;
304}
void SYS_DelayUs(uint16_t t)
Definition: fw_sys.c:75
#define MAX_RT_FLAG
Definition: xl2400.h:114
#define TX_DS_FLAG
Definition: xl2400.h:112
#define XL2400_CMD_W_TX_PAYLOAD
Definition: xl2400.h:46
volatile int16_t y
Definition: main.c:34

◆ XL2400_WakeUp()

void XL2400_WakeUp ( void  )

Definition at line 226 of file xl2400.c.

227{
228 *(xbuf + 0) = 0x7E;
229 *(xbuf + 1) = 0x82;
230 *(xbuf + 2) = 0x0B;
234}

◆ XL2400_WriteBack()

void XL2400_WriteBack ( uint8_t  reg,
uint8_t  len 
)

Definition at line 57 of file xl2400.c.

58{
59 XL2400_CSN = 0;
60 xbuf[0] = reg;
61 SPI_TxRxBytes(xbuf, len + 1);
62 XL2400_CSN = 1;
63}

◆ XL2400_WriteFromBuf()

void XL2400_WriteFromBuf ( uint8_t  reg,
const uint8_t pBuf,
uint8_t  len 
)

Definition at line 90 of file xl2400.c.

91{
92 uint8_t ctr;
95 for (ctr = 0; ctr < len; ctr++)
96 {
97 XL2400_WriteByte(*pBuf++);
98 }
100}

◆ XL2400_WriteReg()

void XL2400_WriteReg ( uint8_t  reg,
uint8_t  value 
)

Definition at line 72 of file xl2400.c.