CC2541 双串口和蓝牙同时工作的问题
时间:10-02
整理:3721RD
点击:
资源配置:
串口0配置DMA(ch3、4),数据收发频率约10HZ,包大小20~30Bytes。
串口1配置为ISR,数据收发频率2HZ,包大小15~25Bytes。
问题:
1.未连接蓝牙时,串口有小概率丢包(<3%,未细测)。
2.连接蓝牙时,蓝牙数据在20HZ,包大小20~40bytes不等,串口1丢包大概5%,工作1分钟不到,会出现死机的情况。
可能有用的信息:
1.分频已关闭HCI_EXT_ClkDivOnHaltCmd( HCI_EXT_DISABLE_CLK_divIDE_ON_HALT );
2.尝试过修改堆栈,现在的配置和map:
CC2541 INT_HEAP_LEN=2048 HALNODEBUG OSAL_CBTIMER_NUM_TASKS=1 xPOWER_SAVING xPLUS_BROADCASTER HAL_DMA=TRUE HAL_UART=TRUE HAL_UART_TX_BY_ISR=FALSE
试试修改蓝牙连接参数,另外使用一个串口isr和蓝牙工作正常不?
感谢回复,我现在使用的连接间隔是20ms。在10ms的周期任务中写蓝牙特征值。
if ( events & SBP_PERIODIC_EVT ) { // Restart timer if ( SBP_PERIODIC_EVT_PERIOD ) //10ms { osal_start_timerEx( simpleBLEPeripheral_TaskID, SBP_PERIODIC_EVT, SBP_PERIODIC_EVT_PERIOD ); } // Perform periodic application task ... SimpleProfile_SetParameter( SIMPLEPROFILE_CHAR1, BTSend_bytes, &g_ucBTTxBuff[BTSended_offset] ); ... return (events ^ SBP_PERIODIC_EVT); }
单独ISR和蓝牙工作的时候也会死机
貌似找到原因了,是内存操作的BUG,和蓝牙并没有什么关系
请问最后是如何设置的?