瑞芯微Rockchip开发者社区
直播中

胡秋阳

13年用户 1601经验值
私信 关注
[问答]

请问CAN通信参数具体该怎么配置呢

在做一个项目是CAN通信及基于CAN通信的应用,Linux使用Socket CAN机制 ,请问CAN 通信参数的配置实在构建Linux内核时做还是在应用初始化时候做?具体该怎么配置呢?



回帖(1)

郭晓晨

2022-1-13 10:24:51
上位机的波特率怎么设置说详细点。最好的每个选项都说一下,谢谢啦!!!
程序采用的是原子哥的can程序,参数怎么设置才能让stm32的can和can分析仪通信,stm32的回环模式已经跑通,现在是采用的正常模式。


发送参数设置:
u8 Can_Send_Msg(u8* msg,u8 len)
{
  u8 mbox;
  u16 i=0;
  CanTxMsg TxMessage;
  TxMessage.StdId=0x12; //
  TxMessage.ExtId=0x12; //
  TxMessage.IDE=0; //
  TxMessage.RTR=0; //
  TxMessage.DLC=len; //
  for(i=0;i<8;i++)
  TxMessage.Data=msg; //      
  mbox= CAN_Transmit(CAN1, &TxMessage);   
  i=0;
  while((CAN_TransmitStatus(CAN1, mbox)!=CAN_TxStatus_Failed)&&(i<0XFFF))i++; //
  if(i>=0XFFF)return 1;
  return 0;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
can参数设置

  CAN_InitStructure.CAN_TTCM=DISABLE;
  CAN_InitStructure.CAN_ABOM=DISABLE;
  CAN_InitStructure.CAN_AWUM=DISABLE;
  CAN_InitStructure.CAN_NART=ENABLE;
  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 CAN_RX0_INT_ENABLE

CAN_ITConfig(CAN1,CAN_IT_FMP0,ENABLE);
  
  NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;   
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;         
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
举报

更多回帖

发帖
×
20
完善资料,
赚取积分