STM32的CAN应用尝试
CAN控制器之外加上CAN收发器就可以用于CAN通讯了,于是随便找了一个小板子,焊接上CAN收发器TJA1050,就可以用于CAN通讯了。
在这篇博文中,先把通常的思路给自己理清一下。至于CAN协议的具体内容还是要参考CAN-BUS的规范了。在这里就是讲使用STM32单片机的CAN的简单思路。
STM32 CAN总线初始化步骤:
1、
使能CAN时钟,通过APB1ENR的第25位来设置。其次要设置CAN的相关引脚为复用输出,设置为上拉输入(CAN_RX),设置为复用输出(CAN_TX),并使能PA口的时钟。
2、
先设置CAN_MCR寄存器的INRQ位,让CAN进入初始化模式,然后设置CAN_MCR的其他相关控制位,再通过CAN_BTR设置波特率和工作模式(正常模式/环回模式)等信息。最后设置INRQ为0,退出初始化模式。
3、
设置CAN_FMR的FINIT位,让过滤器组工作在初始化模式下,然后设置滤波器组0的工作模式以及标识符ID和屏蔽为。最后激活滤波器。并退出滤波器初始化模式。如果用到中断,还要配置中断模式。
配置系统时钟和引脚不用做过多的说明了,每一个例程基本上都有所包含。
重要的一点事如何设计CAN的工作模式和波特率。
当CAN进入初始化之后,先设置CAN_MCR的控制位。见下面的图
用来控制这些设置。
接下来是设置寄存器CAN_BTR,通过这个寄存器来设置CAN的工作模式和波特率。
寄存器描述
程序代码
mode用来设置模式,普通模式或者回环模式。
而下面的四个用来设置波特率,tsjw tbs2 tbs1 brp
这四个参数是怎么来决定CAN的波特率的呢?
然后使CAN退出初始化模式
然后再初始化过滤器
然后就可以开始进行通讯了。
待续
STM32CAN应用尝 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)