2019-03-23 15:48发布
shijizai 发表于 2018-7-2 11:01 串口通信,工程中实现功能时,主从设备间应该怎样互传,比如校验和什么的是否需要互传之类的,大神能简单 ...
huo_hu 发表于 2018-7-2 11:22 1.帧头帧尾校验和是自己定的么?这算是一个协议么? 如何把串口的一个个字节分成一个个数据包是要有一个标 ...
bobde163 发表于 2018-7-2 15:14 两个设备间通信,就好比两个人之间在聊天对话,首先这两个人至少要说同一种语言吧,比如中文或者是英语之 ...
最多设置5个标签!
两个设备间通信,就好比两个人之间在聊天对话,首先这两个人至少要说同一种语言吧,比如中文或者是英语之类,语言不同当然是听不懂了,串口通信中,大家使用的“语言文字”就是一个个字节,一共256个字节,就像是汉语中的一个个汉字一样,然后你要对话,那一般是一句一句话的说吧,才能更好的理解对方的意思,很少见到一个字一个字的说吧,相应的串口通信协议中,大多都是多个字节“组成一句话”,再发送出去。
帧头就好比说话前先打个招呼:“我要说话了,你听着”,然后说要说的话
帧尾就好比一句话说完了,也打个招呼:“我说完了”,然后对方就去处理你说的话的意思了。
校验和就好比一个暗号,事先双方定义好对暗号的规则,比如说所有字的笔画加起来一定要等于100画等这样的规则,这样对方在听到你说的话之后,会去计算这些笔画的总数对不对,不对的话那说明要么是对方说错话了,要么是我这一方听错了,不能处理。
所以以我们日常中的对方过程来作模型,可以看到帧头和帧尾还有校验和你都可以自己定义的取舍,比如你两个人挨着在说悄悄话时,就可以不需要这些东西了,但是如果在隔着桌子在问答时,那可能就需要帧头或者帧尾来表示要开始说话或者结束说话。
这样解释,不知道你能不能理解
再问一个另外的问题哈,你说如果我要一个单片机的USART2传到另一个单片机的USART2,这个时候程序应该怎么写呢?USART_SendData(USART2,'A');用这个么?但是怎么区分两个单片机的USART2呢?如果这么写会不会发送到原单片机的USART2上?我这时候发送应该怎么发送?
你说的这个更像是系统应用层程序,协议的复杂程度和硬件有关系.
比如数据包在网络传输就不能假设先发的数据先到,就必须加帧号或时间戳来区分,简单的串口是不会出现这种情况的.
搞得太复杂没必要,你到底要弄啥,摆出来看看
已经很通俗了,非常能理解,多谢大神
一周热门 更多>