STM32通过CAN通信驱动Maxon电机 – 第三章:CAN通信回环模式测试及Maxon电机通信详解

零基础 STM32通过CAN通信驱动Maxon电机

第三章 STM32 CAN通信回环模式测试及Maxon电机通信


文章目录

  • 零基础 STM32通过CAN通信驱动Maxon电机
  • 一、STM32 CAN通信回环模式测试
  • 二、STM32通过CAN通信驱动Maxon电机
  • 1.CAN通信以及Maxon CAN指令
  • 2.接线与通信
  • 总结

  • 一、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://pan.baidu.com/s/15_Tz2rfeDW-2U4VZkh5V3g
    提取码:1234

    物联沃分享整理
    物联沃-IOTWORD物联网 » STM32通过CAN通信驱动Maxon电机 – 第三章:CAN通信回环模式测试及Maxon电机通信详解

    发表评论