基于STM32F405平台的多摩川协议编码器通讯过程(1)

文章目录[隐藏]

RS485通讯

多摩川通讯采用RS485通讯协议。
简单来说,485通讯的特点就是半双工差分信号,总线通讯。
下图是某国产品牌采用了多摩川通讯协议的绝对值编码器接口。
某国产品牌采用了多摩川通讯协议的绝对值编码器接口
差分:图中可以看到,该接口有485+、485-这两个数据接口,这两个接口电平信号的差值,作为传递数据的总线,此外还有5V和GND为编码器供电。
半双工:所谓半双工,即MCU既可以收,又可以发,但是不能同时收和发。

而我们一般用到的MCU芯片,不论是ST芯片上的串口USART,还是DSP上面的串口SCI,都是具有两条线的,一条TX用于发送数据,一条RX用于接收数据,这样的结构叫作单端信号。而且从原理上讲,这样的结构是可以同时实现数据的收和发的,这样的通讯方式叫作全双工
但是,对于STM32F405这款芯片来说,由于数据的发送和接收都用了同一个数据寄存器DR,所以在工程的开发过程中要注意合理调配数据的收发时刻。

为了将MCU的单端全双工信号,转成差分的半双工信号,我们要用到一款转换芯片SN65HVD75DR。
在这里插入图片描述
除去辅助电路,这款芯片的工作原理就是:

  • 当我们把2、3引脚同时拉低时,6、7引脚上的差分数据会被传递到1引脚上,1引脚连接MCU的RX引脚,进而实现读取数据。
  • 当我们把2、3引脚同时拉高时,4引脚上的数据会被传递到6、7引脚上变成差分数据,4引脚上的数据是MCU的TX引脚发出的,进而实现发送数据。
    好,现在我们已经具备了数据的收和发的功能了。那么我们怎样与采用了多摩川协议的编码器“对话”呢?

多摩川通讯协议

下图所示是多摩川通讯协议。
图片3
简单来说就是MCU发出一条CF指令,编码器就会接着返回一组报文,报文中包含CF、SF、DF以及CRC等内容。

  • CF
    在这里插入图片描述
    上图所示为多摩川文档对CF指令做出的解释。
    图中给出的bit位是线路上面的传送顺序,而STM32的串口通讯是小端模式。也就是先传输的是低字节,每个字节里先传输的也是低位。这也很好理解,硬件嘛,对于依次接收的每一位,都是由低地址到高地址保存下来的。所以字节之间的读取顺序和字节里每一位的读取顺序应该是一致的,那么就是小端模式。

    总的来说就是ID0=0x02,ID3=1A。这两个是我们经常用到的两个指令。
    需要说明的是,编码器返回的CF与MCU发出的CF是一致的,便于我们进行通讯检查。

  • SF
    SF是状态位,反应了编码器的状态,包括编码器是否过热、电池供电是否正常以及数据的解析是否正确等。
    在这里插入图片描述

  • DF
    根据MCU发出的CF的不同,编码器返回的DF也会随之而不同,具体的对应状态如下图所示。
    在这里插入图片描述
    ABS0~ABS2:表达的是编码器的单圈值。再一次,因为串口的传输是小端通讯,因此
    编码器单圈位置值 = (ABS2 << 16) | (ABS1 << 8) | (ABS0 << 0)

    ABM0~ABM2: 表达的是编码器的圈数值。
    圈数 = (ABM2 << 16) | (ABM1 << 8) | (ABM0 << 0)

    ALMC:编码器错误,每一位表达了不同的错误。
    在这里插入图片描述

  • CRC
    在这里插入图片描述
    同样是小端,计算方法在图中。

版权声明:本文为CSDN博主「嵌入式相关入门」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40864299/article/details/122645222

生成海报
点赞 0

嵌入式相关入门

我还没有学会写个人说明!

暂无评论

相关推荐

DRV8301的使用

特点 电压6V到60V1.7A栅极驱动电流,2.3A吸收电流支持3.3V和5V接口集成一个buck电源,可调节输出电压和开关频率,可对外提供1.5A电流死区时间可调整、过流保护可调整、PVDD 和GV