CAN

瑞萨RA MCU(Renesas RA Microcontroller Unit)是一种高性能且多功能的微控制器单元,由瑞萨电子公司推出。它是基于ARM Cortex-M内核的先进微控制器系列,专为满足广泛的嵌入式应用需求而设计。

RA MCU系列提供了广泛的产品线和内核选项,以满足不同级别、成本和性能要求。这些微控制器单元集成了丰富的外设和功能模块,包括模拟转换器、数字输入输出(GPIO)端口、通信接口(如UART、SPI、I2C)以及定时器等。这使得RA MCU具备了出色的通信能力、数据处理和控制性能,适用于各种行业和应用领域。

除了以上通信接口,RA中多款MCU还配备了CAN或者CANFD模块。RA MCU中的CAN(Controller Area Network)和CANFD(Controller Area Network with Flexible Data Rate)模块是用于实现高性能数据通信的重要功能。

CAN是一种广泛应用于汽车、工业控制和物联网等领域的串行通信协议。其特点是具有高可靠性、抗干扰能力强和可扩展性好。CAN通信使用两根差分信号线(CAN_H和CAN_L),以确保可靠地传输数据。RA MCU的CAN模块支持标准CAN协议,具备多个接收和发送FIFO缓冲区,用于存储收发的CAN帧。它还提供了灵活的过滤和接收模式选择功能,能够满足不同应用的数据传输要求。

而CANFD是对传统CAN协议的扩展,能够以更高的速率传输数据和更大的数据负载。CANFD模块可以在CAN和CANFD之间进行切换,以适应不同的通信需求。与CAN相比,CANFD具有更高的数据传输速率和更大的数据帧长度,提供了更大的灵活性和性能。RA MCU的CANFD模块支持CAN2.0B和CANFD的协议规范,能够在高速、高负载的应用场景下提供可靠的数据通信。它具备更大的接收和发送FIFO缓冲区,以适应更高速率、更大负载的数据传输。同时,CANFD模块还提供了更丰富的过滤和接收模式配置选项,以满足不同应用的需求。

RA MCU中的CAN和CANFD模块通过提供灵活而高性能的数据通信功能,使开发者能够轻松构建复杂的通信系统。无论是用于车载电子、工业自动化还是物联网设备,CAN和CANFD模块都是实现可靠数据传输的理想选择。

• 第一种:CAN模块

RA2L1、RA4M1、RA4M2、RA4M3、RA4E1、RA6M1、RA6M2、RA6M3、RA6M4、RA6T1和RA6E1中搭载这一IP,符合ISO 11898-1、CAN 2.0A、CAN 2.0B协议标准。

位速率

数据传输率可高达1 Mbps (fCAN≥8 MHz);

fCAN:CAN时钟源

Mailbox

32个Mailbox,2种模式

• 普通mailbox模式:32个mailbox,可独立配置用于发送或接收

• FIFOmailbox模式:24个mailbox,可独立配置用于发送或接收,其余Mailbox接收和发送4级FIFO

接收过滤器

8个独立接收Mask(每4个Mailbox有1个);

每个Mailbox可以独立启用或禁用Mask。

发送

支持数据帧和远程帧发送;

传输ID格式可选择仅标准ID、仅扩展ID或混合ID;

可编程一次性传输功能;

广播消息功能;

可根据消息ID或Mailbox号码选择优先模式;

支持发送请求中止,并在状态标志中确认中止完成;

每个Mailbox可独立启用或禁用传输完成中断;

接收

支持数据帧和远程帧接收;

接收ID格式可选择仅标准ID、仅扩展ID或混合ID;

可编程一次性接收功能;

可选择覆盖模式(覆盖未读消息)和溢出模式(保存未读消息);

每个Mailbox可独立启用或禁用接收完成中断。

中断功能

支持五种中断源:接收完成、发送完成、接收FIFO、发送FIFO和错误中断

CAN时钟源

PCLKB或CANMCLK

时间戳

使用16位计数器的时间戳功能;

参考时钟可选择1位、2位、4位和8位时间周期。

错误状态监测

CAN总线错误监测,包括填充错误、格式错误、ACK错误、15位CRC错误、位错误和ACK分隔符错误;

检测到错误状态的转换,包括错误警告、错误被动、总线关闭进入和总线关闭恢复;

支持读取错误计数器。

系统框图如下:

1.png

• 第二种:CANFD模块

RA6M5中搭载这一IP,符合CAN-FD ISO 11898-1 (2015) 协议标准。

位速率

仲裁阶段高达1 Mbps,数据阶段高达8 Mbps,每个CAN通道单独传输;

CAN通道数

2通道

工作时钟

外设时钟/APB时钟

50MHz(PCLKB);

RAM时钟:100 MHz (PCLKA)

数据链路层 (DLL) 时钟

最大值≤40 MHz

可选ID类型

型11位标准ID;

11位标准ID+18位扩展ID

可选帧类型

数据帧 (RTR = 0)(CAN和CAN-FD帧);

远程帧 (RTR = 1)(仅限CAN帧)

网关功能

CAN 2.0 ↔ CAN 2.0

CAN 2.0 ↔ CAN-FD网关(仅支持8字节有效载荷)

CAN-FD ↔ CAN-FD

消息缓冲区

最多16×2个接收消息缓冲区,在所有CAN通道之间共享;

每个通道16个发送消息缓冲区;

每个通道4个发送队列;

支持自动消息传输到传输队列

FIFO数量

8个接收FIFO缓冲区

多达3×2个FIFO可单独配置为:

• 接收FIFO

• 发送FIFO

• CAN ↔ CAN网关FIFO

增强的接收过滤

支持11位和29位CAN标识符;

每个条目的可编程29位CAN标识符接收过滤器Mask;

每个通道的可编程网关路由能力(最多8个路由目的地);

RTR和IDE屏蔽;

数据长度代码 (DLC) 过滤器;

消息缓冲区负载过载保护;

有效负载过滤器。

中断功能

可配置的全局RX FIFO中断:可单独配置每个FIFO、在接收到特定深度或每收到一条消息触发中断;

通道TX中断;

全局错误:数据链路校验、邮件丢失、FD有效负载溢出;

通道错误:总线错误、警告错误、被动错误、总线断开、总线断开恢复、超载、总线锁、仲裁损失、传输中止。

RAM

RAM ECC保护(2位错误检测,1位错误纠正)

掉电功能

每个CAN节点的模块启动停止功能(通道和全局睡眠模式)

TrustZone Filter

可设置一个安全属性,两个通道属性相同

系统框图如下:

2.png

• 第三种:CANFD Lite模块

RA4E2、RA4T1、RA6T2、RA6E2和RA6T3中搭载这一IP,符合CAN-FD ISO 11898-1 (2015)。

位速率

仲裁阶段高达1 Mbps,数据阶段高达5 Mbps

CAN通道数

1通道

工作时钟

外设时钟/APB时钟

最大值≤40 MHz

可选ID类型

11位标准ID;

11位标准ID+18位扩展ID

可选帧类型

数据帧 (RTR = 0)(CAN和CAN-FD 帧);

远程帧 (RTR=1)(仅限CAN帧)

消息缓冲区

最多32个接收消息缓冲区;

4个发送消息缓冲区;

1个发送队列;

支持自动消息传输到传输队列。

FIFO数量

2个接收FIFO缓冲区

1个COMMON FIFO可单独配置为:

• 接收FIFO

• 发送FIFO

增强的接收过滤

支持11位和29位CAN标识符;

每个条目的可编程29位CAN标识符接收过滤器Mask;

每个FIFO和接收消息缓冲区的可编程路由功能(最多2个路由目的地);

RTR和IDE屏蔽;

数据长度代码 (DLC) 过滤器;

消息缓冲区负载过载保护;

在通信期间更新接收过滤器列表 (AFL) 条目。

中断功能

可配置的全局RX FIFO中断:可单独配置每个FIFO、在接收到特定深度或每收到一条消息触发中断;

通道TX中断;

全局错误:数据链路校验、邮件丢失、FD有效负载溢出;

通道错误:总线错误、警告错误、被动错误、总线断开、总线断开恢复、超载、总线锁、仲裁损失、传输中止

RAM

RAM ECC保护(2位错误检测,1位错误纠正)

掉电功能

CAN节点的模块启动停止功能(通道和全局睡眠模式)

TrustZone Filter

可设置一种安全属性

系统框图如下:

3.png

目前RA MCU提供以上三种CAN&CANFD IP,请根据实际需求进行选择。如果需要在CAN总线上添加CAN节点,以上三种CAN&CAN IP均可;如果需要在CAN总线上添加CANFD节点,请选择CANFD或者CANFD Lite;如果需要用到2个通道,请选择RA6M5的CANFD。在选型或者使用过程中,若遇到问题,请联系瑞萨销售或者代理。

来源:瑞萨MCU小百科

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 29

CAN概述

CAN是Controller Area Network的缩写(以下称为CAN),它的设计目标是以最小的CPU负荷来高效处理大量的报文。1986年德国电气商BOSCH公司开发出面向汽车的CAN通信协议。此后,CAN通过ISO11898及ISO11519进行了标准化,现在在欧洲已是汽车网络的标准协议。现在,CAN的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。

CAN协议特点:

  • 多主控制:
    在总线空闲时,所有节点均可发送信息。如果出现两个及以上节点同时开始发送信息时,总线会根据标识符(Identifier以下称为ID)进行仲裁,ID越小则优先级高,则仲裁优胜,仲裁优胜的节点继续发送,仲裁失利的节点立即转入接收状态。需注意,ID并不是表示节点地址,而是指示所发送的报文的优先级。
  • 系统的灵活性:
    如上所述,与CAN总线的各节点没有类似于“地址”的信息。因此在总线上增减节点时,连接在总线上的其它节点的软硬件设计均不受影响。
  • 高可靠性:
    CAN协议具有错误检测、错误通知、故障封闭和错误恢复功能。CAN总线上的任意节点均可检测错误(错误检测);检测到错误后向总线发送错误帧以通知其他节点(错误通知);同时每个节点内部有一个错误计数功能,每次检测到错误之后,错误计数值累加,当某节点持续错误导致计数连续累加,直到大于256后,此故障节点从总线上断开,避免影响其他节点(故障封闭)。且发送节点如果在发送信息的过程中检测到错误,待错误结束后会自动重发此信息直到成功发送(错误恢复)。
  • 通信速度较快,通信距离远:
    最高1Mbps(距离小于40m),最远可达10km(速率低于5Kbps)。
  • 可连接节点多:
    CAN总线是可同时连接多个节点。节点数量理论上是没有限制的。但实际上节点数量受总线时间延迟及电气负载的限制。降低通信速度,可连接的节点数增加;提高通信速度,则可连接的节点数减少。

正是因为CAN协议的这些特点,使得CAN特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。CAN协议经过ISO标准化后有两个标准:ISO11898标准和ISO11519-2标准。其中ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准,而ISO11519-2是针对通信速率为125Kbps以下的低速通信标准。本文例程使用的是1Mbps的通信速率,使用的是ISO11898标准。

CAN协议介绍

本章主要介绍CAN的网络拓扑结构、总线物理层特性、帧类型、帧结构、位填充机制、位格式、同步机制、仲裁机制、错误处理机制等。另外还有CAN协议的更多细节请参考BOSCH CAN协议,本文不再详述。

CAN网络拓扑结构

如下图1:CAN总线由两条差分线CANH和CANL组成,各个节点通过较短的支线接入CAN总线。各节点从通信协议而言是没有主从和地址区分的,每个节点均可以平等的收发数据。另外,在CAN总线的两端各有一个120Ω的终端电阻,来做阻抗匹配,以减少回波反射。

1.png

图1 CAN网络拓扑结构

CAN总线物理层特性

如下图2:显性电平对应逻辑“0”,CANH和CANL压差2.5V左右。而隐性电平对应逻辑“1”,CANH和CANL压差为0V。在总线上,显性电平具有优先权,只要有一个节点输出显性电平,总线上即为显性电平。而隐形电平则具有包容的意味,只有所有的节点都输出隐性电平,总线上才为隐性电平。

2.png

图2 CAN总线电平特性

帧类型

如下表1,CAN包含了以下5种帧类型。其中数据帧和远程帧由用户控制收发;错误帧、过载帧和间隔帧是CAN总线上各节点硬件根据对应状态发送,用户不能也无需控制。

3.png

表1 CAN帧类型

如下图3,包含了各类型帧结构示意。

4.png

图3 CAN各帧类型

帧结构

本文仅对标准数据帧进行详细介绍,其他帧类型可参考图3与标准数据帧进行对比理解。

一帧标准数据帧包含如下部分:

帧起始:为1bit显性位。由于CAN总线空闲时是隐性电平,帧起始的显性位用于提示总线上的节点“一帧信息传输开始了”。

仲裁段:表示该帧优先级的段,包含标识符和帧类型(数据/远程帧)。

控制段:表示数据的字节数、标识符类型(标准/扩展标识符)及保留位的段。

数据段:数据,一帧可发送0~8个字节的数据(数据长度根据控制段的DLC决定)。

CRC段:发送节点将CRC计算区域(不包含填充位)进行CRC计算后放入CRC段发送。接收节点也对CRC计算区域进行CRC计算,并与收到的CRC域进行对比,若CRC对比结果有误则向总线发送错误帧,若对比结果正确则随后发送应答。

ACK段:含应答位(ACK SLOT)和应答间隔符(ACK DELIMITER)。发送节点在ACK段均发送隐性电平;接收节点如果在接收过程中没有检测到错误,则在应答位输出1bit显性电平,以通知发送节点“这帧数据被正确的接收了”。

帧结束:表示数据帧结束的段,为7bit隐性电平。

5.png

图4 CAN标准数据帧

位填充

由于CAN总线只有CANH/CANL两条差分线,没有CLK线来做同步,所以CAN是直接通过数据流中间的跳变沿来做同步的(参考下文同步机制)。而为了避免数据流中出现大段没有跳变沿的情况,CAN加入了“位填充”机制。

即发送器只要检测到位流里有5个连续相同值的位,便自动在位流里插入一相反电平的填充位。例如,原始数据流为“0000000111110001…”,经过位填充后实际输出到CAN总线的数据流为“000001001111100001…”,加下划线的位即为填充位。

位填充的范围为帧起始(SOF)~CRC域(不含CRC间隔符),参考上图4。

位格式

AT32的CAN一个bit可分为3段:

  • 同步段(SYNC_SEG)
  • 位段1(BIT SEGMENT 1),包括CAN标准里的PROP_SEG和PHASE_SEG1,记为BSEG1。
  • 位段2(BIT SEGMENT 2),即CAN标准里的PHASE_SEG2,记为BSEG2。

这些段又由Time Quantum(以下称为Tq)的最小时间单位构成。

1位分为3个段,每个段又由若干个Tq构成,这称为位时序。

1位由多少个Tq构成、每个段又由多少个Tq构成等,可以任意设定位时序。用户通过设定位时序和Tq长度来设定CAN的波特率和采样点。关于波特率和采样点设置,后文详细介绍。

各段作用及AT32的CAN可配置的Tq数见下表2:

6.png

表2 位的各段的作用

如下图5,同步段、位段1和位段2组成一个bit。BSEG1和BSEG2段交界处为采样点,即接收节点采样的时间点。

7.png

图5 位时序

同步机制

硬同步(HARD SYHCHRONIZATION):

硬同步后,内部的位时间从同步段重新开始。因此,硬同步强迫由硬同步引起的沿处于重新开始的位时间同步段之内。即下图6的理想跳变沿情况。

重新同步跳转宽度(RESYHCHRONIZATION JUMP WIDTH):

重新同步的结果,使位段1增长,或使位段2缩短。位段增长或缩短的数量有一个上限,此上限由重新同步跳转宽度给定。重新同步跳转宽度应设置于1~4Tq之间。

如下图6:

当在BSEG1段检测到下降沿,则BSEG1段增长Tdelay,当前bit整体增长Tdelay,其中Tdelay<=重新同步跳转宽度。

当在BSEG2段检测到下降沿,则BSEG2段缩短Tadvance,当前bit整体缩短Tadvance,其中Tadvance<=重新同步跳转宽度。

8.png

图6 重同步跳跃

仲裁机制

只要总线空闲,任何单元都可以开始发送报文。如果2个或2个以上的单元同时开始传送报文,那么就会有总线访问冲突。通过对ID进行逐位仲裁可以解决这个冲突。仲裁的机制确保了报文和时间均不损失。当具有相同ID的数据帧和远程帧同时初始化时,数据帧优先于远程帧。仲裁期间,每一个发送节点都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个节点可以继续发送。如果发送的是一“隐性”电平而监测到是一“显性”电平(见总线电平),那么该节点就失去了仲裁,必须立即退出发送状态并转入接收状态。

例如下图7,节点1和节点2同时发送一帧数据,ID段前几bit相同。直到红色处,节点1发送隐性电平“1”,节点2发送显性电平“0”。此时节点2仲裁优胜,继续发送,总线电平和节点2发送值一致;而节点1仲裁失利,在下一bit转入接收,后续节点1的发送引脚保持隐性电平。

9.png

图7 仲裁机制

错误处理机制

错误类型

CAN协议定义了以下5种不同的错误类型:

  • 位错误(Bit Error)
    单元在发送位的同时也对总线进行监视。如果所发送的位值与所监视的位值不相符合,则在此位时间里检测到一个位错误。AT32将位错误细分为显性位错误(发送显性位但检测到隐性位)和隐性位错误(发送隐性位但检测到显性位)。CAN节点在发送状态会出现此类错误。
    但是在仲裁场(ARBITRATION FIELD)的填充位流期间或应答间隙(ACK SLOT)发送一“隐性”位的情况是例外的——此时,当监视到一“显性”位时,不会发出位错误。当发送器发送一个被动错误标志但检测到“显性”位时,也不视为位错误。
  • 位填充错误(Stuff Error)
    如果在使用一帧报文的位填充区域(参考图4的“位填充区域”)检测到6个连续相同的位电平时,将检测到一个位填充错误。CAN节点在接收状态会出现此类错误。
  • CRC错误(CRC Error)
    CRC序列包括发送器的CRC计算结果。接收器计算CRC的方法与发送器相同。如果计算结果与接收到CRC序列的结果不相符,则检测到一个CRC错误。CAN节点在接收状态会出现此类错误。
  • 格式错误(Form Error)
    当一个固定形式的位场含有1个或多个非法位,则检测到一个格式错误。例如在CRC间隔符/ACK间隔符的位场检测到显性位,则会检测到格式错误。例外:接收器的帧末尾最后一位期间的显性位不被当作帧错误。CAN节点在接收状态会出现此类错误。
  • 应答错误(Acknowledgment Error)
    只要在应答位(ACK SLOT)期间所监测的位不为“显性”,则发送器会检测到一个应答错误。CAN节点在发送状态会出现此类错误。

错误状态

CAN节点检测到错误之后,根据不同状态和错误类型会对发送错误计数器(TEC[7:0])/接收错误计数器(REC[7:0])进行加1或加8(具体增加规则请参考BOSCH CAN协议),每正确的发送/接收一帧数据后,发送/接收错误计数器减1。因此发送/接收错误计数器值表明了CAN节点和网络的稳定程度。根据发送/接收错误计数器值,一个节点的状态会处于以下三种之一:

  • 错误主动
    “错误主动”的节点可以正常地参与总线通讯并在错误被检测到时发出主动错误标志(6个显性位)。见下图8,TEC<128且REC<128即为错误主动状态。
  • 错误被动
    “错误被动”的节点可参与总线接收和发送数据/远程帧。但检测到错误时只能发送错误被动标志(6个隐形位)。见下图8,255≥TEC>128且255≥REC>128即为错误被动状态。
  • 离线
    “离线”的节点相当于直接从CAN总线断开,不能收/发任何信息。见下图8,TEC>255即为离线状态。

AT32离线管理:AT32 CAN从离线状态恢复分两种情况:

1)当CAN主控制寄存器(CAN_MCTRL)AEBOEN位为‘0’时,需要软件请求进入冻结模式,再请求退出冻结模式,然后在通信模式下等待CAN节点RX检测到128次11个连续隐性位,随后该节点会从离线状态恢复。

2)当AEBOEN位为‘1’时,通信模式下CAN节点RX检测到128次11个连续隐性位,就自动从离线状态恢复。

10.png

图8 错误状态

AT32的CAN

AT32的CAN支持标准CAN协议2.0A和2.0B。且在兼容标准CAN协议的基础上增加了一些功能和可配置选项。其中CAN 2.0A和2.0B的主要差别在于:CAN 2.0A仅支持11bit ID,即只支持标准帧;CAN 2.0B支持11bit/29bit ID,即支持标准帧和扩展帧。

本章节主要介绍AT32 CAN的主要设计结构和使用,介绍了AT32 CAN的正常通信流程,包括发送流程、接收流程、报文过滤、波特率及采样点设置等。其他AT32 CAN相关设计,例如错误管理、中断管理等,请参考RM相关章节。

整体功能介绍

随着CAN网络节点和报文数量的增加,需要一个增强的过滤机制处理各种类型的报文,减少接收报文的处理时间,采用FIFO的方案,使得CPU可以长时间处理应用层任务而不会丢失报文。同时发送报文由硬件控制发送优先级顺序。基于以上考虑,CAN控制器提供28组位宽可配置的标识符过滤器组,2个接收FIFO,每个FIFO都可以存放3个完整的报文。共有3个发送邮箱,发送调度器决定发送优先级顺序。整个收发过程完全由硬件管理,无需占用CPU资源。

11.png

图9 AT32 CAN整体功能介绍

CAN发送流程

CAN发送流程见下图10和以下的步骤:

用户使用时只需操作1)~3)。4)~7)由硬件自动完成,无需用户代码参与,不占用CPU资源。

1)程序选择1个空置的邮箱(发送邮箱空标志TMxEF=1)

2)将需要发送的报文写入对应的空邮箱。报文内容包含:ID、帧类型、数据长度和发送数据等

3)请求发送:将CAN_TMIx的TMSR位置1

4)邮箱挂号(等待成为最高优先级)

5)预定发送(等待总线空闲)

6)发送

7)邮箱空置

注:以上步骤1)~7)只简单介绍正常发送流程,下图10中还包含取消发送、发送失败、自动/不自动重传等情况,可参考RM文件报文发送一节,这里不再详述。

下图10中标志位和操作位说明如下:

TMxTCF:请求完成标志位(发送/中止请求)

TMxTSF:发送成功标志位

TMxEF:发送邮箱空标志位

TMSR:请求发送

TMxCT:中止发送

PRSFEN:禁止自动重传(PRSFEN=1时,禁止自动重传;PRSFEN=0时,自动重传直到发送成功)

12.png

图10 CAN发送流程

CAN接收流程

CAN常用接收流程如下,即下图11的“空”和“挂号_1”两个状态间循环:

1)FIFO空

2)收到有效报文

3)进入“挂号_1”状态(FIFO内有1条有效报文的状态)

4)读取有效报文:读取接收邮箱寄存器(CAN_RFIx,CAN_RFCx,CAN_RFDTLx,CAN_RFDTHx)。

5)释放邮箱:CAN_RFx寄存器RFxR位置1。

注:用户使用时只需操作4)~5)。1)~3)由硬件自动完成,无需用户代码参与,不占用CPU资源。

有效报文:

当报文被正确接收(直到EOF域的最后一位都没有错误),且通过了标识符过滤,那么该报文被认为是有效报文。过滤器相关介绍见下一节。

而如果接收过程中用户不参与操作(即不去读取有效报文和释放邮箱),硬件流程如下:

1)收到有效报文

2)进入“挂号_1”状态(FIFO内有1条有效报文的状态)

3)收到有效报文

4)进入“挂号_2”状态(FIFO内有2条有效报文的状态)

5)收到有效报文

6)进入“挂号_3”状态(FIFO内有3条有效报文的状态)

7)收到有效报文

8)进入“溢出”状态(FIFO内有3条有效报文,丢失了一条报文,溢出标志置起)

下图11中标志位和操作位说明如下:

RFxMN:FIFO内有效报文数量(取值0~3)

RFxOF:溢出标志位

RFxR:释放邮箱

13.png

图11 CAN接收流程

过滤器

在CAN协议里,报文的ID不代表节点的地址,而是跟报文的内容相关的。因此,发送者以广播的形式把报文发送给所有的接收者。节点在接收报文时,根据ID的值决定软件是否需要该报文;如果需要,就存到接收FIFO里,用户可通过软件读取接收邮箱寄存器获取该报文;如果不需要,报文就被丢弃且无需软件的干预。

为满足这一需求,AT32 CAN控制器为应用程序提供了28个硬件过滤器组(AT32F435系列有28个过滤器组,0~27;但AT32F403A等系列只有14个过滤器组,0~13。具体请参考相应型号的RM),以便只接收那些软件需要的报文。用户配置好需要的ID后,整个过滤过程无需软件参与,不占用CPU资源。

过滤器的位宽

每个过滤器组由2个32bit的寄存器,CAN_FiFB1和CAN_FiFB2组成。通过配置CAN_FBWCFG寄存器的FBWSELx位,可以设置2个16位宽或者1个32位宽的过滤器。

32位宽的过滤器寄存器CAN_FiFBx包括:一组SID[10:0]、EID[17:0]、IDT和RTR位。

16位宽的过滤器寄存器CAN_FiFBx包括:两组SID[10:0]、IDT、RTR和EID[17:15]位。

过滤器模式

通过设置CAN_FMCFG寄存器的FMSELx位可以设置过滤器寄存器工作在标识符掩码模式或者标识符列表模式,掩码模式用来指定ID的哪些位需要与预设ID相同,哪些位无需比较,列表模式表示ID的每个位都必须与预设ID一致。

两种模式与过滤器位宽配合使用,可以有以下四种过滤方式:

14.png

图12 32位宽标识符掩码模式

15.png

图13 32位宽标识符列表模式

16.png

图14 16位宽标识符掩码模式

17.png

图15 16位宽标识符列表模式

更多CAN过滤器说明,例如CAN过滤器匹配序号,优先级规则等可参考RM文件报文过滤一节,这里不再详述。过滤器配置流程见后文案例介绍--CAN接收过滤器使用。

CAN波特率及采样点计算

如前文CAN位格式一节所述,CAN的一个bit被分为几段。其中第一段同步段(SYNC_SEG)固定为1Tq,1Tq的长度由CAN位时序寄存器(CAN_BTMG)的分频系数BRDIV[11:0]位定义;位段1(BSEG1)通过配置CAN位时序寄存器的BTS1[3:0]位,可设定为1~16Tq;位段2(BSEG2)通过配置CAN位时序寄存器的BTS2[2:0]位,可设定为1~8Tq。用户通过配置CAN时序寄存器,可设置CAN波特率和采样点,整个CAN总线上各节点的波特率和采样点一致最佳,不过由于各节点主频可能不一样,所以比较难保证波特率和采样点均一致。用户使用时应首先保证波特率一致,采样点尽量保持在较小的偏差范围内,这样CAN总线可以支持更多的节点和更长的线路。

波特率计算公式

其中

18.png

例如,bsp例程project\at_start_f437\examples\can\communication_mode:

APB时钟:APB1_CLK=144MHZ

CAN分频系数:BRDIV=12

此时1Tq=1/(144MHZ/12)=(1/12)us

同步段:SYNC_SEG=1Tq(固定不变,无需用户配置)

位段1:BSEG1=8Tq(BTS1[3:0]=7)

位段2:BSEG2=3Tq(BTS2[2:0]=2)

此时Nomal Bit Timimg=1Tq*(SYNCSEG+BSEG1+BSEG12)=1us

此时BaudRate=1/(Nomal Bit Timimg)=1/1us=1Mbps

采样点计算公式

sample point=(SYNC_SEG+BSEG1)/(SYNC_SEG+BSEG1+BSEG12)

举例同上:

此时sample point=(1+8)/(1+8+3)=75%

关于采样点设置,CAN协议并没有明确规定,但根据各厂商CAN设备使用习惯,采样点设置建议如下

表3:

19.png

表3 采样点设置建议

波特率计算工具

为方便用户波特率设定,本文介绍一个AT专用波特率计算工具:

20.png

使用步骤如下:

1) 波特率设定:高速CAN波特率最大为1M,各厂商CAN设备常用波特率为125K、250K、333K、500K、1M等。用户可根据需要设定波特率。参考下图16“波特率(Kbit/S)”。

2) CAN时钟源频率设定:参考下图16“PCLK1(MHZ)”。

3) 采样位置设置:设置完波特率后,计算工具会自动填入一个推荐的采样位置值。若实际项目中无具体限定,可保持默认设定;若项目中有具体限定,根据需求更改即可。参考下图16“采样位置(%)”。

4) 波特率偏差设定:建议在不勾选“允许波特率偏差”项,仅在没有符合要求的计算结果时,再勾选此项。由于同一CAN网络的节点波特率有误差会增大通信错误几率,建议“偏差”值设置尽量小。参考下图16“允许波特率偏差”和“偏差”。

5) 波特率配置结果选择:根据以上设定即可计算出多组结果。在页面左下角选择一项计算结果,即会在页面右下角显示对应软件代码配置,点击“复制全部”即可获得对应代码。

21.png

图16 波特率配置工具

案例1 CAN正常通信-normal模式

注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。

功能简介

实现两个CAN节点之间收发通信。

资源准备

1) 硬件环境:

两套对应产品型号的AT-START BOARD+CAN电平转化器

程序设计以bsp demo为例:

CAN1_TX(PB9)连接电平转换器的TXD;

CAN1_RX(PB8)连接电平转换器的RXD;

两个CAN节点的电平转换器的CANH和CANL分别相连。

CAN电平转换器硬件设计可参考下图:

22.png

图17 CAN电平转换器硬件设计

2) 软件环境:

project\at_start_f435\examples\can\communication_mode

软件设计

1) 配置流程

  • 配置CAN1 TX和RX pin对应的GPIO引脚
  • 配置CAN基础选项
  • 配置CAN波特率
  • 配置CAN过滤器
  • 配置CAN中断

2) 代码介绍

  • main函数代码描述

23.png

  • CAN配置函数代码描述

24.png

  • CAN发送函数代码描述
25.png
  • CAN接收中断函数代码描述
26.png
  • GPIO配置函数代码描述
27.png

实验效果

  • 如若数据传输无误,两块AT-START BOARD的LED2均会闪烁以指示收到ID=0x400的标准帧数据;LED4会持续闪烁以指示程序正常运行。

案例2 CAN接收过滤器使用

注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。

功能简介

实现报文过滤:接收需要的报文,丢弃不需要的报文。

资源准备

1) 硬件环境:

两套对应产品型号的AT-START BOARD+CAN电平转化器

程序设计以bsp demo为例:

CAN1_TX(PB9)连接电平转换器的TXD;

CAN1_RX(PB8)连接电平转换器的RXD;

两个CAN节点的电平转换器的CANH和CANL分别相连。

CAN电平转换器硬件设计可参考下图:

28.png

图18 CAN电平转换器硬件设计

2) 软件环境:

project\at_start_f435\examples\can\filter

软件设计

1) 配置流程

  • 配置CAN1 TX和RX pin对应的GPIO引脚
  • 配置CAN基础选项
  • 配置CAN波特率
  • 配置CAN过滤器
  • 配置CAN中断
2) 代码介绍
  • 设定可通过过滤的ID
29.png
  • main函数代码描述
30.png
  • CAN配置函数代码描述
31.png
  • CAN发送函数代码描述

32.png
  • CAN接收中断函数代码描述
33.png
  • GPIO配置函数代码描述

34.png

实验效果

  • 如若数据传输无误,AT-START BOARD的LED2/3/4会翻转一次,以指示收到ID=FILTER_EXT_ID1,FILTER_EXT_ID2,FILTER_STD_ID1,FILTER_STD_ID2的4帧数据。

案例3 CAN调试-loopback模式

注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。

功能简介

实现单板的环回模式通信。

环回模式(loopback mode):

环回模式可用于自测试。在环回模式下,CAN在内部把TX输出回馈到RX输入上,而完全忽略CAN_RX引脚的实际状态。因此此模式下CAN对应的GPIO引脚可以不配置,而如果对应的GPIO引脚配置了,发送的报文可以在CAN_TX引脚上检测到。见下图19。另外,为了避免外部的影响,在环回模式下CAN内核忽略确认错误(在数据/远程帧的确认位时刻,不检测是否有显性位)。

平转换器硬件设计可参考下图:

35.png

图19 CAN loopback模式

资源准备

1) 硬件环境:

一块对应产品型号的AT-START BOARD

2) 软件环境:

project\at_start_f435\examples\can\loopback_mode

软件设计

1) 配置流程

  • 配置CAN1 TX和RX pin对应GPIO(loopback模式下,此项可忽略不配置)
  • 配置CAN基础选项
  • 配置CAN波特率
  • 配置CAN过滤器
  • 配置CAN中断
2) 代码介绍
  • main函数代码描述
36.png
  • CAN配置函数代码描述
37.png
  • CAN发送函数代码描述
38.png
  • CAN接收中断函数代码描述
39.png
  • GPIO配置函数代码描述
40.png
实验效果
  • AT-START BOARD的LED2会闪烁以指示收到自己发送的ID=0x400的标准帧数据;LED4会持续闪烁以指示程序正常运行。

来源:AT32 MCU 雅特力科技

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 535

来源:ZLG致远电子 - 研发部

总线关闭是CAN节点比较重要的错误处理机制。在总线关闭状态下,CAN节点的恢复流程是怎样的?如何理解节点恢复流程的“快恢复”和“慢恢复”机制?本文将为大家详细分析总线关闭及恢复的机制和原理。

故障界定与总线关闭状态

为了避免某个设备因为自身原因(例如硬件损坏)导致无法正确收发报文而不断的破坏总线的数据帧,从而影响其它正常节点通信,CAN网络具有严格的错误诊断功能,CAN通用规范中规定每个CAN控制器中有一个发送错误计数器和一个接收错误计数器。根据计数值不同,节点会处于不同的错误状态,并根据计数值的变化进行状态转换,状态转换如下图所示。

图1 节点状态转换图情形1

以上三种错误状态表示发生故障的严重程度,总线关闭是节点最严重的错误状态。并且,节点在不同的状态下具有不同的特性,在总线关闭状态下,节点不能发送报文或应答总线上的报文,也就意味着不能再对总线有任何影响。

状态跳转和错误计数的规则使得节点在发生通信故障时有了较好的自我错误处理和恢复机制,从一种较严重的错误状态跳转到另一种严重性相对较低的状态,本质上就是一种恢复过程。图1所呈现的转换过程是CAN通用规范所要求的,我们从设备供应商买回来的CAN控制器已经把这些功能固化在硅片之中。

在通信过程中,错误主动和错误被动两种状态下节点的恢复过程一般不需要MCU进行额外的编程处理,直接使用CAN控制器固有功能即可。但对于总线关闭状态,往往不直接使用CAN控制器固有的恢复过程,而是对其进行编程控制,以实现“快恢复”和“慢恢复”机制。

注:
1、由于篇幅有限,关于错误计数的详细规则以及各状态下节点的具体特性不在本文进行讨论,读者可以查阅CAN的相关协议规范。
2、本文的“CAN控制器”是指已经实现了CAN通用协议物理层和数据链路层所要求的功能和特性的器件,如SJA1000;而“节点”是指把CAN控制器与MCU、收发器等相关器件进行整合开发出来的具有一定功能的CAN节点。

为什么需要对总线关闭状态的节点实现“快恢复”和“慢恢复”策略?

当节点进入总线关闭状态后,如果MCU仅是开启自动恢复功能,CAN控制器在检测到128次11个连续的隐性位后即可恢复通信,在实际的CAN通信总线中,这一条件是很容易达到的。

以125K的波特率为例,128*11*(1/125000)= 0.011264s。这意味着如果节点所在的CAN总线的帧间隔时间大于0.011264s,节点在总线空闲时间内便可轻易恢复通信。我们已经知道,当进入总线关闭状态时,节点已经发生了严重的错误,处于不可信状态,如果迅速恢复参与总线通信,具有较高的风险,因此,在实际的应用中,往往会通过MCU对CAN控制器总线关闭状态的恢复过程进行编程处理,以控制节点从总线关闭状态恢复到错误主动状态的等待时间,达到既提高灵活性又保证节点在功能上的快速响应性的目的。具体包括“快恢复”和“慢恢复”策略,两种策略一般同时应用。

通过以上的讨论,我们可以知道,节点进入总线关闭状态后,存在以下几种恢复情况:

  • MCU仅开启CAN控制器的自动恢复功能,节点只需检测到128次11个连续的隐性位便可以恢复通信,恢复过程如图1所示。
  • MCU没有开启CAN控制器的自动恢复功能,也不主动干预总线关闭错误,节点将一直无法“自动”恢复总线通信,只能通过重新上电的方式使节点恢复, 恢复过程如图2所示。

图2 节点状态转换图情形2

  • MCU对CAN控制器的恢复过程进行编程处理,这时,节点的恢复行为由具体的编程逻辑决定,各厂家普遍采用了先“快恢复”后“慢恢复”的恢复策略,恢复过程如图3所示。

图3 节点状态转换图情形3

MCU如何实现“快恢复”和“慢恢复”?

MCU编程实现总线关闭“快恢复”和“慢恢复”的一般过程可用以下流程图描述:

图4 MCU实现总线关闭恢复流程

节点以正常发送模式发送报文的过程中,如果出现了发送错误,发送错误计数会增加,只要发送错误计数没有超过255, CAN控制器便会自动重发报文,如果出现多次发送错误,使发送错误计数累加超过255,则节点跳转为总线关闭状态。MCU能够第一时间知道节点进入了总线关闭状态(例如在错误中断处理逻辑中查询状态寄存器的相应位),这时MCU控制CAN控制器进入“快恢复”过程,即控制CAN控制器停止报文收发,并进行等待,计时达到需要的时间T1(如100ms)后,MCU重新启动恢复CAN控制器参与总线通信,这样便完成了一次“快恢复”过程。

节点每进入一次“快恢复”过程时,MCU会对此进行计数,当节点“快恢复”计数达到设定的值N(如5次),则后续再次进入总线关闭状态时MCU把恢复总线通信的等待时间T2进行延长(如1000ms),这样便实现了“慢恢复”过程。“快恢复”和“慢恢复”过程的主要区别就在于恢复节点参与总线通信的等待时间的不同。

通过MCU对于总线关闭后的恢复行为进行编程控制,实际上是对CAN控制器的错误管理和恢复机制进行了补充,使得总线关闭状态后的恢复过程更加灵活,更能适应实际应用的需要。对于 “快恢复”和“慢恢复”的等待时间,以及“快恢复”计数多少次后进入“慢恢复”过程,不同厂家可根据具体的需求进行编程实现。

实测总线关闭恢复过程

通过广州致远电子有限公司的CAN总线分析仪的流量分析功能,可以很方便分析总线关闭后节点的恢复过程及测试“快恢复”和“慢恢复”的恢复时间。

第一步,连接DUT但先不要上电。按以下配置,使能接收干扰功能,并开启报文读取功能。

图5 功能设置

第二步,给DUT上电,并采集一段时间报文,停止采集后使用流量分析功能进行分析。

图6 采集报文并进行流量分析

第三步,鼠标放置于波形“团”(本文把包含多帧密集帧的波形称为波形“团”)之间读取恢复时间。

图7 读取恢复时间

至此,我们便可以得出结论:该DUT对总线关闭的恢复过程进行了编程控制,采用了先“快恢复”后“慢恢复”的恢复机制,节点进入总线关闭状态后,进行一次“快恢复”过程,后续进行“慢恢复”过程,两个恢复过程的恢复时间分别为27.5ms和209.5ms。

那么,我们该如何根据所得波形理解该DUT进入总线关闭状态及恢复通信的整个过程呢?

把第一个波形“团”放大得到下图:

图8 放大波形“团”观察

可以清晰的看到,波形“团”中包含共32帧CAN报文。把其余各波形“团”放大后也都是包含32帧,这里不再把详细的图片贴出来。

DUT上电后,初始发送和接收错误计数都为0。由于在测试时配置了接收干扰功能,当DUT开始发送报文后,每一帧报文都受到CAN总线分析仪的干扰而出现发送错误,第一次发送时发送错误计数加8,并自动重发,第二次发送时错误计数再加8,直到发送了32次后,发送错误计数大于255,根据图3的错误状态的转换规则,这时DUT跳转为总线关闭状态,MCU控制进入“快恢复”过程同时对“快恢复”次数进行计数,并等待约27ms后,MCU控制DUT从总线关闭状态恢复为错误主动状态,由MCU继续启动发送,由于仍然受CAN总线分析仪的持续干扰,发送32帧后再次进入总线关闭状态,再次执行“快恢复”或“慢恢复”过程,以此类推。

根据流量分析的结果可知,该DUT进入“快恢复”的计数达到1次后便执行“慢恢复”过程,“慢恢复”等待时间约为209ms。

注:
1、干扰的设置可以根据需要设置其他的参数,只要保证能对DUT发送的帧进行干扰使其出现发送错误即可。
2、为了分析完整的总线关闭恢复过程,建议DUT和CAN总线分析仪连接好后,先开启“报文读取”和“接收干扰”功能后再上电DUT。因为这样能确保DUT的接收错误计数和发送错误计数的初始计数都为0。
3、需要对DUT进行连续的干扰,否则DUT恢复后成功发送了报文,“快恢复”次数的计数会递减,这不利于分析DUT总线关闭后的整个恢复行为。
4、总线关闭后节点的“恢复”是指恢复参与总线的通信,但并不意味着恢复后一定能成功发送或接收报文。如上述案例,DUT恢复通信后由于仍然受CAN总线分析仪的干扰,导致报文发送再次失败。

总结

在总线关闭状态下,“快恢复”和“慢恢复”不是CAN控制器固有的功能,而是通过MCU的编程逻辑实现的恢复机制,是总线关闭状态下恢复过程的补充,使恢复过程更具有灵活性。

来源:ZLG致远电子 - 研发部

围观 167

一、SPI总线说明

串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口,Motorola公司生产的绝大多数MCU(微控制器)都配有SPI硬件接口,如68系列MCU。SPI 用于CPU与各种外围器件进行全双工、同步串行通讯。SPI可以同时发出和接收串行数据。它只需四条线就可以完成MCU与各种外围器件的通讯,这四条线是:串行时钟线(CSK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、低电平有效从机选择线CS。这些外围器件可以是简单的TTL移位寄存器,复杂的LCD显示驱动器,A/D、D/A转换子系统或其他的MCU。当SPI工作时,在移位寄存器中的数据逐位从输出引脚(MOSI)输出(高位在前),同时从输入引脚(MISO)接收的数据逐位移到移位寄存器(高位在前)。发送一个字节后,从另一个外围器件接收的字节数据进入移位寄存器中。主SPI的时钟信号(SCK)使传输同步。其典型系统框图如下图所示。

SPI主要特点有: 可以同时发出和接收串行数据;
• 可以当作主机或从机工作;
• 提供频率可编程时钟;
• 发送结束中断标志;
• 写冲突保护;
• 总线竞争保护等。

图2示出SPI总线工作的四种方式,其中使用的最为广泛的是SPI0和SPI3方式(实线表示):

SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果 CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。SPI总线接口时序如图所示。


什么是CAN总线?

CAN全称为Controller Area Network,即控制器局域网,由德国Bosch 公司最先提出,是国际上应用最广泛的现场总线之一。CAN 是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率、高抗电磁干扰性,而且要能够检测出总线的任何错误。当信号传输距离达10Km 时CAN 仍可提供高达50Kbit/s 的数据传输速率。

CAN 具有十分优越的特点:
A、较低的成本与极高的总线利用率;
B、 数据传输距离可长达10Km,传输速率可高达1Mbit/s;
C、可靠的错误处理和检错机制,发送的信息遭到破坏后可自动重发;
D、节点在错误严重的情况下具有自动退出总线的功能;
E、报文不包含源地址或目标地址仅用标志符来指示功能信息和优先级信息;

由于人为、自然、其它外界环境的影响和人们对公交系统的安全可靠性、真实、实时性的追求,使得我们对通信方式,通信设备有了更高的要求,基于CAN总线的网络则成为我们最佳的选择

CAN总线
 
现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。CAN(Controller Area Network)属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。较之目前许多RS-485基于R线构建的分布式控制系统而言。

基于CAN总线的分布式控制系统在以下方面具有明显的优越性:
首先,CAN控制器工作于多主方式,网络中的各节点都可根据总线访问优先权(取决于报文标识符)采用无损结构的逐位仲裁的方式竞争向总线发送数据,且CAN协议废除了站地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN总线构成的网络各节点之间的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。而利用RS-485只能构成主从式结构系统,通信方式也只能以主站轮询的方式进行,系统的实时性、可靠性较差;

其次,CAN总线通过CAN控制器接口芯片82C250的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。这就保证不会出现象在RS-485网络中,当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别节点出现问题,使得总线处于“死锁”状态。

而且,CAN具有的完善的通信协议可由CAN控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期,这些是只仅仅有电气协议的RS-485所无法比拟的。另外,与其它现场总线比较而言,CAN总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国际标准的现场总线。这些也是目前 CAN总线应用于众多领域,具有强劲的市场竞争力的重要原因。

CAN (Controller Area Network)即控制器局域网络,属于工业现场总线的范畴。与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。由于其良好的性能及独特的设计,CAN总线越来越受到人们的重视。它在汽车领域上的应用是最广泛的,世界上一些著名的汽车制造厂商,如BENZ(奔驰)、BMW(宝马)、PORSCHE(保时捷)、ROLLS-ROYCE(劳斯莱斯)和JAGUAR(美洲豹)等都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。同时,由于CAN总线本身的特点,其应用范围目前已不再局限于汽车行业,而向自动控制、航空航天、航海、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。CAN已经形成国际标准,并已被公认为几种最有前途的现场总线之一。其典型的应用协议有: SAE J1939/ISO11783、CANOpen、CANaerospace、DeviceNet、NMEA 2000等。

什么是CAN总线?
CAN意为Controller Area Network的缩写,意为控制区域网络。是国际上流行的现场总线中的一种。是一种特别适合于组建互连的设备网络系统或子系统。

2.CAN总线特点?
CAN是到目前为止为数不多的有国际标准的现场总线
CAN通讯距离最大是10公里(设速率为5Kbps),或最大通信速率为1Mbps(设通信距离为40米)。
CAN总线上的节点数可达110个。通信介质可在双绞线,同轴电缆,光纤中选择。
CAN采用非破坏性的总线仲裁技术,当多个节点同时发送数据时,优先级低的节点会主动退出发送,高优先级的节点可继续发送,节省总线仲裁时间。
CAN是多主方式工作,网上的任一节点均可在任意时刻主动地向网络上其他节点发送信息。
CAN采用报文识别符识别网络上的节点,从而把节点分成不同的优先级,高优先级的节点享有传送报文的优先权。
报文是短帧结构,短的传送时间使其受干扰概率低,CAN有很好的效验机制,这些都保证了CAN通信的可靠性。

3.CAN总线应用领域
CAN总线最初是德国BOSCH为汽车行业的监测,控制而设计的。现已应用到铁路、交通、国防、工程、工业机械、纺织、农用机械、数控、医疗器械机器人、楼宇、安防等方面。

I2C(Inter-Integrated Circuit)总线
I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。

1、I2C总线特点
I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。I2C总线的另一个优点是,它支持多主控(multimastering), 其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。

2、I2C总线工作原理
2.1、总线的构成及信号类型
I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。

I2C总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。
开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。

目前有很多半导体集成电路上都集成了I2C接口。带有I2C接口的单片机有:CYGNAL的 C8051F0XX系列,PHILIPSP87LPC7XX系列,MICROCHIP的PIC16C6XX系列等。很多外围器件如存储器、监控芯片等也提供I2C接口。

3、总线基本操作
I2C规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。 总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。

3.1、控制字节
在起始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符(不同的芯片类型有不同的定义,EEPROM一般应为1010),接着三位为片选,最后一位为读写位,当为1时为读操作,为0时为写操作。

3.2、写操作
写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。

3.3、读操作
读操作有三种基本操作:当前地址读、随机读和顺序读。图4给出的是顺序读的时序图。应当注意的是:最后一个读操作的第9个时钟周期不是“不关心”。为了结束读操作,主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后发出停止条件。

在I2C总线的应用中应注意的事项总结为以下几点 :
1)、严格按照时序图的要求进行操作,
2)、若与口线上带内部上拉电阻的单片机接口连接,可以不外加上拉电阻。
3)、程序中为配合相应的传输速率,在对口线操作的指令后可用NOP指令加一定的延时。
4)、为了减少意外的干扰信号将EEPROM内的数据改写可用外部写保护引脚(如果有),或者在EEPROM内部没有用的空间写入标志字,每次上电时或复位时做一次检测,判断EEPROM是否被意外改写。

添加:I2C 总线
在现代电子系统中,有为数众多的IC 需要进行相互之间以及与外界的通信。为了提供硬件的效率和简化电路的设计,PHILIPS 开发了一种用于内部IC 控制的简单的双向两线串行总线I2C(inter IC 总线)。I2C 总线支持任何一种IC 制造工艺,并且PHILIPS 和其他厂商提供了种类非常丰富的I2C 兼容芯片。作为一个专利的控制总线,I2C 已经成为世界性的工业标准。

每个I2C 器件都有一个唯一的地址,而且可以是单接收的器件(例如:LCD 驱动器)或者可以接收也可以发送的器件(例如:存储器)。发送器或接收器可以在主模式或从模式下操作,这取决于芯片是否必须启动数据的传输还是仅仅被寻址。I2C 是一个多主总线,即它可以由多个连接的器件控制。

早期的I2C 总线数据传输速率最高为100Kbits/s,采用7 位寻址。但是由于数据传输速率和应用功能的迅速增加,I2C 总线也增强为快速模式(400Kbits/s)和10位寻址以满足更高速度和更大寻址空间的需求。

I2C 总线始终和先进技术保持同步,但仍然保持其向下兼容性。并且最近还增加了高速模式,其速度可达3.4Mbits/s。它使得I2C 总线能够支持现有以及将来的高速串行传输应用,例如EEPROM 和Flash 存储器。

I2S总线
I2S有3个主要信号:
1、串行时钟SCLK,也叫位时钟(BCLK),即对应数字音频的每一位数据,SCLK都有1个脉冲。SCLK的频率=2×采样频率×采样位数

2、帧时钟LRCK,用于切换左右声道的数据。LRCK为“1”表示正在传输的是左声道的数据,为“0”则表示正在传输的是右声道的数据。LRCK的频率等于采样频率。

3、串行数据SDATA,就是用二进制补码表示的音频数据。I2S(Inter-IC Sound Bus)是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准。在飞利浦公司的I2S标准中,既规定了硬件接口规范,也规定了数字音频数据的格式。

I2S有3个主要信号:

1.串行时钟SCLK,也叫位时钟(BCLK),即对应数字音频的每一位数据,SCLK都有1个脉冲。SCLK的频率=2×采样频率×采样位数

2. 帧时钟LRCK,用于切换左右声道的数据。LRCK为“1”表示正在传输的是左声道的数据,为“0”则表示正在传输的是右声道的数据。LRCK的频率等于采样频率。3.串行数据SDATA,就是用二进制补码表示的音频数据。
有时为了使系统间能够更好地同步,还需要另外传输一个信号MCLK,称为主时钟,也叫系统时钟(Sys Clock),是采样频率的256倍或384倍。一个典型的I2S信号见图3。(图3 I2S信号)图3

I2S格式的信号无论有多少位有效数据,数据的最高位总是出现在LRCK变化(也就是一帧开始)后的第2个SCLK脉冲处。这就使得接收端与发送端的有效位数可以不同。如果接收端能处理的有效位数少于发送端,可以放弃数据帧中多余的低位数据;如果接收端能处理的有效位数多于发送端,可以自行补足剩余的位。这种同步机制使得数字音频设备的互连更加方便,而且不会造成数据错位。

随着技术的发展,在统一的 I2S接口下,出现了多种不同的数据格式。根据SDATA数据相对于LRCK和SCLK的位置不同,分为左对齐(较少使用)、I2S格式(即飞利浦规定的格式)和右对齐(也叫日本格式、普通格式)。这些不同的格式见图4和图5。(图4 几种非I2S格式)图4(图5 几种I2S格式)图5 


为了保证数字音频信号的正确传输,发送端和接收端应该采用相同的数据格式和长度。当然,对I2S格式来说数据长度可以不同。

SSP 总线

SSP 总线兼容SPI,SSI 和Microwire 总线的接口。

来源:电子工程专辑

围观 188

MCP2517FD使用户能够轻松转换到增强CAN FD,并从中受益

Microchip Technology Inc.(美国微芯科技公司)日前宣布,开始提供业界第一款外部CAN灵活数据速率(CAN FD)控制器。采用MCP2517FD,设计人员能够很快从CAN 2.0升级到CAN FD,受益于CAN FD增强协议。

CAN FD相对于传统的CAN 2.0有很多优势,包括更快的数据速率和数据字节消息扩展等。前沿的MCP2517FD CAN FD控制器可用于任何单片机(MCU),使开发人员能够轻松实现这一技术,而且完全不需要从新设计系统。由于CAN FD的应用和转换还处于起步阶段,因此,目前可用的CAN FD MCU数量还有限。此外,换一个系统MCU会明显增加成本,开发时间和风险也会增大。采用MCP2517FD后,系统设计人员只需添加一个外部组件就可以实现CAN FD功能,同时继续使用他们的大部分设计。

MCP2517FD还支持设计人员轻松地添加更多的CAN FD通道,这些都可以用在MCU上。

Microchip模拟、电源和接口产品部副总裁Rich Simoncic说:“从CAN 2.0向CAN FD的转换已经开始,很多汽车和非汽车设计都将受益于CAN FD增强协议。然而,设计人员在选择适合其应用的具有CAN FD功能的MCU时,却几乎找不到合适的产品。MCP2517FD外部CAN FD控制器是可行的MCU替代方案,帮助设计人员最大限度地重用硬件和固件,尽可能降低重新设计的成本和复杂性。”

关于MCP2517FD的详细信息,请访问: www.microchip.com/MCP2517FD

开发支持

MCP251XFD CAN FD主板(部件编号# ADM00576)结合MCP2517FD Click板(部件编号#MIKROE-2379)为实现CAN FD设计提供了一个简单、低成本的评估电路板。此外,还提供C语言编写的固件API,可用于快速开发应用程序。

供货

MCP2517FD-H/SL目前提供14引脚SOIC封装,支持样片和批量订购。MCP2517FD-H/JHA目前提供14引脚VQFN可湿性侧面封装,支持样片和批量订购。

如果需要了解详细信息,请联系Microchip销售代表或者全球授权分销商,也可以访问Microchip网站。如果需要购买文中提及的产品,请访问Microchip使用方便的在线销售渠道microchipDIRECT,也可以联系Microchip的授权分销合作伙伴。

围观 345
订阅 RSS - CAN