芯片通讯接口大全(在写中)

目录

CAN通讯:

串口通讯:

iic通讯:

spi通讯:

LIN通讯:

One-Wire通讯:

SWD通讯:

JTAG通讯:

SDIO通讯:


CAN通讯:

主要应用功能:

多主机一总线:

        一条总线上每个节点都可独立的收发,并且自带仲裁机制,谁优先级高谁先通讯

数据异常校验(自动):

        can控制器会自动对要传输的数据进行计算添加crc,对要接收的数据校验crc

高传输速度:

        高达1Mbps

高抗干扰:

        使用差分信号传输

超长通讯距离:

        低速10公里,高速40米

参考资料:

CAN控制器

CAN控制器是CAN通信的“协议处理器”,负责执行CAN协议的相关操作。其主要功能包括:

  1. 数据帧处理:构建、解析和校验数据帧。
  2. 仲裁:控制多个节点对总线的访问,优先级较高的节点会先发送数据。
  3. 错误检测与处理:通过CRC、位错误检测等确保数据的完整性。
  4. 数据传输控制:发送数据帧和接收数据帧,管理FIFO缓存。

主要任务:生成、解析数据帧,处理协议层的逻辑,包括错误检测、仲裁等。

CAN收发器

CAN收发器负责物理层信号的转换。其功能包括:

  1. 信号转换:将CAN控制器发送的数字信号转换为差分信号,发送到CAN总线上;将接收到的差分信号转换为数字信号,交给CAN控制器。
  2. 总线驱动:驱动CAN总线的电平信号,保证信号稳定传输。
  3. 电平监测:监测CAN总线的状态,确保电平正常,支持高速传输。

主要任务:进行数字信号与差分信号之间的转换,确保数据可靠传输。

数据帧

数据帧用于发送实际的数据,是CAN总线中最常用的帧类型。

字段名称长度描述
起始位(SOF)1 位通知总线开始发送数据,所有节点同步检测此位。
标识符(ID)11 位(标准帧)或 29 位(扩展帧)决定消息的优先级(ID越小优先级越高)。
控制字段6 位包括帧类型(数据帧)及数据长度代码(DLC)。
数据字段0-8 字节实际发送的数据内容(标准CAN最多8字节)。
CRC 校验字段15 位用于错误检测,包括 CRC 段(14 位)和 CRC 定界符(1 位)。
确认字段(ACK)2 位由接收方发送确认信号:1 位 ACK 槽,1 位 ACK 定界符。
结束位(EOF)7 位固定为隐性位,表示帧结束。
间隔段(IFS)可变(3 位)帧间间隔段,用于节点复位和准备发送下一帧。

示例
假设数据帧发送以下内容:
标识符:0x123(标准帧,优先级高)。
数据字段:0xDE, 0xAD, 0xBE, 0xEF(4 字节)。
数据长度:4 字节(DLC = 4)。

字段名称示例值长度
起始位(SOF)01 位
标识符(ID)0b00010010001111 位
控制字段0b000001006 位
数据字段0xDEADBEEF32 位
CRC 校验字段0xABCDE15 位
确认字段(ACK)0b102 位
结束位(EOF)0b11111117 位

远程帧

远程帧用于请求其他节点发送指定标识符的数据。

字段名称长度描述
起始位(SOF)1 位通知总线开始发送远程帧。
标识符(ID)11 位(标准帧)或 29 位(扩展帧)请求数据的消息标识符。
控制字段6 位包括帧类型(远程帧)和请求的数据长度代码(DLC)。
数据字段0 字节无实际数据内容(远程帧的数据字段为空)。
CRC 校验字段15 位用于检测帧传输中的错误。
确认字段(ACK)2 位与数据帧相同,由接收方发送确认信号。
结束位(EOF)7 位固定为隐性位,标志远程帧的结束。
间隔段(IFS)可变(3 位)帧间间隔段,用于节点复位和准备。

示例
假设远程帧发送以下内容:
标识符:0x456(标准帧)。
请求数据长度:4 字节(DLC = 4)。
数据字段为空。

字段名称示例值长度
起始位(SOF)01 位
标识符(ID)0b01000101011011 位
控制字段0b000011006 位
数据字段0 位
CRC 校验字段0x1234515 位
确认字段(ACK)0b102 位
结束位(EOF)0b11111117 位

错误帧

错误帧由检测到错误的节点发送,用于通知总线上的所有节点发生了错误。

字段名称长度描述
错误标志6 位(主动)或 6 位隐性(被动)表示发生错误的节点状态。
错误定界符8 位隐性位,用于分隔错误标志与后续字段。

示例
假设发送一个主动错误帧:
错误标志:6 位显性位。
错误定界符:8 位隐性位。

字段名称示例值长度
错误标志0b1111116 位
错误定界符0b111111118 位

过载帧

过载帧用于通知总线当前节点无法处理接收数据。

字段名称长度描述
过载标志6 位连续显性位,标志总线过载状态。
过载定界符8 位隐性位,用于分隔过载帧与其他帧。

示例
假设发送一个过载帧:
过载标志:6 位显性位。
过载定界符:8 位隐性位。

字段名称示例值长度
过载标志0b1111116 位
过载定界符0b111111118 位

基本初始化可配置选项

  • 波特率(Prescaler)

    • 决定CAN总线的数据传输速率,通常为125kbps、250kbps、500kbps或1Mbps。
    • 通过时钟频率和分频器计算得到,可根据需要调整。
  • 工作模式(Mode)

    • 正常模式:普通通信模式,节点可正常发送和接收数据。
    • 回环模式:自检模式,数据不会发送到总线,而是回传到自身接收。
    • 静默模式:监听模式,只接收数据,不发送帧或参与仲裁。
    • 静默回环模式:结合回环和静默模式,用于自检和测试。
  • 同步跳跃宽度(SyncJumpWidth)

    • 定义CAN控制器在时钟不同步时允许的时间调整范围,用于提升总线的抗干扰能力。
    • 常见值为1个或2个时间量子(TQ)。
  • 时间分段(TimeSeg1和TimeSeg2)

    • 决定CAN帧的采样点位置。
    • 时间段1(TimeSeg1):采样点之前的信号处理时间,通常较长。
    • 时间段2(TimeSeg2):采样点之后的信号处理时间,通常较短。
  • 自动功能

    • 自动关闭总线(AutoBusOff):当节点错误过多时,自动从总线中断开,避免影响其他节点。
    • 自动唤醒(AutoWakeUp):当总线恢复活动时,节点可自动恢复工作。
    • 自动重传(AutoRetransmission):发送失败时自动重试,直到发送成功或达到限制。

过滤器可配置选项

过滤器用于筛选接收的CAN帧,只接收感兴趣的消息,以减少CPU的处理负担。

  • 过滤器标识符(Filter ID)

    • 定义需要接收的消息标识符,通常为11位(标准帧)或29位(扩展帧)。
  • 过滤器掩码(Filter Mask)

    • 定义标识符中哪些位需要精确匹配,哪些位可以忽略。
  • 过滤器模式

    • 掩码模式:通过掩码选择性接收消息,灵活性较高。
    • 列表模式:仅接收明确列出的标识符,精确但范围受限。
  • 过滤器位宽

    • 16位过滤器:用于较小标识符范围的筛选(如标准帧)。
    • 32位过滤器:用于更大范围或扩展帧的筛选。
  • FIFO分配

    • 定义接收的消息存储在哪个FIFO缓冲区(FIFO0或FIFO1),便于分类处理。

数据帧和发送可配置选项

发送CAN帧时需要设置帧头信息和数据字段。

  • 标识符类型

    • 标准标识符(Std ID):11位长度,适合简单网络。
    • 扩展标识符(Ext ID):29位长度,适合更复杂的网络拓扑。
  • 帧类型

    • 数据帧:用于发送实际数据。
    • 远程帧:用于请求其他节点发送指定标识符的数据。
  • 数据长度代码(DLC)

    • 定义数据字段的字节数,范围为0~8字节(标准CAN)。
  • 发送优先级

    • 通过标识符的数值控制优先级,值越小优先级越高。

接收可配置选项

接收帧时,CAN控制器会将帧解析后存入FIFO缓冲区,用户可根据需要进行处理。

  • 接收FIFO

    • CAN控制器有两个接收FIFO(FIFO0和FIFO1),可以根据过滤器分配消息存储到不同FIFO中。
  • FIFO模式

    • 锁定模式:FIFO满时丢弃新数据,保留旧数据。
    • 覆盖模式:FIFO满时覆盖旧数据,接收新数据。

错误处理可配置选项

CAN总线具有完善的错误检测和处理机制,可以配置相关选项以提高系统可靠性。

  • 错误类型检测

    • 位错误:数据位和期望值不符。
    • 填充错误:数据填充规则被破坏。
    • CRC错误:接收到的数据CRC校验失败。
    • 确认错误:未收到其他节点的ACK确认。
  • 总线关闭

    • 当节点错误过多时自动关闭,避免影响总线。
  • 错误恢复

    • 错误清除后节点可以自动恢复工作。

工作模式扩展功能选项

CAN的基本功能可以通过配置实现更多扩展功能。

  • 时间戳

    • 在发送或接收帧时记录时间信息,用于同步或调试。
  • 远程帧响应

    • 节点自动响应远程帧请求,发送对应标识符的数据帧。
  • 回环自检

    • 配置回环模式进行自测试,检查CAN硬件功能是否正常。

CAN通信协议工作原理

数据帧的构造与发送

CAN总线采用的是非破坏性仲裁基于优先级的消息传递。其数据帧由多个部分组成,包括起始位、标识符、控制字段、数据字段、CRC校验、ACK确认等。数据帧从控制器发出时,经过CAN收发器驱动到CAN总线上。

发送数据帧的过程简述如下:

  1. 数据准备:上层应用将数据送入CAN控制器,CAN控制器构建CAN帧(包括标识符、数据字段等)。
  2. 仲裁阶段:多个节点同时请求发送数据时,CAN协议会根据标识符的优先级进行仲裁。优先级越高(标识符数值越小)的节点可以优先发送数据。
  3. 发送过程:一旦仲裁成功,CAN控制器将数据帧发送到总线上。数据通过CAN收发器转换为差分信号,在总线上传输。

总线仲裁

在多节点的CAN网络中,多个节点可能同时尝试发送数据。CAN采用非破坏性仲裁机制来避免冲突。

  • 每个数据帧的标识符包含优先级信息,标识符越小,优先级越高。
  • 当多个节点同时发送数据时,它们会从标识符的高位开始比较。低优先级的节点在发现自己发送的标识符较大的时候,会立即停止发送,从而避免冲突。
  • 由于CAN总线的仲裁是基于位的(bit-wise arbitration),这使得数据传输不会丢失,也不会破坏总线的其他通信。

错误检测与处理

CAN总线采用多种错误检测机制,确保数据传输的可靠性:

  • 位错误检测:通过检测每一位的值是否符合预期来发现错误。
  • 填充错误检测:用于检测数据传输过程中是否违反了位填充规则(连续5个相同的位时,必须插入反向的填充位)。
  • CRC校验:通过对数据帧进行CRC校验,检测传输过程中是否发生错误。
  • 确认错误检测:接收节点在成功接收数据后通过ACK位进行确认。如果发送节点没有收到确认,表明数据发送失败。

在出现错误时,CAN控制器会通过错误标志告知上层应用,并根据配置执行错误处理,如重新发送数据、关闭总线等。

总线通信的典型工作流程

数据发送

  1. 数据生成:应用层或上层协议生成需要发送的数据,送入CAN控制器。
  2. 帧构建:CAN控制器将数据封装成CAN帧,包括起始位、标识符、数据、CRC校验等。
  3. 仲裁:如果多个节点同时请求发送,CAN控制器进行标识符优先级仲裁,优先级低的节点退让。
  4. 数据传输:数据帧经过CAN控制器驱动,通过CAN收发器转换为差分信号在总线上传播。
  5. 确认接收:接收节点解析数据帧,并发送ACK确认帧。如果未收到ACK确认,则重新发送数据。

数据接收

  1. 信号接收:CAN收发器接收总线上的差分信号并转换为数字信号。
  2. 帧解析:CAN控制器对接收到的数据进行解析,提取标识符、数据字段等。
  3. 错误检测:CAN控制器对接收到的数据进行CRC校验、位错误检查等,确保数据的完整性。
  4. 数据传递:如果数据帧有效,CAN控制器将数据传递给上层应用处理。


注意点:

CAN通讯的竞争,优先级等先进的功能是通过CAN控制器完成的,我们难以撰写底层的驱动程序,我们是根据芯片厂家提供的sdk寻找CAN通讯配置示例,按照同样的方式去配置CAN控制器,数据收发都是通过can控制器直接传递到芯片内存中。要注意是,这个和串口通讯是不太一样的,串口通讯或许我们还能通过配置内部的寄存器调整波特率,校验位等,但CAN通讯太复杂了,一般只能依靠厂家的写好的CAN驱动去使用,无法配置寄存器,厂家一般也不给这部分的寄存器信息。配置好CAN控制器后,我们需要收发的数据会直接出现在你设定的内存位置上面。

串口通讯:

主要应用功能:

参考资料:

注意点:

iic通讯:

主要应用功能:

参考资料:

注意点:

spi通讯:

主要应用功能:

参考资料:

注意点:

LIN通讯:

主要应用功能:

参考资料:

注意点:

One-Wire通讯:

主要应用功能:

参考资料:

注意点:

SWD通讯:

主要应用功能:

参考资料:

注意点:

JTAG通讯:

主要应用功能:

参考资料:

注意点:

SDIO通讯:

主要应用功能:

参考资料:

注意点:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值