CC2540串口通信丢数据和乱码问题
unbelievable! TI的simpleBLEperipheral工程做串口透传时居然出现丢数据和乱码的情况, 这是TI官方透传包啊!
我的硬件是MSP430 + CC2540(UART0), CC2540透传APP下发的数据到MSP430,代码是在simpleBLEperipheral基础上开发的。 CC2540用的USART0 通信, DMA模式, 开流控,波特率115200.
接口用的 :Hal_UART_RxBufLen() 读数据长度, HalUARTRead读串口数据。
在网上查了很多帖子, 都说有2点会影响到串口数据收发:
1. 开启了POWER_SAVING
2. 开启了 HCI_EXT_ClkDivOnHaltCmd( HCI_EXT_ENABLE_CLK_divIDE_ON_HALT );
根据帖子我做了如下修改:
POWER_SAVING 改为 xPOWER_SAVING
关闭 HCI_EXT_ClkDivOnHaltCmd( HCI_EXT_ENABLE_CLK_divIDE_ON_HALT ); 语句
打开HCI_EXT_HaltDuringRfCmd(HCI_EXT_HALT_DURING_RF_DISABLE); 语句
修改后,CC2540串口只能发 不能接受数据了!
麻烦各位大神帮忙解答下 万分感谢!
你用下面这个例子和1.4.1的协议栈去试。都是写好的,不会花你什么时间。发数时加个长度,比如03 01 02 03 这样子。
如果还有问题,再提。
http://processors.wiki.ti.com/index.php/SerialBLEbridge_V_1.4.1
建议帧结构加上帧头、帧尾、校验、长度等。同时使用状态机判断收发情况,增加重发机制