从零开始,用CubeMX让M2006电机转起来,大疆C板控制M2006电机

发现网上很少有关于这个的文章,到处找,搜索引擎试了个遍,还在Robomaster的论坛里找了找,最终也是没有找到类似的文章。还好在B站上找到了一个视频教程,帮助很多,致敬前辈!,视频链接在文末。但是这个视频有些长,一个多小时,想看完还是要有点耐心的,所以想着写个文章。官方虽然给的有例程,但是对于新手来说又略显复杂,而且C板的教程里忽略了一个细节,直接按照C板教程里做会发现电机不转,我就是卡在了这里,搞了两三天也没搞定,还好前辈的视频里说了这个问题,具体在视频1:08:20提及,这个问题搞定后我的2006电机终于转了起来,随后写下这篇文章。

硬件环境

Robomaster 开发板C型

STLink V2

XT30电源

M2006电机+C610电调

我是通过SWD把C板和STLinkV2连接起来的, 四根线对应连接就可以了,STLinkV2的电路板上能看到引脚名称。

《ROBOMASTER开发板C型用户手册》

 

CubeMX配置

基本的配置请参考《RoboMaster开发板C型嵌入式软件教程文档》中第0章和第14章。

https://github.com/RoboMaster/Development-Board-C-Examples/blob/master/RoboMaster%E5%BC%80%E5%8F%91%E6%9D%BFC%E5%9E%8B%E5%B5%8C%E5%85%A5%E5%BC%8F%E8%BD%AF%E4%BB%B6%E6%95%99%E7%A8%8B%E6%96%87%E6%A1%A3.pdfhttps://github.com/RoboMaster/Development-Board-C-Examples/blob/master/RoboMaster%E5%BC%80%E5%8F%91%E6%9D%BFC%E5%9E%8B%E5%B5%8C%E5%85%A5%E5%BC%8F%E8%BD%AF%E4%BB%B6%E6%95%99%E7%A8%8B%E6%96%87%E6%A1%A3.pdf需要注意的是,配置完成后,CAN1_RX和CAN1_TX是这样的,

 但在开发板原理图中CAN1_RX和CAN1_TX分别对应的是PD0和PD1,

 所以要在Pinout view中修改到正确的位置,否则电机不转。

 程序代码

while循环里的代码,为什么这样请参考《Robomaster C610无刷电机调速器使用说明》中CAN通信协议部分。

while (1)
  {
		CAN_TxHeaderTypeDef pHeader1;
		pHeader1.StdId = 0x200;       //标识符:0x200
		pHeader1.IDE = CAN_ID_STD;    //帧类型:标准帧
		pHeader1.RTR = CAN_RTR_DATA;  //帧格式:DATA
		pHeader1.DLC = 0x08;          //DLC:8字节
		
		uint8_t aData[8];
		aData[0] = 200 >> 8;          //电调ID:1,控制电流值高8位
		aData[1] = 200;               //电调ID:1,控制电流低8位
		
		HAL_CAN_AddTxMessage(&hcan1, &pHeader1, aData, 0);
  }

还要搞一个函数,还没搞懂这个函数是干嘛的,但是必须要用,否则电机不转。

void can_filter_init(void)
{
    CAN_FilterTypeDef can_filter_st;
    can_filter_st.FilterActivation = ENABLE;
    can_filter_st.FilterMode = CAN_FILTERMODE_IDMASK;
    can_filter_st.FilterScale = CAN_FILTERSCALE_32BIT;
    can_filter_st.FilterIdHigh = 0x0000;
    can_filter_st.FilterIdLow = 0x0000;
    can_filter_st.FilterMaskIdHigh = 0x0000;
    can_filter_st.FilterMaskIdLow = 0x0000;
    can_filter_st.FilterBank = 0;
    can_filter_st.FilterFIFOAssignment = CAN_RX_FIFO0;
    HAL_CAN_ConfigFilter(&hcan1, &can_filter_st);
    HAL_CAN_Start(&hcan1);
    HAL_CAN_ActivateNotification(&hcan1, CAN_IT_RX_FIFO0_MSG_PENDING);

    can_filter_st.SlaveStartFilterBank = 14;
    can_filter_st.FilterBank = 14;
    HAL_CAN_ConfigFilter(&hcan2, &can_filter_st);
    HAL_CAN_Start(&hcan2);
    HAL_CAN_ActivateNotification(&hcan2, CAN_IT_RX_FIFO0_MSG_PENDING);
};

致敬:

从零开始,用cube MX让2006电机转起来,CAN通信协议(RoboMaster战队培训日常)_哔哩哔哩_bilibili

  • 2
    点赞
  • 43
    收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

操气的小虫儿

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值