本帖最后由 hello、C 于 2020-7-10 10:41 编辑
关于CAN2.0A(PART A) CAN2.0B(PART B)协议的一些基本概念,在此不再叙述,请参考:CAN2.0A及CAN2.0B通信协议。
这几天简略阅读了Autochips MCU AC7801X型的芯片参考手册,并详细阅读了CAN章节及其例程程序(ac7801xmoduleapplicationnotes0616 -> CAN -> SampleCode -> CAN_sample)。
对CAN的学习总结如下:
1.针对CAN通信,主要包含三个组件,MCU、内嵌在MCU的CAN外设、CAN收发器。
① MCU:MCU通过APB总线访问CAN外设。
② CAN外设:挂载在MCU的APB总线上,实现基本协议CAN2.0A、扩展协议CAN2.0B、接收滤波器、发送优先级及对CAN FD的支持等,并留出外设访问接口给MCU,以便MCU控制。
③ CAN收发器:看其收发器框图,因仅包含CANH、CANL总线,所以TXD发出的CANH、CANL与RXD读出的CANH、CANL是连接在一起的,因此CAN收发器TXD发送出来的总线信号会立即被转换从RXD输出给CAN接口(LBME环回模式使用此特性)。关于收发信号的转换特性,请参考:CAN收发器参考手册。
④ 三者之间的联系,可以引用AC7801X型的芯片参考手册关于CAN的一张图(CAN总线连接及CAN_CTRL内核主要功能示意图)说明一下。如图所示:
MCU通过APB总线访问CAN外设,通过配置相关寄存器配置CAN的运行环境,通过写BUF及相关配置位发送CAN帧;通过轮询某些状态位或者中断,读取收到的BUF或者CAN外设目前处于的状态,并依据部分状态作出相应的动作;CAN收发器将CAN外设的CAN_TX高低电平信号转换为CANH、CANL总线信号,并将接收到的CANH、CANL总线信号转换为CAN外设的CAN_RX高低电平信号,该信号输送给CAN外设,CAN外设根据CAN接收滤波器的设置判断是否接收该数据帧等等。
2.CAN特性,厂家已经总结的非常好了,如图所示:
3.例程说明
① CAN使用正常模式,500kHz波特率,CAN收发器拉低,CAN收发器运行在正常模式。如图所示:
②CAN使用扩展模式,数据帧长度为8字节,发送ID为0x430,使用STB模式单次发送数据帧。如图所示:
③CAN发送时间管理:2s内每隔100ms,发送一次同样内容的数据帧,发送数据帧的同时,以10Hz闪烁LED2.然后停止2s后,再进行重复操作。
4.参考与引用
① CAN2.0 PartA PartB.
②
TJA1044.pdf
(232.21 KB)
③
ATC_AC7801x_ReferenceManual_CH.pdf
(4.41 MB)
④
AC7801x_LQFP48_COMMON_V10.pdf
(217.65 KB)
⑤ CAN_Sample 例程
5.测试效果图
|
烧录给的CAN_Sample,跟上位机通讯不上呢,波特率是配置的500kbps