这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 如何得到串口接收到字节的校验位?

共2条 1/1 1 跳转至

如何得到串口接收到字节的校验位?

工程师
2024-09-02 10:53:58     打赏

从机的串口配置为: 9600, 8 , 奇校验,1个停止位
当主机用UART3接收到从机发来的一个字节时,我怎么读到这个字节对应的校验位的值呢?

在MDB协议中,有一个模式位的概念,相当于串口的校验位,从机发送数据时,模式位置0,从机在发最后一个字节时,模式位会置1,说明从机数据发送完毕,
所以我需要能读出来接收到的每一个字节对应校验位是0还是1,来判断数据是否接收完毕




关键词: 串口     字节     校验    

助工
2024-09-02 10:55:44     打赏
2楼

在UART3接收到从机发来的一个字节时,你可以通过读取UART3寄存器来获取这个字节的校验位值。

首先,你需要配置UART3的串口参数,包括波特率、数据位、校验位和停止位。根据你提供的信息,配置UART3的参数为9600波特率,8位数据位,奇校验,1个停止位。

接下来,你可以使用UART3接收中断或轮询的方式来读取接收到的字节和对应的校验位。具体步骤如下:

1. 使能UART3的接收中断或设置为轮询方式。

2. 在中断服务函数中,或者在循环中,通过读取UART3的寄存器来获取接收到的字节和对应的校验位。

   a. 读取UART3的数据寄存器(例如,UART3_DR),获取接收到的字节。

   b. 读取UART3的校验状态寄存器(例如,UART3_SR),获取接收到的字节对应的校验位。其中校验状态寄存器的某些位可能表示接收到字节的校验位的状态,具体根据硬件的实现而定,可能是一个单独的位,也可能是几个位组合。

      例如,如果校验状态寄存器的第0位为1,表示接收到的字节的校验位为1,如果第0位为0,表示接收到的字节的校验位为0。

3. 根据校验位的值来判断数据是否接收完毕。根据你提供的信息,当模式位置1表示从机数据发送完毕,此时可以判断数据接收完毕。

需要注意的是,具体的寄存器名字和位定义根据所使用的硬件平台和微控制器型号可能不同,同时,串口的配置和数据读取也需要根据所使用的开发环境和编程语言进行相应的设置和编写。 


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]