打印
[APM32F1]

APM32F103xB如何实现多摩川从站协议

[复制链接]
202|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 小飞鸟f 于 2024-12-10 11:38 编辑

1、前言
  多摩川协议是由编码器制造商多摩川编码器有限公司定义的一套协议。多摩川协议是基于RS485硬件接口的标准NRZ协议,通信波特率一般为2.5MHz多摩川协议的应用场景包括伺服控制中获取更高的位置精度和完成更精细的绝对定位要求。
2、多摩川协议格式说明
  对于MCU而言,多摩川协议可以理解为UART通信的一种。如下图所示,主机先发送一个字节的命令。然后间隔3us,从机返回N个字节的数据。
  一个字节的数据帧格式如下图所示,起始位为0,然后是8位数据位,最后一位是停止位1,符合UART一种格式。
  需要注意的是,连续发送多个字节时,字节与字节之间的时序是0延时的。如下图所示,某一个周期实测的通信时序,主机发送0x1A命令,从机回应11个字节数据,11个字节数据之间连续、没有延时。
  如下图所示,多摩川协议定义了多种单字节命令CFID0~IDC),从机回应的用户数据格式如图DF0~DF7所示(回应的第一个字节是CF,最后一个字节是CRC)。
  多摩川协议除了单字节命令,还有读和写寄存器的多字节命令。如下图所示,如果是读寄存器命令,则包括CFADFCRC三个字节,从机回应CFADFEDFCRC四个字节数据;如果是写寄存器命令,则包括CFADFEDFCRC三个字节,从机回应CFADFEDFCRC四个字节数据。主机命令和从机返回数据之间时间间隔也是3us
3APM32F103xB实现多摩川从机协议
        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,符合多摩川协议定义。

使用特权

评论回复
沙发
呐咯密密| | 2024-12-10 18:35 | 只看该作者
先使能DMA发送,再采集角度来得及吗

使用特权

评论回复
板凳
小飞鸟f|  楼主 | 2024-12-10 18:55 | 只看该作者
呐咯密密 发表于 2024-12-10 18:35
先使能DMA发送,再采集角度来得及吗

电机控制位置实时性的原因,要提前采样的。计算可以晚一点。多摩川协议第3个字节才开始发送角度

使用特权

评论回复
地板
xionghaoyun| | 2024-12-11 09:45 | 只看该作者
学习一下

使用特权

评论回复
5
海洋无限| | 2024-12-11 11:52 | 只看该作者
学习下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

20

帖子

0

粉丝