TI的工程师,高手们,您好!
用CC254X做一项目,用到UART1,不开流控,波特率9600,开DMA,程序是基于simpleBLEPeripheral的工程,
1、正常情况下串口接收数据经常出错,比如一次接收40个字符就会错好几个。但也不是每次都错,如果在串口回调函数中(在读数据前)插入一个长延时比如200mS错码率会下降好多,但还会错而且加长延时后Peripheral好像会工作不正常,连接不上或经常断线。
2、如果把BLE的事件关掉串口收发就很稳定。
3、因为现在是调试阶段,所以不关心功耗把POWER_SAVING关掉了,将来做底功耗时我想开流控,但不知道因该怎么做.是不是CTS\RTS要程序控制,怎能保证在对方串口发数据给我的时候CC2540不是在IDLE状态,或是工作在其它不能接收口串口数据的频率状态下呢?是不是还有什么自动调频的程序?
程序中的一些配置如下,
下面是关闭BLE后串口能稳定接收
#if 0
SimpleBLEPeripheral_ProcessEvent, // task 11
#endif
#if 0
SimpleBLEPeripheral_Init( taskID++ );
#endif
工程中的宏配置如下
INT_HEAP_LEN=3072
HALNODEBUG
OSAL_CBTIMER_NUM_TASKS=1
HAL_AES_DMA=TRUE
HAL_DMA=TRUE
xPOWER_SAVING
xPLUS_BROADCASTER
HAL_LCD=FALSE
HAL_LED=TRUE
xCC2540_MINIDK
HAL_UART=TRUE
HAL_UART_TRANS=TRUE
HAL_UART_DMA
串口接收我是单独开一个事件,当串口回调函数有数据时触发一个事件,在事件处理中再去查询串口收到数据大小并读出来,如果未接收完所要的数据长度就退出事件等待下次串口回调函数触发。
不知道我描述清楚了没有,如果还需要其它信息麻请跟帖
谢谢!
Yan:
hi ��� ���11 ,
TI下个月会发布新的BLE协议栈, 届时会更新UART的驱动, 性能会有提高.
建议等待一下新的协议栈发布.
���11:
回复 Yan:
谢谢YAN
我现在用的是1.3.2的版本,期待下个月的新版协议栈能解决我的问题,我还有一个月半的时间调试程序,希望能等得到。
谢谢
zeke zang:
回复 Yan:
hi yan
新的协议栈是指1.4的版本吗,还是其他版本,,有相应的连接吗
Yan:
回复 zeke zang:
Hi zeke,
1.4版本的协议栈: http://www.ti.com/tool/ble-stack?DCMP=wbu-blestack&HQS=blestack
hua zhang6:
回复 Yan:
1.4和协议栈同样存在9600 波特率误码率高的问题
cedar_xuesong:
回复 hua zhang6:
1.4版本协议,9600,115200压力测试没问题
建议检查一下硬件的问题,比如线材质量,波形信号,晶振