STM32学习016_数据帧
扫描二维码
随时随地手机看文章
在作通信工作时,我们常常会遇到“帧”这个概念,我迷惑的地方在于,一帧数据包含N个(1+8bit+1+1 起始位+8位数据+校验位+停止位),还是(1+N*8bit+1+1),今天仔细深究了一下,现将收获说一下,希望对读者有帮助。
首先要弄清楚一些概念:
“1+8bit+1+1”是串行通讯一个字节的格式,属于串行通信中最小数据格式的单位,1个起始位+8个数据位+1个校验位+1个停止位(也有1+8+0+1等等),也就是要收发N个字节,就会有N个(1+8bit+1+1)这样的组合出现在TXD和RXD线路上,而不是1+nbit+1+1或者1+nx8bit+1+1。以上叙述中,
起始位和停止位:用于同步;
校验位:用来保证通讯的正确性;
8个数据位:设备需要的真正的数据;
起始位和停止位都是收发方适配器自身的硬件完成的,校验位需要根据程序处理以及判断以便知道信息是否正确,一般而言,在初始化设置完成后,写程序者只要关注8个数据位和校验位就可以了。
入正题,下面说一下“帧”,
串行通信中,帧一般是需要根据自己的约定而定的,其内容一般由多个8位单字节数据构成的。比如说吗,一个主机要采集外设的传感器信号,(采集电流,电压),这些信息需要10字节,那么你一帧信息至少需要10字节,也就是收发双方都需要计数,计数达到10才说明通讯完成,这是最简单的。大多数应用中,规范的做法是,一帧信息包含帧头标识符,帧长度,信息内容,以及校验信息。
对于多个传感器,应给每一个分配唯一的地址,只有地址相符的传感器才对主端的信息作出回应,地址信息可以包含到通讯协议中,比如:帧头+帧长度+终端地址+信息内容+校验和,如果使用51单片机,可以使用串行通讯方式3。