STM32的CAN总线使用指南

STM32的CAN总线使用指南

ID:38268190

大小:21.76 KB

页数:4页

时间:2019-06-07

STM32的CAN总线使用指南_第1页
STM32的CAN总线使用指南_第2页
STM32的CAN总线使用指南_第3页
STM32的CAN总线使用指南_第4页
资源描述:

《STM32的CAN总线使用指南》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、CAN基本知识:CAN协议的特点:1、多主机控制。在总线空闲时,所有单元都可以发送消息,若两个以上同时开始发送消息,根据标识符来决定优先级。优先级高的先发送。2、系统的若软性。与总线相连的单元没有类似地址的信息。因此在总线上增加单元时,应用层程序基本不需要改变。3、通信速度快,通信距离远。最高1Mbps(距离小于40M),最远可达10Km(速率低于5Kbps)。4、具有错误检测、错误通知和错误恢复功能。所有单元都可以检测错误,检测出错误的单元会立即同时通知其他所有单元,正在发送消息的单元一旦检测出错误,会强制结束当前的发送。前置结束发送的单元会不断反复地重新发送该消息直到发

2、送成功。5、故障封闭功能。CAN可以判断出错误的类型是总线上的数据错误还是持续的数据错误。由此功能,当总线上发生持续数据错误时,可以将引起此故障的单元从总线上隔离出去。6、连接节点多。CAN总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。单实际上受到时间延迟和电气负载的限制。降低通信速度,可连接单元增加。反之,反之。STM32的CAN时间特性(有关波特率):与CAN2.0B的协议内容相比,STM32的CAN时间特性稍微有些区别。STM32把传播时间段和相位缓冲段1合并了,因此STM32的CAN一个位只有3段:同步段(SYNC_SEG)、时间段1(BS1)

3、和时间段2(BS2)。STM的BS1段可以设置为1-16个时间单元,刚好等于传播时间段和相位缓冲段1之和。波特率=1/正常的位时间正常的位时间=1×tq+tbs1+tbs2其中:tbps1=tq×(TS1[3:0]+1)tbps2=tq×(TS2[3:0]+1)tq=(BRP[9:0]+1)×tpclktq是一个时间单元tpclk是APB时钟的时间周期因此,我们只需要知道BS1和BS2的设置,以及APB1的时钟频率(一般为36MHz),就可以方便的计算出波特率。比如设置TS1=6,TS2=7和BRP=4,在APB1频率为36MHz的条件下,即可得到CAN通信的波特率=360

4、00/[(7+8+1)*5]=450Kbps。要用到的寄存器:主控制寄存器CAN_MCR:控制进退初始化,发送FIFO优先级。时序寄存器CAN_BTR:用来设置分频、Tbps、Tbs2以及Tsjw等非常重要的参数,直接决定了CAN的波特率。另外还可以设置工作模式(静默模式、环回模式)等。发送邮箱标识符寄存器CAN_TIxR:该寄存器用来设置标识符(包括扩展标识符),另外还可以设置帧类型。发送邮箱数据长度和时间戳寄存器CAN_TDTxR:用来设置数据长度。发送邮箱低字节数据寄存器CAN_TDLxR:用来存储将要发送的数据,只能存储低4个字节。发送邮箱高字节数据寄存器CAN_T

5、DHxR:用来存储将要发送的高4个字节。接收FIFO邮箱标识符寄存器CAN_RIxR:该寄存器用来保存接收到的报文标识符等信息,通过读该寄存器获取相关信息。接收FIFO邮箱数据长度和时间戳寄存器CAN_RDTxR;接收FIFO邮箱低字节数据寄存器CAN_RDLxR;接收FIFO邮箱高字节数据寄存器CAN_RDHxR,同发送。过滤器模式寄存器CAN_FM1R:设置各滤波器组的工作模式,对28个滤波器组的工作模式,都可以通过该寄存器设置,不过该寄存器必须在滤波器处于初始化模式下才可以设置。过滤器位宽寄存器CAN_FS1R:用于设置各滤波器组的位宽。其他同上。上述两个寄存器用来设

6、置过滤器。如FSCx=1,FBMx=0:那么其中第x个寄存器组就被设置为1个32位过滤器-标识符屏蔽,此时本滤波器组可以设置成1个过滤器。(见参考手册P432)如FSCx=1,FBMx=1:那么其中第x个寄存器组就被设置为2个32位过滤器-标识符列表,此时本滤波器组可以设置成2个过滤器。如FSCx=0,FBMx=1:那么其中第x个寄存器组就被设置为2个16位过滤器-标识符屏蔽,此时本滤波器组可以设置成2个过滤器。如FSCx=0,FBMx=0:那么其中第x个寄存器组就被设置为4个16位过滤器-标识符列表,此时本滤波器组可以设置成4个过滤器。28个过滤器组可以被设置为远大于28

7、个过滤器数目。每个FIFO各自对其关联的过滤器进行编号。过滤器组关联设置通过寄存器CAN_FFA1R即过滤器FIFO关联寄存器来设置。过滤器激活寄存器CAN_FA1R:该寄存器来控制过滤器的激活与否。1开启0关闭。过滤器组i的寄存器xCAN_FiRx:用来存放过滤参数。STM32CAN总线初始化步骤:1、配置相关引脚的复用功能,使能CAN时钟。使能CAN时钟,通过APB1ENR的第25位来设置。其次要设置CAN的相关引脚为复用输出,设置为上拉输入(CAN_RX),设置为复用输出(CAN_TX),并使能PA口的时钟。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。