[学习笔记]

AC781X CAN模块应用笔记

[复制链接]
2722|4
手机看帖
扫描二维码
随时随地手机跟帖
TechHolder|  楼主 | 2019-7-25 15:39 | 显示全部楼层 |阅读模式
本帖最后由 TechHolder 于 2019-8-8 23:04 编辑


AC781X CAN模块应用笔记


1 CAN模块介绍
1.1 CAN特性

    1. 支持CAN2.0A/CAN2.0B标准
    2. 支持高达1Mbit/s的可编程比特率
    3. 9个接收缓冲区,先进先出规则(FIFO)
    4. 两级发送缓冲区,主发送缓冲区(PTB)只有一个消息缓冲区,次发送缓冲区(STB)则有5个消息缓冲区
    5. 16个可独立编程的29位接收过滤器
    6. 扩展状态与错误报
    7. 可配置的中断资源
    8. 带集成式低通过滤器的可编程唤醒功能


1.2 CAN通用操作
1.2.1 接收缓冲区

可设置接收过滤器过滤不需要的数据,以减少MCU的负载。只有经过接收过滤器检查的数据,才会将其缓冲到接收缓冲区中(RB)。接收缓冲区可容量最多9帧CAN数据,并具有FIFO行为,即先进先出,当接收缓冲区满后,可配置最新数据覆盖最旧数据或者最新数据直接丢弃。
当接收缓冲区已满或已经达到配置的“几乎满”限制时,CAN模块会在接收每帧数据时产生中断。

1.2.2 发送缓冲区
主发送缓冲区(PTB)具有高优先级,但只能缓冲一帧数据。次发送缓冲区(STB)优先级较低,但可以在FIFO或优先级模式下运行;可使用STB发送一帧或发送所有的数据,在FIFO模式下,首先发送最先进入缓冲区的数据,在优先级模式下,首先发送该缓冲区内ID优先级最高的数据。
主发送缓冲区的数据始终比次发送缓冲区的数据的优先级高。
请求发送主发送缓冲区的数据时,如果正在发送次缓冲区中的某一帧数据,那么则要等待该帧发送完成后,才开始发送主发送缓冲区的数据。

1.2.3 总线关闭
当CAN的发送错误计数器超过255,则自动进入“BUSOFF”状态,如果使能了BEIE,一旦产生BUSOFF故障,就会立即产生对应的中断,并且会将BUSOFF置位;从BUSOFF状态恢复到正常情况有2种途径,重新初始化CAN模块或接收到128组11bit的隐形位后自动恢复,目前车身控制使用最多的还是手动对CAN模块进行初始化,以让其进入正常模式工作。

CAN_H或者CAN_L对VCC或对GND短接、CAN_H与CAN_L短接都会导致CAN BUSOFF。

1.2.4 波特率与采样点
使用CAN传输数据时,波特率与采样点是两个非常关键的设置。
CAN_1.png
图1-1 CAN位时定义
上图展示的就是1bit的时间组成,在AC781x的CAN模块中,直接定义成了segment1与segment2,segment1结束时就是采样点。
BandRate = (48M / (S_PRESC + 1) / ((S_SEG_1 + 2) +(S_SEG_2 + 1))).
tSeg1 = (S_SEG_1 + 2); tSeg2 = (S_SEG_2 + 1).

SamplePoint = (tSeg1 / (tSeg1 + tSeg2)).

1.2.5 休眠唤醒
MCU进入休眠之后,CAN模块接收数据能够唤醒MCU
表1-2 CAN支持唤醒低功耗模式
CAN_2.jpg
在进入休眠模式之前,需要对唤醒源进行配置。在ATC_AC781x_ReferenceManual_CH第6章“系统电源管理”中有描述,在寄存器REG_EN_PERIPH_WAKEUP中使能期望的唤醒源,CAN模块默认是禁能状态。调用库SPM_EnableModuleWakeup(SPM_MODULE_CANx)使能CAN模块唤醒,就能将MCU从休眠模式中唤醒,Standby模式除外。


2 驱动库
2.1 寄存器驱动


3 例程介绍
3.1 总述
共3个子例程用以阐述CAN的各种功能使用,包括基本收发数据,CAN 总线关闭恢复,CAN唤醒休眠MCU,每个子例程对应一个宏定义,通过修改CAN_SAMPLE_SEL选择不同的子例程。

3.2 例程功能概述
表3-1 例程功能描述
CAN_3.jpg
在3个子例程中,通过RECV_FRM_KIND_SE选择接收数据类型ONLY_RECV_STD_FRM,ONLY_RECV_EXT_FRM,RECV_STD_EXT_BOTH_FRM。

欢迎各位坛友指正,后续会根据问题持续更新。




CAN_Sample.rar

3.07 MB

使用特权

评论回复

相关帖子

lvhaoguang| | 2021-3-12 10:34 | 显示全部楼层
收藏

使用特权

评论回复
wwddgod| | 2021-5-13 13:22 | 显示全部楼层
autoreset 设置为真也不能自动恢复吗

使用特权

评论回复
guijial511| | 2021-5-17 18:06 | 显示全部楼层
收藏,感谢楼主的分享。

使用特权

评论回复
单片小菜| | 2021-5-18 09:40 | 显示全部楼层
感谢楼主的分享,不错的感觉。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

219

帖子

3

粉丝