各位TI老师:
我现在有7个CC1310发射模块在435Mhz不停发送数据,每次发射间隔2秒左右,用一块CC1310Launchpad做接收,先用SmartRF studio接收,报文没有问题,发射序号为3、6、5、4、9、2、1

但是用rfEasylinkRx例程做接收,每接收一帧做一下缓存,调试结果如下,明显序号有丢失现象

请问这是什么原因造成的啊
Viki Shi:
This example shows how to use the EasyLink API to access the RF drive, set the frequency and receive packets. The board will blink LED2 when a packet has been received. When a second board is running rfEasyLinkTx example then the expected behavior is that Board_PIN_LED2 will blink every 100 ms 10 times, the TX will then wait for 300 ms before transmitting the next packets and if RFEASYLINKRX_ASYNC is defined (as it is by default) then this will cause the rfEasyLinkRx example to timeout and exercise the EasyLink_abort API. When an RX has been aborted Board_PIN_LED1 should toggle. The rfEasyLinkTx board will then transmit another burst of packets and Board_PIN_LED2 should blink another 10 times and the cycle should repeat.
看一下是不是rfEasyLinkRx 超时导致的丢包
user5806587:
回复 Viki Shi:
rfEasyLinkRx 超时是不是300ms太小了?
怎么看出来呢EasyLink_receiveAsync(rxDoneCb, 0);
/* Wait 300ms for Rx */ if(Semaphore_pend(rxDoneSem, (300000 / Clock_tickPeriod)) == FALSE) { /* RX timed out abort */ if(EasyLink_abort() == EasyLink_Status_Success) { /* Wait for the abort */ Semaphore_pend(rxDoneSem, BIOS_WAIT_FOREVER); } }
Viki Shi:
回复 user5806587:
时间改大一点测一下
user5806587:
回复 Viki Shi:
改成 if(Semaphore_pend(rxDoneSem, (2000000 / Clock_tickPeriod)) == FALSE)
或直接 Semaphore_pend(rxDoneSem, BIOS_WAIT_FOREVER)都不行
Alvin Chen:
回复 user5806587:
你直接把下面的注释掉编程堵塞接收看看,因为Smartf RF TX时定期发送。
/* Undefine to remove async mode */
#define RFEASYLINKRX_ASYNC
Viki Shi:
回复 user5806587:
改大还是丢包吗?提供一个类似帖子,可能有帮助:e2echina.ti.com/…/122614
user5806587:
回复 Viki Shi:
Viki Shi 老师,我觉得这个肯定和硬件没问题,因为我用的是CC1310Launchpad做接收,用SmartRF studio是没问题的
但是改为用rfEasylinkRx例程就丢帧,这是不是rfEasylinkRx里有那些设置不一样啊
想不明白了
user5806587:
回复 Alvin Chen:
@Alvin Chen,注释掉也不行
Alvin Chen:
回复 user5806587:
你把你的模块烧录成rfEasylinkTx 然后LP烧录为rfEasylinkRx这样对测比较有意义,你去试试,
TI中文支持网
