can总线(五)

目录

[资源分配规则1 - 先占先得:](#资源分配规则1 - 先占先得:)

[资源分配规则2 - 非破坏性仲裁:](#资源分配规则2 - 非破坏性仲裁:)

非破坏性仲裁过程:

数据帧和遥控帧的优先级:

标准格式和扩展格式的优先级:

​编辑标准遥控和扩展格式的优先级:


CAN总线只有一对差分信号线,同一时间只能有一个设备操作总线发送数据,若多个设备同时有发送需求,该如何分配总线资源?

解决问题的思路:制定资源分配规则,依次满足多个设备的发送需求,确保同一时间只有一个设备操作总线

资源分配规则1 - 先占先得:

·若当前已经有设备正在操作总线发送数据帧/遥控帧,则其他任何设备不能再同时发送数据帧/遥控帧(可以发送错误帧/过载帧破坏当前数据)

·任何设备检测到连续11个隐性电平,即认为总线空闲,只有在总线空闲时,设备才能发送数据帧/遥控帧

·一旦有设备正在发送数据帧/遥控帧,总线就会变为活跃状态,必然不会出现连续11个隐性电平,其他设备自然也不会破坏当前发送

·若总线活跃状态其他设备有发送需求,则需要等待总线变为空闲,才能执行发送需求

资源分配规则2 - 非破坏性仲裁:

·若多个设备的发送需求同时到来或因等待而同时到来,则CAN总线协议会根据ID号(仲裁段)进行非破坏性仲裁,ID号小的(优先级高)取到总线控制权,ID号大的(优先级低)仲裁失利后将转入接收状态,等待下一次总线空闲时再尝试发送

·实现非破坏性仲裁需要两个要求:

线与特性:总线上任何一个设备发送显性电平0时,总线就会呈现显性电平0状态,只有当所有设备都发送隐性电平1时,总线才呈现隐性电平1状态,即:0 & X & X = 0,1 & 1 & 1 = 1

回读机制:每个设备发出一个数据位后,都会读回总线当前的电平状态,以确认自己发出的电平是否被真实地发送出去了,根据线与特性,发出0读回必然是0,发出1读回不一定是1

非破坏性仲裁过程:

数据位从前到后依次比较,出现差异且数据位为1的设备仲裁失利

1和2同时发送0;总线电平0;1和2回读0;正常发送,继续下一位

1和2同时发送1;总线电平1;1和2回读1;正常发送,继续下一位

1发送0,2发送1;总线电平0(线与);1回读0,2回读0;2发送1但回读到0知道有其他设备在抢用总线,于是仲裁失利,变为接收状态工作

1发送1,2发送0;总线电平0(线与);1回读0,2回读0;1发送1但回读到0知道有其他设备在抢用总线,于是仲裁失利,变为接收状态工作

数据帧和遥控帧的优先级:

数据帧和遥控帧ID号一样时,数据帧的优先级高于遥控帧

因为仲裁阶段包括RTR位,数据帧的RTR为0,遥控帧的RTR为1

标准格式和扩展格式的优先级:

标准格式11位ID号和扩展格式29位ID号的高11位一样时,标准格式的优先级高于扩展格式(SRR必须始终为1,以保证此要求)

因为标志数据帧的RTR为0,扩展数据帧的SRR为1

标准遥控和扩展格式的优先级:

因为两者的仲裁阶段都一样,但是后面的IDE位不一样,虽然说标准遥控帧已经过了仲裁阶段,但是扩展数据帧还没有,所以还可以仲裁,标准遥控帧IDE为0,扩展数据帧为1,所以标准遥控帧先执行

相关推荐
揽星河..25 分钟前
【C语言】指针
c语言·开发语言
何粥学1 小时前
Vivado 2024.2 开发记录(AC820 Zynq-7020)——软件使用,点亮led灯
单片机·嵌入式硬件·zynq
Sakura_j_h_2 小时前
51 单片机驱动四位数码管:动态扫描、限流电阻与消影的取舍
单片机·嵌入式硬件·51单片机·嵌入式·数码管·动态扫描·限流电阻
蹊黎14 小时前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
爱聊灵光的维C17 小时前
从看见世界到重构认知:在视觉与硬件的交汇处,寻找我们这代人的北极星
c语言·物联网·计算机视觉·重构·硬件工程·射频工程
AI+程序员在路上17 小时前
RV1126B 上支持的模型及全流程应用--从CNN及语音到 LLMVLM 与跨平台选型
linux·c语言·人工智能
Zw-awa18 小时前
从 CPU 搬运到自动搬运:DMA、空闲中断和两块缓冲
stm32
揽星河..18 小时前
【C语言】扫雷游戏
c语言·算法·游戏
无敌贵点大王18 小时前
从寄存器层面重学STM32(6)——串口USART实战部分
stm32·单片机·嵌入式硬件
庙堂龙吟奈我何18 小时前
二进制和十六进制
stm32·单片机