从零开始,用CubeMX让M2006电机转起来,大疆C板控制M2006电机
硬件环境Robomaster 开发板C型STLink V2XT30电源M2006电机+C610电调CubeMX配置基本的配置请参考《RoboMaster开发板C型嵌入式软件教程文档》中第0章和第14章。https://github.com/RoboMaster/Development-Board-C-Examples/blob/master/RoboMaster%E5%BC%80%E5%8F%91
发现网上很少有关于这个的文章,到处找,搜索引擎试了个遍,还在Robomaster的论坛里找了找,最终也是没有找到类似的文章。还好在B站上找到了一个视频教程,帮助很多,致敬前辈!,视频链接在文末。但是这个视频有些长,一个多小时,想看完还是要有点耐心的,所以想着写个文章。官方虽然给的有例程,但是对于新手来说又略显复杂,而且C板的教程里忽略了一个细节,直接按照C板教程里做会发现电机不转,我就是卡在了这里,搞了两三天也没搞定,还好前辈的视频里说了这个问题,具体在视频1:08:20提及,这个问题搞定后我的2006电机终于转了起来,随后写下这篇文章。
硬件环境
Robomaster 开发板C型
STLink V2
XT30电源
M2006电机+C610电调
我是通过SWD把C板和STLinkV2连接起来的, 四根线对应连接就可以了,STLinkV2的电路板上能看到引脚名称。
CubeMX配置
基本的配置请参考《RoboMaster开发板C型嵌入式软件教程文档》中第0章和第14章。
但在开发板原理图中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
ChatGPT4
用ChatGPT4理解上述代码:
更多推荐
所有评论(0)