CAN总线
概念部分
IIC和SPI是基于TTL电平的,距离大了电平会衰减,CAN是双线差分信号,两根线构成总线,CAN High与CAN Low,这两根线之间的电位差可以对应两个不同的逻辑状态进行编码,可以抑制共模干扰。CAN不分主从机,每个设备都有自己接收总线和发送总线的能力。
CAN数据帧格式:
仲裁场:和IIC一样,每一个CAN总线上的设备都有一个属于自己的ID,设备发送数据时,其他设备会检查这个ID是否是自己需要的数据。如果不是则忽略。ID存储在数据帧最前面的仲裁场内,CAN的ID分为标准ID和拓展ID两类,标准ID为11位,如果设备过多,ID不够用时会用拓展ID。
SDO(服务数据对象)通讯
SDO主要用来在设备之间传输低优先级的对象,典型是用来对从设备进行配置、管理,比如用来修改速度环、位置环的PID参数,PDO配置参数等。
PDO(过程数据对象)通讯
PDO用来传输实时数据,数据从一个生产者传到一个或多个消费者。1个PDO 每次最多传输8个字节的数据。PDO通讯参数:包含COB_ID、传输类型、禁止时间、定时器周期。
配置过程
(1)配置CAN总线发送接收IO口,cubemx配置,发送口配PD1,接收口配PD2.
(2)配置波特率为一兆比特
(3)勾选RX0中断
(4)移植电机相关文件
(5)CAN屏蔽器和过滤器配置为0,只要CAN上有数据都接收。
(5)配置好can.c和can.h之后,在主函数中初始化can,以及发送电机的转速、机械角度、位值。
配置电机参数,向电机发送ecd角度点、speed转速、given电流。