微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2541 双串口和蓝牙同时工作的问题

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,和蓝牙并没有什么关系

请问最后是如何设置的?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top