当前位置: 首页 > news >正文

CAN总线发送方每发送一位,接收方接收一位,但是当在非破坏性仲裁方式失利的情况下是否还能够正确接收数据呢?

仲裁失败的一方重新开始接收数据时,接收到的数据是完整的,但是仲裁阶段的数据无法被正确接收,但是因为仲裁位失败的位之后会立马转为接收模式,所以前面的数据是相同的,所以就知道了。

  • 仲裁失败的节点在检测到仲裁失败后,会立即停止发送,并切换到接收模式。

详细解释

1. 仲裁阶段的本质
  • 仲裁阶段仅比较标识符(ID)
    • 在CAN通信中,仲裁阶段仅涉及消息标识符(ID)的逐位比较。
    • 仲裁失败的一方在检测到自己的位与总线状态不一致时,会立即停止发送,并切换到接收模式。
  • 仲裁阶段不传输有效数据
    • 仲裁阶段传输的是标识符位,而非有效数据。
    • 仲裁失败的一方在仲裁期间并未进入“数据场”的传输阶段,因此不会接收到任何有效数据。

2. 仲裁失败后接收的数据完整性
  • 仲裁失败后重新接收的数据是完整的
    • 一旦仲裁失败,节点会立即转为接收模式,开始监听总线。
    • 当仲裁成功的节点开始传输数据场时,仲裁失败的节点会从数据场的起始位开始接收,确保接收到的数据是完整的。
  • 示例
    • 假设节点A和B同时发送消息:
      • 节点A的ID为0x001,节点B的ID为0x002
      • 在仲裁阶段,节点B检测到自己的位与总线状态不一致,仲裁失败。
    • 仲裁结果:
      • 节点A获得总线控制权,开始传输数据场。
      • 节点B从数据场的起始位开始接收,接收到节点A发送的完整数据。

3. 仲裁阶段的数据无法被接收
  • 仲裁阶段的数据不构成有效消息
    • 仲裁阶段传输的是标识符位,而非有效数据(特殊情况是扩展数据帧与标准遥控帧的仲裁,但是也不会产生错误,因为扩展数据帧没有结束仲裁,下一位IDE会仲裁失败给标准遥控帧)
    • 仲裁失败的一方在仲裁期间并未进入“数据场”的传输阶段,因此不会接收到任何有效数据。
  • 仲裁阶段的总线状态
    • 在仲裁阶段,总线上传输的是所有参与仲裁节点的“逻辑与”结果。
    • 仲裁失败的一方在仲裁期间无法解析出任何有意义的信息。

4. 总结
  • 仲裁失败的一方
    • 在仲裁阶段无法接收到任何有效数据。
    • 仲裁失败后,会立即转为接收模式,从数据场的起始位开始接收数据。
  • 接收到的数据完整性
    • 仲裁失败的一方重新开始接收数据时,接收到的数据是完整的,因为仲裁阶段不传输有效数据。

相关文章:

  • 【C语言-全局变量】
  • Linux:进程优先级的理解
  • 对话记忆(Conversational Memory)
  • 《汽车电器与电子技术》实验报告
  • HotSpot虚拟机中对象的访问定位机制是怎样的?
  • Python实现贪吃蛇一
  • 定制一款国密浏览器(6):初识国密算法
  • sql查询时对null的处理
  • txt、Csv、Excel、JSON、SQL文件读取(Python)
  • Vuex Actions 多参数传递的解决方案及介绍
  • vivado + modelsim 仿真:Post-Synthesis Timing Simulation
  • scapy使用
  • 【产品体验】豆包大模型实时语音本地化部署及功能体验
  • 2025年第十六届蓝桥杯省赛C++ 研究生组真题
  • 第四节:React Hooks进阶篇-useEffect依赖项为空数组[]与不写的区别
  • 如何修改服务器TTL值
  • [特殊字符] 第十三讲 | 地统计模拟与空间不确定性评估
  • Devil May Cry 4 SE (鬼泣4)运行报错 【由于找不到INPUT1_3.dll,无法继续执行代码。重新安装程序肯会解决此问题。】
  • 『Kubernetes(K8S) 入门进阶实战』实战入门 - Pod 详解
  • java之多线程
  • 网站界面设计 考虑因素/在百度怎么发广告做宣传
  • 地方门户网站备案/网站seo入门基础教程书籍
  • 大型集团网站/商品推广软文范例300字
  • 广州 骏域网站建设 陶瓷/墨子学院seo
  • php网站开发方案/真正免费的网站建站平台有哪些
  • 区政府网站自查整改和制度建设/搜索引擎优化实训