出现这样的问题无非是串口通讯的问题,要不然你就把485芯片外围加好隔离电路,或者加金升阳的B0505S隔离芯片,但是这个器件很贵,不知道你的成本能不能接受,哈哈。
我搜了一下RS485问题解决,看到一个这个芯片,说是不用隔离,你也可以看看。
1、起初是程序代码这提示CRC校验错误,后来发现是程序这有问题,改过之后可以完整接收仿真助手发来的Modbus帧,并进行解析,组织数据。
2、在从机对发来的帧解析、组织完回复帧,进行串口发送程序时,调试助手接收不到,即一直超时错误。
后来发现是我的Max3485的使能位搞错了,(补充一下,我板子上设计了两种485的电路,一为自己搭的电路,一路为ZLG的RSM485模块,后来发现两者的使能位设置是相反的,害我捣鼓半天啊),改过之后调试助手就可以接受数据了。
你使用PA9与PA10脚加一个控制引脚控制柜MAX485芯片,然后走MODBUS通信协议即可!
推荐一本书吧。
出版了《Modbus软件开发实战指南》
清华大学出版社出版,相信品质!
链接如下:
在物联网和互联网+的时代,不懂Modbus如何玩转物联网?
全方位解析Modbus软件开发技巧,一书在手轻松搞定Modbus软件开发!
干货满满,值得一读。
通信双方没有约定必须使用modbus的话,没必要使用modbus。
遵循【帧头】【命令】【数据长度】【数据】【校验】【帧尾】的报文结构,自己随便定个协议,分分钟搞定。
另:pudn上modbus代码太多了,自己去随便找。
RS485需要你自己加个ZT485芯片,再接上STM32的串口,加个GPIO控制其收发;
至于MODBUS协议,它跟STM32本身没关系,需要你自己看MODBUS的文档用STM32的串口实现;
估计你对接的是485接口的传感器,它用的MODBUS可能跟标准的还会有差异,具体看你接的传感器命令说明手册。
本文标签:stm32的modbus485通讯