SMT32 CAN2配置中遇到无法接收的问题

STM32 CAN2 配置中遇到无法接收的问题

STM32系列中带有两个CAN控制器,但是按照CAN1配置CAN2,非常容易导致无法接收和发送问题,主要是因为下面两个问题导致的。:
①STM32系列单片机中CAN1和CAN2共用滤波器,需在CAN 筛选器主寄存器 (CAN_FMR)中配置CAN2 起始存储区后CAN2才能使用筛选器。

CAN_SlaveStartBank(15); // can2筛选器组从15开始
CAN_FilterInitStructure.CAN_FilterNumber=15;
CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; //32λ
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);
②CAN2作为从设备无法直接访问SRAM,因此在使能CAN2时钟时,首先要使能CAN1时钟才可以。
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2, ENABLE);


  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
STM32CubeMX配置CAN通信,可以按照以下步骤进行操作: 1. 打开STM32CubeMX软件,选择你的目标STM32微控制器型号,并创建一个新的工程。 2. 在"Pinout & Configuration"选项卡,选择CAN外设。根据你的需求,选择一个可用的CAN控制器,并将其引脚分配给合适的GPIO引脚。 3. 在"Configuration"选项卡,找到"Peripherals"子选项卡,然后选择CANx (x表示你选择的CAN控制器编号)。 4. 在CAN配置界面,你可以进行以下配置: - "Mode":选择CAN通信模式,可以是"Normal"、"Loopback"或"Silent"。 - "Baudrate Prescaler":设置CAN总线的波特率预分频系数。 - "Time Quantum in Bit Segment 1"和"Time Quantum in Bit Segment 2":设置CAN帧的时间段长度。 - "Synchronization Jump Width":设置CAN帧同步跳转宽度。 - "Transmitter Delay Compensation":设置发送器延迟补偿。 - "Automatic Bus Off Management":选择是否启用自动总线关闭管理。 - "Automatic Wakeup Mode":选择是否启用自动唤醒模式。 - "Filter Scale"和"Filter Mode":设置CAN过滤器的规模和模式。 - "Filter Identifier List Mode":选择过滤器的标识符列表模式。 - "Filter Identifier Mask Mode":选择过滤器的标识符掩码模式。 5. 配置完成后,点击"OK"按钮,然后生成代码。 6. 在生成的代码,你可以使用HAL库提供的函数来初始化和配置CAN外设,并实现CAN通信的发送和接收操作。 以上是使用STM32CubeMX配置CAN通信的基本步骤。根据你的具体需求,你还可以进一步定制CAN外设的其他参数和功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值