• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > CAN总线技术学习(二)

CAN总线技术学习(二)

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了CAN总线技术学习(二)等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:CAN总线技术学习(二)
描述:

现场总线CAN总线

CAN总线信息以帧的形式传输,每个帧包括多个段:起始位SOF、仲裁段、控制段、数据段、CRC校验、确认位、结束位等,各个段依次串行被传输到总线上。起始位、CRC校验、确认位和结束位由控制器硬件自动生成,软件可以配置仲裁段、控制段和数据段的内容。每个CAN帧最多发送数据段长度为8个字节即64位。
CAN总线协议有两种:CAN2.0A和CAN2.0B协议,CAN2.0A支持帧ID为11位的标准帧,CAN2.0B协议支持帧ID为11位的标准帧和帧ID为29位的扩展帧,如图1和图2所示。
 can总线原理,can总线协议,汽车can总线,can总线电路,can总线技术,can总线论文,can总线接口,can总线控制器,can总线简介,can总线分析仪,can总线的应用,can总线和rs485,can总线设计,can总线系统,can总线通讯
图1 CAN标准帧
 can总线原理,can总线协议,汽车can总线,can总线电路,can总线技术,can总线论文,can总线接口,can总线控制器,can总线简介,can总线分析仪,can总线的应用,can总线和rs485,can总线设计,can总线系统,can总线通讯
图2 CAN扩展帧
下面解释几个CAN总线问题:
位填充:上述图中都提到位填充的问题,即当发送的一帧CAN信息中出现连续5个相同位时,控制器会自动填充一个相反的位进去,控制器接收一帧CAN信息时发现5个相同的位,也会自动把其后的一个翻转位去掉。那么可能我们会问为什么要做这种看似无用的操作呢?因为CAN总线通讯属于异步通讯,虽然通讯双方约定设定相同的波特率通讯,但是每一位(bit)的宽度也不可能绝对相同,多个相同的位累积起来可能出现较大的误差,造成接收信息出错,那么如何解决这个问题呢?CAN协议中规定在位跳转时要做同步补偿,那么这样可以消除多个位累积造成的错误,但是如果CAN帧信息连续出现多个0或1,接收方没办法监测到翻转位,不能做出正确的补偿,可能导致发送方发了10位0,接收方监测出11个0出来的情况出现,所以当发送方连续发送5个0时,要位填充一个1进去,然后再发送下面的位,而接收方接收到5个0后接收到下面的1可以做出相应的同步补偿,同时要丢弃这个填充位。按照CAN协议规定如果在CAN信息中接收到连续6个以上的相同位被认为是错误信息,CAN控制器错误计数加1。
CAN协议:如上图所示,标准帧标识符(帧ID)有11位,扩展帧标识符(帧ID)有29位,CAN2.0B协议也兼容CAN2.0A协议,可以同时识别标准帧和扩展帧。标准帧和扩展帧的区别在于IDE位,IDE为0时表示标准帧,IDE为1时表示扩展帧。
CAN信号:CAN总线使用一对差分信号通讯,即CAN_H和CAN_L,通过识别它们的压差获取0或1的信息,上电后两个信号对地都会有一定的电压,即V_CANH和V_CANL,通过判断V_CANH-V_CANL识别信息,总线信号分为显性(压差为1V以上,也即数字0)和隐性(压差小于0.5V,也即数字1)。一般在没有数据通讯时V_CANH和V_CANL都为2.5V,所以CAN总线默认为没有压差(隐性,数字1),当有起始位SOF(数字0,显性)时每个网络上的节点都能监测到,准备接收信息,如图3所示。
 can总线原理,can总线协议,汽车can总线,can总线电路,can总线技术,can总线论文,can总线接口,can总线控制器,can总线简介,can总线分析仪,can总线的应用,can总线和rs485,can总线设计,can总线系统,can总线通讯
图3 CAN总线电压示意图
逐位仲裁机制:CAN节点发送的信息都会被自己接收并判断。当CAN总线上两个节点同时发送CAN信息时,CAN节点也会比较自己发送的数据和接收的数据是否一致,由于CAN信号有显性(数字0,压差大于1V)和隐性(数据1,压差小于0.5V)两种,当一个节点发送0而另一个节点发送1时,总线表现为显性0,那么发送1的节点监测到后知道发送总线冲突,自动退出发送,所以可以看出,CAN总线信息小的优先级高。通过这种方式可以实现非破坏性逐位仲裁,优先级高的节点正常发送,不受任何影响。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-05 如何获得Lua表中的entry数?
  • 2017-06-05 winCE6用VS2005(C++)编程,在rc文件中拖拽微调按钮,程序直接退出
  • 2017-06-05 一年打印机驱动能卖多少钱?
  • 2017-06-05 求问短距离内定位能用什么模块
  • 2017-06-05 如何用单片机通过wifi模块发送大量数据给服务器
  • 2017-06-05 MSP430中断里可以有返回值返回到主函数里面吗
  • 2017-06-05 zigbee与51单片机怎么连接?
  • 2017-06-05 OK6410+摄像头采集图像+wifi传入电脑
  • 2017-06-05 dspbuilder110配置问题
  • 2017-06-05 CC2530驱动1602

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • STC89C52串口读回数据的问题
    • Windriver1020版本USB驱动发布问题(100分)(线上帮助解决愿意支付200元,北京现场帮助解决愿意支付人民币400元)
    • 想在虚拟机安装MACOS,如何找到MACOS的IOS文件?
    • 该用什么调试工具?
    • 如何使用DDK的bulkusb例子进行双机器调试?
    • exe文本编辑来改变运行结果的问题?
    • 关于AT24c02的问题
    • 关于2003server不能联网问题急!
    • 求主板维修资料,谢谢!
    • 嵌入式下蓝牙该如何进行开发,求高手指点

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有