楼主

[嵌入式] 【求助帖】关于CAN总线驱动直流无刷电机的问题

[复制链接]
梯队队员602657827
2019-9-15 14:55:50 只看该作者

马上注册,玩转Robomaster!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
小白入坑,想用can控制电调驱动无刷,板子是A板,M2006动力系统。波特率是按例程调的,想问下大佬们为啥发出去跑不起来呢?还是我理解上出了问题。

int main(void)
{
                CanTxMsg TxMessage;
                LED_Init();
                delay_init(168);  
                CAN1_Mode_Init(CAN_SJW_1tq,CAN_BS2_4tq,CAN_BS1_9tq,3,CAN_Mode_Normal);
                while(1)
                {
                                TxMessage.StdId=0x200;        
                                TxMessage.IDE=CAN_ID_STD;                 
                                TxMessage.RTR=CAN_RTR_DATA;                  
                                TxMessage.DLC=8;                                       
                                TxMessage.Data[0]=0x13;                                 
                                TxMessage.Data[1]=0x13;  
                                TxMessage.Data[2]=0x13;                                
                                TxMessage.Data[3]=0x13;
                                TxMessage.Data[4]=0x13;                                
                                TxMessage.Data[5]=0x13;
                                TxMessage.Data[6]=0x13;                                
                                TxMessage.Data[7]=0x13;
                                CAN_Transmit(CAN1, &TxMessage);
                        
               
         }
        
}








u8 CAN1_Mode_Init(u8 tsjw,u8 tbs2,u8 tbs1,u16 brp,u8 mode)
{

          GPIO_InitTypeDef GPIO_InitStructure;
          CAN_InitTypeDef        CAN_InitStructure;
          CAN_FilterInitTypeDef  CAN_FilterInitStructure;
#if CAN1_RX0_INT_ENABLE
           NVIC_InitTypeDef  NVIC_InitStructure;
#endif

          RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);                                                                                                                 
          RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);   
        

     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0| GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
    GPIO_Init(GPIOD, &GPIO_InitStructure);
        

          GPIO_PinAFConfig(GPIOD,GPIO_PinSource0,GPIO_AF_CAN1);
          GPIO_PinAFConfig(GPIOD,GPIO_PinSource1,GPIO_AF_CAN1);

          CAN_InitStructure.CAN_TTCM=DISABLE;     
          CAN_InitStructure.CAN_ABOM=ENABLE;              
          CAN_InitStructure.CAN_AWUM=DISABLE;
          CAN_InitStructure.CAN_NART=DISABLE;        
          CAN_InitStructure.CAN_RFLM=DISABLE;        
          CAN_InitStructure.CAN_TXFP=DISABLE;      
          CAN_InitStructure.CAN_Mode= mode;      
          CAN_InitStructure.CAN_SJW=tsjw;     
          CAN_InitStructure.CAN_BS1=tbs1;
          CAN_InitStructure.CAN_BS2=tbs2;
          CAN_InitStructure.CAN_Prescaler=brp;     
          CAN_Init(CAN1, &CAN_InitStructure);   

         
           CAN_FilterInitStructure.CAN_FilterNumber=0;  
          CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
          CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;
          CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;
          CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
          CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;
          CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
           CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;
          CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
          CAN_FilterInit(&CAN_FilterInitStructure);
//               
#if CAN1_RX0_INT_ENABLE
        
          CAN_ITConfig(CAN1,CAN_IT_FMP0,ENABLE);               

          NVIC_InitStructure.NVIC_IRQChannel = CAN1_RX0_IRQn;
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;   
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
          NVIC_Init(&NVIC_InitStructure);
#endif
        return 0;
}   

跳转到指定楼层
沙发

[嵌入式] 【求助帖】关于CAN总线驱动直流无刷电机的问题

[复制链接]
工程DYchen
2019-9-17 13:02:07 只看该作者
不是应该要高八位和低八位吗?
板凳

[嵌入式] 【求助帖】关于CAN总线驱动直流无刷电机的问题

[复制链接]
正式队员BPJ
2019-9-21 22:44:51 只看该作者
首先排除硬件问题,软件可以就照着官方的例程来,单步调试慢慢来
地板

[嵌入式] 【求助帖】关于CAN总线驱动直流无刷电机的问题

[复制链接]
梯队队员602657827
 楼主| 2019-9-22 18:46:54 只看该作者
DYchen 发表于 2019-9-17 13:02
不是应该要高八位和低八位吗?

就随便输得数 单纯想让他跑起来
5#

[嵌入式] 【求助帖】关于CAN总线驱动直流无刷电机的问题

[复制链接]
工程DYchen
2019-9-23 09:15:07 只看该作者
602657827 发表于 2019-9-22 18:46
就随便输得数 单纯想让他跑起来

那也得按协议来吧
6#

[嵌入式] 【求助帖】关于CAN总线驱动直流无刷电机的问题

[复制链接]
梯队队员602657827
 楼主| 2019-9-23 15:40:34 只看该作者
DYchen 发表于 2019-9-23 09:15
那也得按协议来吧

请问这个数据有什么问题吗? 我看协议不就输一个电流值吗 高八位13低八位13也在范围里吧。。。小白求教
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

触屏版 | 电脑版

Copyright © 2024 RoboMasters 版权所有 备案号 粤ICP备2022092332号

快速回复 返回顶部 返回列表