针对于复杂的通信环境,设计一款用于多机互联的通信系统。
本系统采用CW32F030C8T6作为主控芯片
(资料图)
小板独立引出了IIC,SPI,另外接了一个USB转串口的CH340模块,以及一个RS485通信模块。
一个好看的最小系统板
该小板主要用于通信课程的课程设计,因此对所有管脚做了引出,对于几种常用的通信功能引脚都将该脚的接口按照习惯的顺序单独排列在了板子的周围
对于板子上方的 IIC 接口可用于通信测试,也可用 OLED 屏幕的接口,该接口共有8ping ,顺序按照商家销售的小屏幕进行了排列
(4接口与8接口)
需要注意的是在使用八接口时需要将板子背面的控制线焊接,在使用4线就能完成时,其他端口均可以当成正常端口输出
本次设计采用的MAX1348通信芯片,该款芯片拥有两个版本对于 E 版可实现500kb/s的无差错通信,并且使用这种差分通信方式,在多机互接时只需要两个根线就可以实现消息的收发,更多关于RS485
同样对于该接口,在不使用时可不对连接处进行焊接t1与t2
对于该接口焊接时,温度200最为合适
基于modbus的思想,将一段信息分为了 起始,地址区,指令区,数据区,校验区,停止符
该段信息表示:起始符为 @,地址是 001,指令为 110,需要接收到的数据位65533,crc校验码 3CFC,并且附带了一个回车符但他是隐藏的,在这段数据中我为每段区域添加了一个 # 用于区分,在实际应用时去掉 # 判断,改为数据位判断一样可以实现
在使用串口发送文本数据时,发出的是ascll编码表的十进制数,进入单片机后会存储为十六进制数,我们需要根据各区域数据的用途,在提取数据时做出不同存储类型,如在提取编号时将编号存储为字符型可为我们提供更丰富编号选择 :A001;
这是一个用于crc校验的计算器用于验证:crc校验计算机
这个是部分的通信协议参考的crc模型,其中:
WIDTH:宽度,即生成的CRC数据位宽(0000/0000 0000/0000 0...)
POLY:十六进制多项式(可以看到在各各模型中均有对应的多项式;如modbus模型,数据第16 15 2 1 这几个位为‘1’,再转换为十六进制),要注意的是省略了最高位
INIT:CRC初始值,和WIDTH位宽一致
XOROUT:计算结果与此参数进行异或运算后得到最终的CRC值
REFIN:true或false,在进行计算之前,原始数据是否翻转(要注意的是翻转是是按位翻转的,如:0011 == 1100)
REFOUT:true或false,运算完成之后,得到的CRC值是否进行翻转(同上)
点击这个地方可以进入调试模式
在这里可以添加一个变量观察窗口
将变量复制进串口,就可实时看到crc校验后的结果了
需要注意的是在我写的代码里,数据停止位是换行 ,即需要在最后一个 # 后面按一次 enter 键
导图
代码实现
下载链接:正在审核
上一篇 : 2019年全国二卷语文高考真题及答案
下一篇 : 最后一页