快速扫盲:使用M3508、M2006电机必备的CAN通信知识
- 时间:
- 浏览:120
- 来源:中国微特电机网
在电机使用的领域里CAN收发器那可太关键了,好多人还不清楚它的重要性以及相关知识,接下来咱们就好好唠唠!
CAN收发器必备缘由
要使用电机,CAN收发器可是必备的硬件条件!这就跟咱们建房子要有基石一样重要。你得先确定自己手头上有这个收发器才行。就像打仗得先有武器。从硬件层面深入分析,就明白为啥非得要这个额外的CAN收发器。就如STM32,它有个外设叫做CAN控制器,专门负责CAN通信的筛选、优先级还有仲裁这些麻烦事。
CAN引脚特性体现
STM32的那俩引脚上面传输的数据其实都已经是标准的CAN报文该有的格式啥都不缺。它的CAN回环模式就好像是直接把CAN_RX和CAN_TX连一块儿,这样自己发的消息就能自己收到哩。不过,CAN在设计的时候考虑到消除共模干扰问题,专门选用了差分信号也就是差模信号来传输数据。就好比走了一条更安全的路,能避免不少问题。
电调开关设置情况
不知道各位朋友们有没有留意到C610、C620这些电调上都有个开关。C620的开关在侧面,旁边还写着CAN RESISTOR。这其实也是CAN总线的设计要求。这就像给每个设备都设置了一个小规则。为啥这样?因为电调采用1MHz的通信频率,为了防止那些不必要的干扰,就需要在CAN总线两端用120Ω电阻跨接起来。
总线电阻连接示例
比如说之前图里表示的,一端可以看成是CAN收发器,另一端就是下面的电调。要是只有一个电调的话,可以把电调上的电阻打开,然后和CAN收发器直接相连。这样虽说少了一端的终端电阻,但实际上设备还是能运行滴。当然也可以像图上那样手动组成总线结构,并且把电调上的终端电阻关掉,图里还加了电容用来滤波。就像给设备做了个防护措施。
软件配置适用场景
CAN_HandleTypeDef hcan1;
/* CAN1 init function */
void MX_CAN1_Init(void)
{
hcan1.Instance = CAN1;
hcan1.Init.Prescaler = 3;//分频系数设置为3
hcan1.Init.Mode = CAN_MODE_NORMAL;
hcan1.Init.SJW = CAN_SJW_1TQ;
// =================请看这里
hcan1.Init.BS1 = CAN_BS1_9TQ;
hcan1.Init.BS2 = CAN_BS2_4TQ;
// =====================这里
//省略一些。。。。。
HAL_CAN_Init(&hcan1);
}
其实看完硬件部分,正常使用电调电机基本上没问题。毕竟大疆官方例程已经把CAN通信都配置好电机控制demo板,直接用就行。不过要是一次性控制特别多的设备,比如说超过四个电机,或者还有其他外设也要通过CAN总线连接的话,稍微了解下软件配置也是很有好处滴。而且,大疆的例程是给大疆开发板写的,主控芯片是STM32F429,这里面F4和F1时钟频率差别会影响到配置的具体参数。
过滤器及线路接入详情
一般情况下,CAN过滤器的配置不用太在意,官方例程都没咋配置电机控制demo板,直接套用就好。过滤器其实就是对接收信息进行筛选的部件。因为CAN总线上消息比较复杂,通过它就能选出自己想接收的消息。还有官方手册提到,同一个CAN总线上,最多能接入8个电调,电调会自动分配地址为0x201 - 0x208。想想这么多设备连接起来还真有趣
不知道大家在使用电机和CAN收发器的时候,有没有遇到过啥特别的问题?要是你觉得这篇文章有点用,记得点赞和分享!
猜你喜欢