零基础 STM32通过CAN通信驱动Maxon电机
第三章 STM32 CAN通信回环模式测试及Maxon电机通信
一、STM32 CAN通信回环模式测试
正点原子官方给的CAN通信例程需要lcd显示屏和两块板子,本章修改代码,仅用一块STM32进行回环模式的测试。
首先下载修改后的程序,运行并烧录(接线方式和运行方式与上一章完全相同)。注意板子右侧的接线帽要接正确,CRX接PA11,CTX接PA12。具体原理请查看代码文件中的can.h和正点原子CAN通信实验教程。
在串口助手显示LCD ID之后(这里比较匆忙没改,对实验没有影响),按下STM32上的KEY0,按一次会发送一次指令并在串口助手中打印。
按一下KEY1显示exit。测试成功。
二、STM32通过CAN通信驱动Maxon电机
1.CAN通信以及Maxon CAN指令
CAN通信协议的教程非常多,可以找大佬的教程学习。
这里只讲实验有用的部分。
在Maxon的CAN通信指令中所包含的内容如下图所示。
CAN-ID为601为发送指令,CAN-ID为581则为接收指令。Byte0使用0x22或0x23都可以,代码中出现的0x2B等可以替换为0x22或0x23(请咨询代理商)。Byte1-3位控制类,参照技术手册。Byte4-7位为16进制发送数据值。
在编写指令时请注意,CAN通信指令是倒着输入的。例如控制类0x60FF-00,输入时Byte1=FF , Byte2=60 , Byte3=00。再比如输入数据值为10000,对应十六进制数为00002710,则Byte4-7 分别为 10 27 00 00;输入数值为100000,对应十六进制数为000186a0,则Byte4-7 分别为 a0 86 01 00。
本项目中定义发送数据指令为can_send_msg,具体定义请参考can.c。can_send_msg第一项为CAN-ID,第二项指令,第三项指令长度。
// 发送指令 601 2F 60 60 00 01
uint8_t canbuf1[]={0x2F,0x60,0x60,0x00,0x01};
res = can_send_msg(0X601, canbuf1, 5);
2.接线与通信
将STM32的CANH和CANL分别接到EPOS4上的CANH和CANL。(另一根线不接)
然后将代码main.c当中的mode改为0,can_init最后一项改为CAN_MODE_NORMAL。运行、烧录。
然后按键KEY0,如果通信正常,在串口助手XCOM中则会如回环模式中一样打印。多次按下KEY0则STM32将会按照以下顺序发送数据。同时按下KEY1则会立刻去使能,停止实验。
总结
本章进行了简单的STM32 CAN通信控制Maxon电机进行PPM模式测试。相关知识还需要在实验当中不断学习。后续可能会更新复杂控制相关代码。先摆一会~文章来源:https://www.toymoban.com/news/detail-810889.html
项目链接:https://pan.baidu.com/s/15_Tz2rfeDW-2U4VZkh5V3g
提取码:1234文章来源地址https://www.toymoban.com/news/detail-810889.html
到了这里,关于【零基础 STM32通过CAN通信驱动Maxon电机】第三章 STM32 CAN通信回环模式测试及Maxon电机通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!