Can相关知识

Can通信是串行(串行和并行)异步(无时钟信号线)半双工(同一时间只允许一端进行通信),采用差分信号(USB、HDMI、RS485等等),CAN时钟频率是36MHz,改在挂载在APB1外设。

1.SO标准化的CAN协议

CAN 协议经 ISO 标准化后有 ISO11898 标准和 ISO11519-2 标准两种。ISO11898 和 ISO11519-2 标准对于数据链路层的定义相同,但物理层不同。

(1) 关于 ISO11898

ISO11898 是通信速度为 125kbps-1Mbps 的 CAN 高速通信标准。

目前,ISO11898 追加新规约后,成为 ISO11898-1 新标准。

(2) 关于 ISO11519 

ISO11519 是通信速度为 125kbps 以下的 CAN 低速通信标准。

ISO11519-2 是 ISO11519-1 追加新规约后的版本。

2.Can的优缺点

优点:

高可靠性:CAN协议具有出色的错误检测和错误处理机制,能自动识别并纠正通信错误,提高了系统的可靠性。

抗干扰性强:CAN采用差分信号传输,能有效抵抗外界电磁干扰,适合在噪声较大的环境中使用。

实时性强:CAN具有优先级控制,消息传输的优先级由标识符决定,确保高优先级的消息能优先传输,非常适合实时性要求高的系统。

多节点通信:CAN允许多个节点(设备)共享总线进行通信,不需要中央控制器,每个节点都可以作为发送者或接收者。

低成本:硬件实现简单且成本较低,适合大规模部署。

缺点:

带宽有限:CAN的最大传输速率为1 Mbps,虽然适用于大多数实时控制应用,但对于需要高数据带宽的应用(如视频传输),可能无法满足需求。

数据长度有限:CAN协议每个数据帧的最大有效数据长度为8字节,虽然可以通过多帧传输来弥补,但这增加了复杂性。

总线长度限制:CAN的传输距离受到速率的影响。例如,在1 Mbps速率下,传输距离通常限制在40米以内;速率降低时,传输距离可增加。

无传统的网络拓扑结构:虽然多节点通信是CAN的一个优点,但其采用的“总线型”拓扑方式在某些大型系统中可能不够灵活,且拓扑结构变化会影响通信稳定性。

3.五种帧类型

  1. 数据帧

7个组成部分:

(1) 帧起始:表示数据帧开始的段。

(2) 仲裁段:表示该帧优先级的段。

(3) 控制段:表示数据的字节数及保留位的段。

(4) 数据段:数据的内容,可发送 0~8 个字节的数据。

(5) CRC 段:检查帧的传输错误的段。

(6) ACK 段:表示确认正常接收的段。

(7) 帧结束:表示数据帧结束的段。

SOF代表起始帧,值为0(显性电平)

Identify代表ID,表示优先级,仲裁

RTR代表请求类型,0为数据帧,1为请求帧(遥控帧)

IDE代表前面ID的长度,值为0时为11位ID,值为1为29为ID,在后面18位补上,如上图所示

r0为空闲位,默认为0

DLC为数据长度,DLC的值为字节,DLC为1即1字节,8比特;DLC为8即8字节,64比特

CRC段即CRC校验码,15位,还有一位CRC界定符,值为1。CRC 顺序是根据多项式生成的 CRC 值,CRC 的计算范围包括帧起始、仲裁段、控制段、数据段。接收方以同样的算法计算 CRC 值并进行比较,不一致时会通报错误。由芯片内部can外设负责。

ACK段分ACK确认位以及ACK界定符,ACK确认位值为1为发送数据端,ACK确认位值为0为接收数据端,ACK界定符值为1。

帧结束长度为7位,每个值恒为1。

4.Can中的过滤器与接收FIFO的作用

Can中有一个主发送邮箱,两个接收FIFO,每个里面均含有三个邮箱,故一共有三个发送邮箱,六个接收邮箱

1. 过滤器(Filter)的作用:

CAN总线的过滤器用于对接收到的CAN消息进行筛选,决定哪些消息可以传递到接收缓冲区(FIFO)。CAN总线通信是多主机的,因此会有很多不同的消息传输。过滤器可以根据消息的ID(或其他参数)决定是否接收该消息,避免处理不必要的消息,从而减少系统负担。

为什么需要过滤器:

避免处理无关数据:在一个复杂的CAN网络中,不同的设备可能会发送各种类型的数据。通过过滤器,只接收对当前设备有意义的消息,减少处理和内存负担。

提高性能:如果没有过滤器,设备必须处理所有收到的消息,消耗更多的处理资源,增加系统负担。而过滤器能有效筛选出需要处理的消息,提升系统效率。

避免消息干扰:通过设置过滤规则,可以防止来自其他设备的无关消息影响设备的正常工作。

2. 接收FIFO(接收先入先出队列)的作用:

接收FIFO用于存储从总线接收到的消息队列。CAN控制器接收到的数据首先进入FIFO队列,然后由软件进行处理。FIFO是一种缓冲区,它遵循先到先服务(FIFO)的原则。

为什么需要接收FIFO:

消息缓存:CAN总线是异步的,接收方可能无法即时处理所有消息。FIFO队列能够缓存接收到的消息,确保数据不丢失。

避免丢失数据:CAN总线速率高,数据量大,如果不使用FIFO缓冲区,当接收端处理不及时时,可能会丢失数据。FIFO队列可以存储多个消息,等处理器有空闲时再逐个取出处理,避免数据丢失。

提高多任务处理能力:通过FIFO,接收端能够处理多个消息,在高负载情况下也不会丢失消息。

  1. 过滤器的两种模式

Can的过滤器有两种模式:掩码模式(IDMASK)和列表模式(IDLIST)。每个filter含有两个32位寄存器FxR1和FxR2(x代表第几个过滤器,zet6是0-13,14个)

每个过滤器可以保存两个或者四个16位数据,一个或者两个32位数据,用于过滤。

列表模式是筛选出总线上的ID,即发送的ID和过滤器内设置的ID一致时会被收入到FIFO的邮箱内,过滤出几个需要的ID。掩码模式是接收的ID位必须与掩码数据为1的位相同,才能被接受,可以接收几组ID。

一般通用为4个16位过滤器,即11位ID+RTR+IDE+默认0(3位),若发送邮箱ID为0x12,则过滤器可用0x12<<5(左移五位)来表示(左移五位相当于只表示ID的值,忽略掉RTR、IDE等内容)。

5.Can的三种工作模式以及正常模式的四种模式

Can有三种工作模式睡眠模式、初始化模式、正常模式。正常模式下又有四种测试模式:正常模式、静默模式、环回模式、环回静默模式。

静默模式下Can不能通过TX发送到Can总线上,只能从Can总线上默认接收,或者使用TX发送给自己的RX。

环回模式下Can不能通过RX接收Can总线上的信息,只能将消息发送到总线上,或者使用TX发送到自己的RX,即回环模式。

环回静默模式下Can既不能将消息发送到总线上,也不能通过总线来接收消息,只能自己给自己发送消息。、

6.Can总线的仲裁

can总线根据显性电平(逻辑0)进行优先仲裁,ID为显性电平时获得优先权,若ID一致,依据RTR位来进行仲裁,数据帧为0是显性电平,相对于遥控帧获得优先权。

7.Can的波特率计算方法

位时序:CAN的每一个位会被分成多个Tq(Time Quanta)

同步段(SS):占1个TQ

传播时间段(PTS):占1-8T个q

相位缓冲段1(PPBS1):占1-8T个q

相位缓冲段2(PPBS2):占1-8T个q

CAN波特率=APB总线频率(36M)/分频系数/(1+TBS1+TBS2)

TBS1包含了传播段与相位缓冲段1是他们的总和

36/4/18=0.5Mhz=500khz

8.Can的同步方法

Can的同步分为硬同步与再同步,Can采集电平是在相位缓冲段1与相位缓冲段2之间,同步方式分为硬同步与再同步。

1.硬同步

经过硬同步后,若发送方和接收方的时钟没有误差,则后续所有数据位的采样点必然都会对齐数据位中心附近。

2.再同步

在接收过程中检测出总线上的电平变化时进行的同步调整。

每当检测出边沿时,根据 SJW 值通过加长 PBS1 段,或缩短 PBS2 段,以调整同步。但如果发生了超出 SJW值的误差时,最大调整量不能超过 SJW 值。

9.位填充

当CAN节点发送逻辑电平(显性0或隐性1)为持续相同的5位时,它必须添加一位反向电平。CAN接收节点会自动删除这个新增的额外电平位。

1.位填充是为了防止突发错误而设定的功能。当某一个节点发生主动错误时,将把总线拉低6个bit宽度的显性电平“0”,及时向总线上其他单元汇报错误。

2.位填充是为了缩短从同步周期。重同步机制基于对隐性至显性跳变沿的评估。位填充机制保证了传输过程中有足够的跳变沿。ISO 11898-1规定,发送方在传输连续5个相同位后必须传输一个相反的位;即使连续5个相同位后本就是一个相反位,也需要添加填充位。

10.单片机的烧录方式详解(ICP、IAP、ISP)

1.ICP(In-Circuit Programming):在电路编程

ICP,全称“在电路编程”,在实际应用中通常指的是通过在线仿真器(如JTAG、ST-Link调试器)对单片机进行程序烧写的技术。ICP更侧重于调试和开发阶段,允许开发者在单片机安装到用户应用板上后,通过仿真器对芯片进行编程和调试。

特点高速烧录、硬件依赖、调试友好:ICP接口不仅用于烧录程序,还常用于调试过程,提供断点、单步执行等功能。

应用场景单片机开发阶段、专业研发环境

2.ISP(In-System Programming):在系统编程

ISP,全称“在系统编程”,是一种允许开发者在不将芯片从电路板上取下的情况下,通过特定的编程接口对芯片内部的Flash存储器进行编程的技术。在板级上进行编程,而不用把芯片拆下来放到烧写器中,即不脱离系统,所以称作“在系统编程”,它是对整个程序的擦除和写入,通过单片机专用的串行编程接口对单片机内部的Flash存储器进行编程。即使芯片焊接在电路板上,只要留出和上位机接口的串行口就能进行烧写。

工作原理(配置bootloader,串口烧写

ISP技术依赖于芯片内置的编程接口和外部编程器。开发者通过编程器将新固件数据发送到芯片,芯片内部的编程逻辑接收数据并将其写入Flash存储器中。由于无需拆卸芯片,ISP技术大大简化了固件升级流程,提高了开发效率。

3.IAP(In-Application Programming):在应用编程

IAP,全称“在应用中编程”,是一种嵌入式系统技术,允许用户程序在运行时通过微控制器的对外接口(如USART、IIC、CAN、USB、以太网接口甚至无线射频通道)对内部程序进行更新。这种技术无需中断设备的正常运行,大大提高了设备的可维护性和灵活性。目前流行的远程升级技术OTA技术(全称 Over The Air Technology,即云端下载技术,也叫做“空中下载技术”),其基础是 IAP 技术,可以简单理解为 IAP 的另一种实现方式,采用的是无线升级方式。

工作原理

IAP技术通常依赖于一个预置的Bootloader程序,该程序负责在设备启动时初始化硬件、设置内存映射,并在接收到更新指令时加载新的固件到Flash存储器中。更新过程中,Bootloader通过特定的通信接口接收新固件数据,验证其完整性和正确性后,执行Flash操作(如擦除旧固件、写入新固件)以完成更新。

三者区别:

11.bootloader和app跳转流程

单片机启动默认地址为0x0000 0000,根据boot0和boot1引脚配置选择启动地址,分为三种启动:flash启动、sram内存启动、系统存储器。正常启动会先跳转到bootloader,地址为0x0800 0000,bootloader会根据0x0800 6000param内的信息检查ota标志位,看是否需要更新,如果标志位为1则更新,标志位为0则跳转到0x08008000运行app程序。

App程序内使用串口中断来接收数据看是否需要更新,在接收到更新消息后,首先会把ota标志位置为1,然后将相关信息重新计算crc校验码,并烧入param内,然后复位重启,再重启过后进入bootloader,bootloader读取param内信息,检测到需要进行固件更新,然后通过ota进行固件升级。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值