由于STM32单片机自带CAN控制器,所以STM32和MCP2515 CAN控制器联合使用的场景不多。正好一个特殊的需求使用了MCP2515和STM32,在这里说一下硬件链接需要注意的地方。
主控芯片STM32F103C8T6
CAN模块MCP2515(控制器)+TJA1050(收发器)
程序直接由泥人的例程修改为STM32程序,本身提供的是STC51单片的程序
3.无法通信的问题
购买的是泥人的CAN模块手册说明是5V供电,而STM32工作电压是3.3V。这里存在一个电压不同,STM32手册说明兼容5V。
本想直接给CAN模块供3.3V电压,但是无法工作。查看芯片手册后发现MCP2515的工作电压是2.7V~5.5V而TJA1050工作电压是4.75~5.25,所以由于收发器的工作电压问题,CAN模块采用3.3V供电是肯定无法工作的。
乖乖的接5V给mcp2515模块供电即可。
5.代码位置
https://download.csdn.net/download/maowendi/10233883
本篇文章介绍一下
stm32F103C8T6
的can总线通信实验
需要两块
stm32F103C8T6
板子
can通信主要是用于两块板子之间的通信,简而言之就是用一块板子发指令,另一块板子接收指令并发出动作。之前搜索了好多例程,但是应用于
stm32F103C8T6
的例程很少,所以决定写一篇博客,也算是记录一下自己的学习过程。本人第一次写博客,如有错误,欢迎在评论区指出。话不多说,下面是我的发送端stm...
MCP2515
在发送数据时,如果通信速率较低一切都正常。但是当通信速率较高,比如1M时,发送一帧数据后,
MCP2515
有时会出现自动重复发送多帧数据的情况。
为解决这现象,请参照官方给的《
MCP2515
勘误手册》第5条,给出了解决CAN速率较高时,出现数据多发重复发送的解决方法:
即,在保证数据发送完成的情况下,加入片选信号可解决问题。
1、 2路CAN接口(
MCP2515
的1路,
STM32F103C8T6
自带的1路CAN),可以实现两路CAN的通信;
2、供电范围宽(7-28v),采用可插
基于
STM32
的多路CAN总线通信软件程序和硬件设计
STM32
F407自带两路CAN,按照客户要求,需要定制一款5路CAN的电路板,选择三片
MCP2515
另外扩展出三路CAN通信电路,实测五路CAN总线通信稳定可靠。在
调试
的过程中,发现
MCP2515
在高速率通信时会产生CAN数据帧多发重发现象,后来找到
MCP2515
的勘误手册(勘误手册可自行下载),确实存在这个问题。