1.用STM32cubemx生成初始化代码,版本为4.27.0,软件包版本为f1系列1.6.1.首先配置时钟,调试口,找到can外设,master mode前面勾选
2.j进入configuration,选择connectivity下面的can,进行参数配置,由于can挂载在APB1,所以时钟为APB1的时钟,因此波特率为pclk1/(bs1+bs2+sjw),STM32 bxcan只有这3段。以8M,波特率250Kbps为例,配置如下所示:
文章图片
3.如果只是为了测试简单的CAN通信,可以选择回环模式,正常模式必须要2个及以上设备才行。并且使能CAN接收中断
4.程序中要做的工作如下:can初始化,设置过滤器,使能can接收中断,can接收中断回调里面处理数据,can错误中断里面重启can设备(ps:如果6个点以下可以不需要错误回调,实际项目测试得出的结果)
5.如果对外发送数据则要设置id,数据等
6.由于can是半双工模式,所以不能同时收发,否则会导致错误
【STM32 can通信分析】参考链接:https://www.amobbs.com/thread-644171-1-1.html?_dsign=cb4736a3
推荐阅读
- stm32|基于STM32和freeRTOS智能门锁设计方案
- 日常分享|共享充电宝方案原理,具体部件组成以及主控MUC参数
- #|ARM裸机开发(汇编LED灯实验(I.MX6UL芯片))
- STM32|STM32的四种IO输出模式
- STM32 远程升级(ISP / IAP)
- stm32|stm32f103can总线过滤器配置
- STM32CubeMX配置SDIO模式(非DMA方式)
- STM32|如何建一个STM32F030标准库工程模板
- STM32 时钟RCC相关配置参考stm32f10x_rcc.h
- STM32 NVIC