由于工作需要,我对现有的485通讯方式进行了一个总结,同时也包含自己原创的一些算法来快速实现485通讯与CRC校验,以及返回值的处理
看下效果:利用此方法可以一行代码完成485发送与接收而且还包含了CRC16Modbus校验!
- RS485通讯
我个人认为485的通讯协议只是一个规则而已,现在懂得运用即可,我就不再这里长篇阔论的进行原理讲解,毕竟我也不懂,你也不懂,不如直接实战,开搞!
而且从单片机角度来看,485就是串口通讯,加了串口转换模块而已,所以只要把串口处理好就可以了。
- 首先看一下串口处理的方法
我尝试了很多方法,发现现在用的是最方便的一个。
首先是建立结构体进行数据存储。
其次是初始化与硬件配置(可以忽略不看)
|
|
然后重要的在于串口终端函数
|
|
解释:这里的效果在于,可以很快速的对数据进行处理同时将数据缓存至结构体比那两种
最重要的就是发送指令与数据回传的综合处理函数!!!
|
|
解释:这里的终极奥义就在于可以一个函数完成数据发送与接收和校验!
原理分析:在设备串口问询485数据后,会立即进入接收串口接收中断,同时将接收的数据存入结构体,然后进行返回值除去后两位的CRC校验判断是否与返回的数据相等,如果满足CRC校验,就确认为正常数据。接下来可用于NB的发送。
源码由博客主页Github获取