打印

GD32F130的串口的硬件BUG

[复制链接]
5917|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lulipro|  楼主 | 2021-9-30 20:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lulipro 于 2021-9-30 20:23 编辑

单片机:GD32F130C8T6
串口:USART0
BUG现象:经过测试发现,初始化串口阶段,使能串口(UEN=1)后的一段时间里,IDLEF和RTF会突变为1,注意并不是UEN=1后就立马突变为1了,而是经过一段时间后才变为1,所以建议在初始化阶段,使能串口后,延时5ms左右再清除IDLEF和RTF标志,然后再打开他们对应的中断,避免上电就触发IDLEF和RTF中断

最近一个项目在使用GD32F130C8T6,用USART0的DMA方式接收串口数据,为了实现DMA接收不定长数据,于是打算使用空闲检测中断或者接收超时检测中断去做,但是发现初始化USART0后,在还没有进行串口数据传输活动的情况下,空闲检测标志IDLEF和接收超时标志RTF会突变为1,觉得非常不合理,手册上也没有提及这个问题,个人认为这是一个BUG。
另外一个网友也提及过这个问题:https://bbs.21ic.com/icview-3071032-1-1.html?_dsign=13d824d5

下面是验证代码:如果注释掉软件延时代码,则LED不会量,如果开启软件延时代码,则LED点亮
void USART0_config(void)
{
        uint32_t i,j;

        usart_deinit(USART0);  
        usart_baudrate_set(USART0,19200);      
        usart_parity_config(USART0,USART_PM_NONE);
        usart_word_length_set(USART0,USART_WL_8BIT);
        usart_stop_bit_set(USART0,USART_STB_1BIT);
        usart_oversample_config(USART0,USART_OVSMOD_16);
        usart_sample_bit_config(USART0,USART_OSB_3BIT);
        usart_overrun_disable(USART0);
        usart_receiver_timeout_enable(USART0);  //使能接收超时检测,只有USART0支持接收超时检测,USART1不支持
        usart_receiver_timeout_threshold_config(USART0,25);  //设置超时阈值
        usart_transmit_config(USART0,USART_TRANSMIT_ENABLE);  //使能发送器(TEN)
        usart_receive_config(USART0,USART_RECEIVE_ENABLE);    //使能接收器(REN)
        usart_enable(USART0);                                 //使能usart(UEN=1)
        //==============处理RTF和IDLEF标志的BUG===============
        //延时5ms
        i=5;
        while(i--){
        j = 9200;
        while(j--);
    }
        if(usart_flag_get(USART0,USART_FLAG_RT) && usart_flag_get(USART0,USART_FLAG_IDLE))
    led_on();
        usart_flag_clear(USART0,USART_FLAG_RT);        //清除RT标志
        usart_flag_clear(USART0,USART_FLAG_IDLE);      //清除IDLE标志
        usart_interrupt_enable(USART0,USART_INT_RT);   //使能接收超时中断
        usart_interrupt_enable(USART0,USART_INT_IDLE); //总线空闲中断
}






使用特权

评论回复
沙发
lulipro|  楼主 | 2021-10-1 20:52 | 只看该作者
别有用心的人在那里发垃圾帖子,正儿八经技术交流贴别压下去了,没人管吗

使用特权

评论回复
板凳
autodash| | 2021-10-4 12:13 | 只看该作者
好贴 mark

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

19

帖子

0

粉丝