打印

GD32E230F如何实现接受一帧数据并判定帧数据的准确性?

[复制链接]
2145|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
提刀剁骨头|  楼主 | 2021-12-11 16:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
没有找到帧终端的判定标志位,貌似没有这个功能,怎么样实现检测到一帧数据接受完成了呢?

中断函数如下:
void USART0_IRQHandler(void)
{
                uint8_t i;
       
    if (RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE))   //接收中断
    {
        RxBuffer[i++] = (uint8_t)usart_data_receive(USART0);
//                                usart0_send_byte(RxBuffer[i++]);
    }
                else if(RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_TBE))//发送中断
    {
                                usart_interrupt_flag_clear(USART0,USART_INT_FLAG_IDLE);   
    }
}

使用特权

评论回复
沙发
fanwei326| | 2021-12-11 23:05 | 只看该作者
用一个定时器,定时周期几个mS, 串口每收到一个字节就重置定时。这样若发生了定时中断,就表示有几mS没收到数据了,就表示一帧数据接收完成。

使用特权

评论回复
评论
提刀剁骨头 2021-12-17 09:11 回复TA
@fanwei326 :我看GD32E230官方手册里有这个USART_INT_FLAG_IDLE,但是调用时候没反应 
fanwei326 2021-12-15 09:03 回复TA
@提刀剁骨头 :如果有IDLE中断当然更好。但是大多数芯片串口没有IDLE中断。 
提刀剁骨头 2021-12-13 10:19 回复TA
判断IDLE中断是不是不可以?貌似stm32F030可以直接判断idle的帧中断标志位来用 
板凳
aple0807| | 2021-12-15 10:35 | 只看该作者
直接modbus不就解决这个问题了吗?

使用特权

评论回复
地板
fanwei326| | 2021-12-21 09:06 | 只看该作者
aple0807 发表于 2021-12-15 10:35
直接modbus不就解决这个问题了吗?

modbus只是一种通信协议,也需要MCU能判断一帧数据是否完成。

使用特权

评论回复
5
aple0807| | 2021-12-21 10:52 | 只看该作者
fanwei326 发表于 2021-12-21 09:06
modbus只是一种通信协议,也需要MCU能判断一帧数据是否完成。

modbus已经提供了解决方案,ascii模式\r\n,rtu模式3.5T。

使用特权

评论回复
6
chenjinyu| | 2021-12-22 10:32 | 只看该作者
接受一帧数据 空闲中断+DMA
判定帧数据的准确性 自己解析协议

使用特权

评论回复
7
fanwei326| | 2021-12-22 14:41 | 只看该作者
aple0807 发表于 2021-12-21 10:52
modbus已经提供了解决方案,ascii模式\r\n,rtu模式3.5T。

对啊,这里的3.5T就是定时时间,超过3.5T没有新的数据就表示一帧结束,发生定时中断,然后进行数据处理。这种方法适用于没有串口空闲中断的单片机。

使用特权

评论回复
8
tpgf| | 2022-1-6 12:11 | 只看该作者
是什么通讯方式呢

使用特权

评论回复
9
wowu| | 2022-1-6 12:14 | 只看该作者
完全可以自己定义一个协议内容

使用特权

评论回复
10
xiaoqizi| | 2022-1-6 12:15 | 只看该作者
硬件后台就会自己判定吧

使用特权

评论回复
11
木木guainv| | 2022-1-6 12:32 | 只看该作者
需要在哪里进行判断呢

使用特权

评论回复
12
磨砂| | 2022-1-6 12:36 | 只看该作者
可以启用内部的crc校验吗

使用特权

评论回复
13
晓伍| | 2022-1-6 12:38 | 只看该作者
还是需要软件进行判定

使用特权

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

本版积分规则

6

主题

21

帖子

0

粉丝