本帖最后由 小飞鸟f 于 2024-12-10 11:38 编辑
1、前言 多摩川协议是由编码器制造商多摩川编码器有限公司定义的一套协议。多摩川协议是基于RS485硬件接口的标准NRZ协议,通信波特率一般为2.5MHz。多摩川协议的应用场景包括伺服控制中获取更高的位置精度和完成更精细的绝对定位要求。 2、多摩川协议格式说明 对于MCU而言,多摩川协议可以理解为UART通信的一种。如下图所示,主机先发送一个字节的命令。然后间隔3us,从机返回N个字节的数据。 一个字节的数据帧格式如下图所示,起始位为0,然后是8位数据位,最后一位是停止位1,符合UART一种格式。 需要注意的是,连续发送多个字节时,字节与字节之间的时序是0延时的。如下图所示,某一个周期实测的通信时序,主机发送0x1A命令,从机回应11个字节数据,11个字节数据之间连续、没有延时。 如下图所示,多摩川协议定义了多种单字节命令CF(ID0~IDC),从机回应的用户数据格式如图DF0~DF7所示(回应的第一个字节是CF,最后一个字节是CRC)。 多摩川协议除了单字节命令,还有读和写寄存器的多字节命令。如下图所示,如果是读寄存器命令,则包括CF、ADF、CRC三个字节,从机回应CF、ADF、EDF、CRC四个字节数据;如果是写寄存器命令,则包括CF、ADF、EDF、CRC三个字节,从机回应CF、ADF、EDF、CRC四个字节数据。主机命令和从机返回数据之间时间间隔也是3us。 3、APM32F103xB实现多摩川从机协议 APM32F103xB在绝对值编码器应用中,大部分产品的编码器协议都采用多摩川协议。 APM32F103xB实现多摩川协议命令需要注意以下几点:UART配置为2.5MHz,需要注意主频必须是2.5的倍数,否则UART在高低温情况下,容易出现时序不稳定;MCU接收到主机命令,在返回数据之前,需要延时一下,保证3us的间隔时间;MCU返回没个字节数据之间需要通过DMA实现,否则无法实现0延时。 UART参考配置如下图所示,其中,主频设置为80MHz,满足2.5的倍数关系。 UART的发送配置为DMA发送模式。 在UART发送数据时,需要进行短暂的延时,以达到3us的间隔时间。 4、结论 最终的实测时序如下图所示,数据收发间隔时间为3.3925-0.4(命令的停止位)=2.9925us,符合3±0.2us条件。发送一个字节的实测时间为4us,由于2.5MHz波特率,一bit数据是0.4us,一个字节数据帧是10bit,共4us,符合多摩川协议定义。
|