完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
作用:将整车中各种不同的控制器连接起来,实现信息的可靠共享,并减少整车线束数量。可以设想一种极端情况,如下图所示:
如:果整车上所有的用电设备都是一个独立的CAN总线节点,并且每一个节点都向外发送自己当前的状态,并接受来自外部的信息, 那么整车的控制只需要一条CAN总线控制线和电源线就可以了! CAN总线的基本工作原理 CAN总线的通信通过一种类似于“会议” 的机制实现的,只不过会议的过程并不是由一方(节点)主导,而 是,每一个会议参加人员都可以自由的提出会议议题(多主通信模式),二者对应关系如下: CAN总线工作流程 CAN总线的优势
CAN总线网络结构 02 为何CAN收发器 照BOSCH CAN总线标准将0或1逻辑信号转换为标准中规定的电平,同时有反馈功能 CAN总线上的电平 CAN2.0A/B标准规定:总线空闲时,CAN_H和CAN_L上的电压为2.5V 在数据传输时,显性电平(逻辑 0):CAN_H 3.5V CAN_L 1.5V 隐性电平(逻辑 1):CAN_H 2.5V CAN_L 2.5V 03总线长度的思考 影响总线长度的主要因素: (1)CAN总线通信的应答机制,即成功接收到一帧报文的节点必须在 应答场的”应答间隙“期间发送一位“显性位”表示成功接收到一帧数据 如:通信速率为250Kbit/s,传送一个bit所需时间为:1/250×1000 = 4μ 那么,该信号在总线上的延时时间必须小于(2μ?)才能保证发送节点成功的在应答间隙期间接收到该“显性电平”。 任何一根导线都可以简化为左图所示的电路模型,可以看到,其中既有电感又有电容,因此,电流在其中传输并不是光速,而是需要一定的时间。 对于双绞线而言,信号在其中的传播延时时间约为,5ns/m(典型值)。当通信速率达到1Mbit/s时,40m的总线长度, 延时时间就达到200ns,而允许延时时间为600ns左右,还是不能不考虑的! 由上面的分析可知: 总线通信速率越高,通信距离越短,对物理传输线的要求就越高,在双绞线、屏蔽线还是其他的传输线选择上,通信速率是一个很关键的参数。 影响总线长度的其他因素:
CAN总线的硬件抗干扰 共模电感作用:共模电压有较大的感 抗,差模电压感抗为零,相当于电感滤波。对共模电流有较大的阻碍作用。 终 端 电阻 120 欧姆并非固定不变,这跟使用的导线有关! 总线长度的限制——位定时、同步 CAN总线控制器按照时间片的概念将每一个bit的时间划分成了n个时间片。这样做的目的就是为了实现CAN总线的同步、保证不同节点间时间的一致性。 如:晶振和CAN CLOCK,频率均为4MHz,那么每一个时间片最小时间就为0.25μs,通信波特率为250Kbit/s,那么每一个bit的时间就为4μs, 因此,每一个bit的总的时间片数目就为16。当然可以进一步提高晶振频率,使得每一个bit被划分的更加细致。 CAN2.0A/B将每一个bit的时间划分成了4段,同步段、传输段、相位段1和相位段2,每一段占用一定的时间片 Can总线报文帧结构 CAN总线共有四种报文: 1 数据帧 2 远程帧 3 错误帧 4 过载帧 数据帧定义 帧起始:1bit。从图中看出,在帧间隙后由逻辑1(至少两个bit)向逻辑 0 的跳变就被认为是帧起始,它的作用就是为了硬同步。 仲裁场:由29bit的ID标示符和IDE、SRR、RTR位构成。IDE位用于标示该帧是扩展帧(29bit ID)还是标准帧(11bit ID);SRR在扩展帧 中 为 一 隐 性 位 ;R T R 位 为 远 程 帧 标 志 位 。 由上图可以看出,11bit的基本ID首先被发送(ID28~ID18),然后在发送18bit的扩展ID(ID17~ID0) CAN总线的仲裁机制 要点 (1)首先发送ID的29位,优先级问题 (2)总线电平由谁决定 CAN总线总裁机制的实现也就实现了CAN总线的多主机模式,总线节点不存在谁主谁从的概念 注意:我们可以人为的给29位的ID赋予一定的意义从而区分不同的报文类型! 报文滤波 报文滤波可以通过软件编程的方式实现,也可以通过硬件(芯片内部的报文滤波寄存器)实现,但二者实现的原理是相同的,如下图所示: 数据帧中的其他场作用 控制场:包括两位保留位(必须为0),和数据长度位(DLC0~DLC3) 数据场:包括最多8个字节的数据 CRC场:是一种算法,对数据进行CRC校验,共15bit,其后跟了一位CRC界定符——为1(隐性电平) 应答场:为两个1(总线电平为低电平),其中一位为应答间隙,另一位为应答界定符。成功接收到数据的节点必须发送一位显性位(总线电平为高电平) 来应答该发送节点,必须注意:该显性位必须在应答间隙期间, 即1bit的时间内将总线电平拉高。帧结尾:7个连续的1组成(隐性电平) CAN总线的侦听机制—支持仲裁及错误检查 帧听就是发出去的数据再采样回来,比较采样回来的数据是否和发出的数据一致! CAN总线错误检测 CAN总线通过如下几个方面进行错误检测
注意:通过上面5种错误检测机制,发送节点和接收节点均可以检测到总线上的错误,并通过错误的累加来实现总线节点的关闭等操作 CAN总线负载率计算 计算例子: 假设CAN总线波特率为250Kbit/s,总线报文发送时间间隔为10ms, 报文为数据帧(8个字节数据),那么10ms内总线能够支持的最大报文数量为多少? 第一步:根据通信波特率计算10ms总共可以发送多少bit (250000/1000)*10 = 2500bit 第二步:计算最长的一帧报文有多少个bit 1sof + 29id + 1ide + 1rtr + 1srr + 2r + 4dlc + 8*8data + 16crc + 2ack + 7eof = 128bit 第三步:计算10ms内可以支持的报文数目 2500/128 ≈ 19 由上面的计算可知,当10ms间隔的报文数量超过19条时,就会出现丢帧,总线饱和。 计算报文数量也是设计CAN网络所要考虑的,可以查阅相关文献看负载率在多少时合适 |
|
|
|
只有小组成员才能发言,加入小组>>
663 浏览 0 评论
1083 浏览 1 评论
2456 浏览 5 评论
2784 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2619 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
639浏览 9评论
636浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
766浏览 6评论
610浏览 5评论
651浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 15:24 , Processed in 0.795163 second(s), Total 47, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号