STM32本身和所带的库函数,都不直接支持Modbus,需要自己根据modbus的相关协议标准来自己设计modbus通讯涉及到的代码。
提示:串口用来收集数据,把数据放到指定位置,同时你还需要开一个定时器用于断帧,或者STM32高级点的芯片说不定有接收FIFO超时中断,这样断帧就能在中断里面做,否则只能用cpu去处理接收到的每一个字节数据。
你使用PA9与PA10脚加一个控制引脚控制柜MAX485芯片,然后走MODBUS通信协议即可!
其实就是移植一个通讯串口问题,把对应的配置移植过去就行了
推荐一本书吧。
出版了《Modbus软件开发实战指南》
清华大学出版社出版,相信品质!
链接如下:
在物联网和互联网+的时代,不懂Modbus如何玩转物联网?
全方位解析Modbus软件开发技巧,一书在手轻松搞定Modbus软件开发!
干货满满,值得一读。
你自己都说完了,开关量采集一般对应modbus 02功能码的寄存器,也有把开关量组合成16位无符号整型同04功能码寄存器对应。既然叫编程就是你想怎样就怎样,做完了功能上没问题就行了,至于中间过程无所谓。
RS485需要你自己加个ZT485芯片,再接上STM32的串口,加个GPIO控制其收发;
至于MODBUS协议,它跟STM32本身没关系,需要你自己看MODBUS的文档用STM32的串口实现;
估计你对接的是485接口的传感器,它用的MODBUS可能跟标准的还会有差异,具体看你接的传感器命令说明手册。
本文标签:stm32怎么与modbus通信协议