利用单片机串口做Modbus RTU协议驱动变频器问题

2020-01-25 15:36发布

现需利用单片机串口产生一波特率(Modbus RTU协议)来驱动变频器动作,有以下几点问题求解?
资料:1、Modbus协议如下图一所示,由“超始位+8位地址+8位功能码+n*8位数据+16位CRC校验码+停止位”组成。
      2、经查阅51内核的单片机其串口模式有0、1、2、3四种,其中1、2、3模式只能输出10与11位的数据,而0模式可作为移位输出,但其时钟为晶振的1/12。
      3、三菱变频器所支持的Modbus协议速率为:4800、9600、19200、38400四种。

    我现在所想是“根据变频器所支持的速率及Modbus协议的数据位,单片机的1、2、3种串口模式均满足不了要求。但如果使用单片机的模式0,则其输出速率要求改变晶振参数。”问题如下:
      1、请问大家,如果真的要做Modbus协议是否只能用普通端口来模拟串口输出(自己做移位程序)?
      2、对于Modbus协议的起始位与停止位,Modbus协议提到是做“3.5个无字符的时间”。哪如果我是自己端口模拟串口的话,哪个“开始位”与“停止位”时间是对端口付0还是付1?

(原文件名:3.jpg)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。