搜索
bottom↓
回复: 3

【转】[MCU] 通讯格式规划概念

[复制链接]

出0入0汤圆

发表于 2013-10-22 20:38:38 | 显示全部楼层 |阅读模式
申明:以下文章来自21IC,作者:slotg ,感觉写的不错,特发献给本论坛的朋友们。

几年来规划过几项产品的通讯格式,也都成功的应用在多项产品当中,现提出一些规划的概念供大家参考:


1.         连线系统当中,有一台为主机或是上位机(MASTER),其他台为副机(SLAVE)。
2.         MASTER为系统的主控者,所有的资料传输都是由MASTER向SLAVE发出命令要求后才进行资料传输,SLAVE并不主动传送资料。
3.         MASTER使用Polling的方式来与SLAVE沟通资料,也就是MASTER一台一台的向SLAVE询问,因此每一台SLAVE都需要有自己的「台号」。
Slave1 ->Slave2 -> Slave3 -> ‧‧‧ -> Slave1

4.         通讯格式如下:
1.         前置码            (2byte)
2.         接收端台号    (1 byte)
3.         传送端台号    (1 byte)
4.         资料长度        (1 byte)
5.         命令码            (1byte)
6.         附加资料        (0~N byte)
7.         check_sum       (1byte)


底下资料格式为16进制格式


5.         前置码的目的是用来辨识通讯包的开头,这里设定了2个byte长度的前置码(5AA5),当程序收到5AA5时就知道是一个通讯包的开始。
6.         接收端台号表示资料是要对谁做通讯。(一般我们会规划MASTER的台号为00,SLAVE的台号从01开始,FF表示全体SLAVE)
7.         传送端台号表示资料是谁传送出来的。
8.         资料长度为不包括自己,后面还有几个byte的长度。
9.         命令码是MASTER告诉SLAVE该命令要做些什么事。(或是SLAVE回应MASTER该通讯包的意义)
10.     附加资料长度依命令码功能而定。
11.     check_sum是从通讯包第一个byte开始资料的累加值,取1个byte长度,这是为了确认通讯包传输过程是否有错误的比对值。


12.     范例1:
MASTER要询问Slave1温度量测值(命令10),因此MASTER发送:

5A  A5  01 00  02  10 12
(1)      (2) (3)  (4)  (5) (7)


Slave1收到后回送:温度为30.5度(16进制的131等于10进制的305)
5A  A5  00 01  04  10 31  01  45
(1)      (2) (3)  (4)  (5) (6)     (7)


13.     范例2:
MASTER要求Slave5输出资料88(命令20)
5A  A5  05 00  03  20 88  AF
(1)       (2) (3)  (4)  (5) (6)  (7)


Slave5收到后回送:表示收到了
5A  A5  00 05  02  20 21
(1)      (2) (3)  (4)  (5) (7)


14.     范例3:全体广播
MASTER要求全体SLAVE重启至状态1(命令F0)
5A  A5  FF 00  03  F0  01  F2
(1)      (2) (3)  (4)  (5) (6)  (7)


15.     为了确保传输的准确性,除非是全体广播命令,否则SLAVE必须都要回应MASTER的命令,没有回应表示该SLAVE断线。
16.     SLAVE程序的设计方式是随时判断线路上的通讯命令(一般会使用中断方式接收),当判断到5A A5时,就知道是一个通讯包的开始,然后再判断下一个台号是否是呼叫自己,不是的话,后续的资料就不再理会,重新等待前置码。是的话就将后续资料读取完毕,读取完后判断check_sum是否正确,然后做出相对应的处理。

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入264汤圆

发表于 2013-10-23 00:45:00 来自手机 | 显示全部楼层
麻烦的要死,直接modbus就好了。简单稳定通用。

出0入0汤圆

发表于 2013-12-19 17:57:48 | 显示全部楼层
15.     为了确保传输的准确性,除非是全体广播命令,否则SLAVE必须都要回应MASTER的命令,没有回应表示该SLAVE断线。

在实际使用中,受到环境干扰,偶尔MASTER接收不到SLAVE的回应,不能当做SLAVE断线

出0入4汤圆

发表于 2013-12-19 20:31:07 | 显示全部楼层
5AA5不具备唯一性,不适合做头码
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-4 05:44

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表