前言

通信格式和数据格式这两个东西以前没有注意过,在使用单片机串口的时候也没有思考过这个方面,认为配置好了就行了。在这里区分一下通信格式和数据格式。
这篇文章在学习过程中作为总结,如有错误,请多指教。

通信格式

通信格式就是通信的方式,在串行异步通信中,具体通信格式就是怎么发送一个字符的过程和约定。保证了正确接收一个字符。
在串行异步通信中,发送方可以在任意时刻发送字符,而且两个字符之间可以停顿。这就需要正确的区分每个字符从什么时候开始,什么时候结束,发送速率,以及发送的和接受的内容是不是一样的等问题。
通信格式,就规范了这些问题,实现统一标准。

串行异步传送字符格式

[color=rgba(0, 0, 0, 0.75)]位信号说明
起始位一个字符传送的开始信号由逻辑0表示
数据位字符信息每位的内容,可以位7位或8位,其中每位数据按照低位先发送
校验位检验数据是否正确,分为奇校验,偶校验。可以没有校验。
停止位一个字符传送结束的信号,用逻辑1表示。
空闲位两个字符发送之间的间隔,位数不确定。以逻辑1表示。

有了这样的字符格式之后,信号线发送一个字符从低电平起始,高电平停止,再到高电平等待,就能分辨出每一个字符。

波特率

通过上面字符传递格式,可以看出传输过程中是以为位最小单位的。除了空闲位的数量不定,其它的都是一位,但是一位的时间持续多长呢,如果我发送的数据是11111111,接收方要怎么知道这是第几个1。这个时候就如果知道发送的速率(频率),就可以知道每一位持续的时间,也就能知道这是第几位了。比如发送方没一秒发送1位数据,接收方也按照这个速度接收,那么到第5秒的时候,这就是收到的第五个1,即使电平没有变化。
这个速率,就是波特率,每秒钟传送的二进制位数,接收方也根据这个速度来接收,就能实现收发统一。如果速度不匹配,那么接收的数据就是错误数据。
字符数据格式和波特率就构成了异步通信的通信格式。通信双方要按照同一个通信格式才能正确通信,否则会发生错误。

数据格式

通信格式保证了一个字符的正确传输,但是在很多时候一个字符并不能表示完整的信息。如果按照一定的通信格式发送我爱学习,那么接收方会依次收到我 爱 学 习 ,但接收方并不知道这句话说完没有,如果接收方直接拿这段数据去处理,可能会产生错误的结果。所以需要规定多个字符的格式,找到开始和结尾,就像电视里面使用对讲机经常听到呼叫总部呼叫总部,我爱学习,完毕!。这样的话就保证了这段话的完整性,和语文中写完一句话最后要打。一个道理。都是保证数据完整,减少歧义。
在通信的过程中,一个完整的信息才是有效信息,就像对话,要说一句完整的话才能正确表达意思。而一句完整的话,就叫做一帧,也叫信息帧。但怎么确定是一帧信息呢,这个时候就需要确定一下一句话的结构,比如 呼叫总部呼叫总部,我爱学习,完毕! 这种结构。当听到 呼叫总部呼叫总部 就知道你要说有效信息了,听到 完毕! 之后,就知道你说完了,而中间的 我爱学习 就是你要表达的意思。所以 呼叫总部呼叫总部,*********,完毕! 就是一个完整的信息。这种格式就通信双方约定好的数据格式。
数据格式就是双方按照一定字符规则,规范多个字符之间的关系,能够保证数据完整,正确接收一帧信息。数据格式在其他地方也被称为报文。