找回密码
 立即注册

微信扫码登录

查看: 9|回复: 0

[BLE SDK] bleStack中断和uartDma中断冲突如何解决

[复制链接]

6

主题

5

回帖

78

积分

不屈白银

积分
78
发表于 4 小时前 | 显示全部楼层 |阅读模式 来自 广东深圳
Information
说明:   建议参照本版块置顶帖内容输入必要信息
芯片型号: tc321x
SDK及版本: tc_ble_sdk - v4.0.2.2
本帖最后由 waitReply^-^ 于 2026-2-3 18:22 编辑

请问下

    问题是: ble stack和uart dma同时初始化之后,在irq_handler中,大概率他们的时间冲突,
    现象:  导致在广播和连接的时候,这边串口dma概率收不到数据或者掉数据;或者串口只是初始化且开了中断,ble stack就会广播几秒后就停了;
    1 请问推荐解决办法是咋样的?
    ps:已实测排除了单独dma uart中断开启时,dma uart工作正常不会掉数据或丢包;单独ble stack 初始化时广播连接正常,不会断联;

    2 另外请问下 ble stack运行过程中如何主动关闭或者复位ble stack?然后等需要的时候再重新初始化ble stack;

    3 另外请问下,dma的收发不是硬件行为吗?为什么dma的中断会丢失呢?是因为在闭源的ble stack中清全部中断的时候把dma的中断也清了吗?

_attribute_ram_code_  void irq_uart_upgrade_handler(void){

    if(reg_uart_status1(UART_MODULE_SEL) & FLD_UART_TX_DONE){
        FW_UPDATE_PHY_TxIrqHandler();
        uart_clr_tx_done(UART_MODULE_SEL);
        irq_clr_src();
    }
   
    if(dma_chn_irq_status_get(FLD_DMA_CHN_UART_RX)){
        FW_UPDATE_PHY_RxIrqHandler();
        dma_chn_irq_status_clr(FLD_DMA_CHN_UART_RX);
        irq_clr_src();
    }

    //when stop bit error or parity error.
    if(uart_is_parity_error(UART_MODULE_SEL)){
        uart_clear_parity_error(UART_MODULE_SEL);
        irq_clr_src();
    }
}

_attribute_ram_code_ void irq_handler(void)
{
    //下面这两个中断都开就会有问题,单独开一个就没问题;咋解决呢?
    blc_sdk_irq_handler();
    irq_uart_upgrade_handler();

}


谢谢支持
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Telink forum ( 沪ICP备17008231号-1 |沪公网安备31011502403548号 )

GMT+8, 2026-2-3 22:54 , Processed in 0.089960 second(s), 23 queries .

Powered by Discuz! 隐私政策

泰凌微电子版权所有 © 。保留所有权利。 2024

快速回复 返回顶部 返回列表