趋近于完美的通讯 CAN总线!4分钟看懂!

作者: 爱上半导体分类: 计算机技术 发布时间: 2023-03-19 21:46:21 浏览:448788 次

趋近于完美的通讯 CAN总线!4分钟看懂!

BullDragon:
CAN总线和I2C(Inter-Integrated Circuit)总线都是用于设备间通信的串行通信总线协议,但两者有以下不同点: 1. 用途不同:CAN总线通常用于工业控制、汽车网络等高可靠性应用,而I2C通常用于低速控制和数据传输。 2. 速率不同:CAN总线速率可以高达1 Mbps,而I2C总线通常在400 Kbps以下。 3. 线路不同:CAN总线使用双绞线,I2C总线则可以使用双线、三线和四线架构,其中最常见的是双线架构。 4. 地址机制不同:CAN总线使用11位或29位标准帧标识符来识别设备,而I2C总线使用7位或10位设备地址来寻址。 5. 工作方式不同:CAN总线是多主机环境下的异步通信协议,而I2C总线通常在单主机环境下的同步通信协议。 总的来说,虽然CAN总线和I2C总线都是串行通信协议,但它们的应用场景和特点有所不同。

【回复】IIC一般用于同一个电路板上面不同简单传感器和模块的通信,优点是布线简单硬件开发成本低;CAN用于不同大模块之间的单片机通信,优点就是充分考虑了抗干扰设计。
【回复】“总的来说”,ChatGPT[吃瓜]
厚黑天下:
讲的和老师上课差不多,但是真到编程应用马上两眼一黑。 硬件不知道用什么,软件不知道怎么用,反过来也一样。 真的吐了。

【回复】回复 @林E梁 :ChatGPT:就算我不知道也不要紧,我可以现编一段给你[doge]
【回复】看例程,看数据手册,问ChatGPT
【回复】如果你能讲给别人听懂,你才是真的懂。
Hogan518:
借up主的视频 让大家了解一下 讲下国内一线城市比如在深圳,做机械的就是做机器设备的这样的企业 机械臂啊工业机械臂机器人类的非标定制非标设备的卷能卷的啥情况,好多上市企业都耍流氓,技术工程师加班没加班费,还是项目制,还有通宵加班的 还有加班死亡的,比如深圳市联赢激光股份有限公司2017年都加班死亡过的 机械工程师!还是上市公司,不加班扣绩效!还有深圳市科瑞技术股份有限公司 深圳市智信精密仪器股份有限公司 深圳市海目星激光股份有限公司 深圳市易天自动化设备股份有限公司 深圳市诚亿智能装备集团股份有限公司 深圳市德富莱智能装备股份有限公司 深圳市速博达自动化有限公司 深圳市联得智能装备股份有限公司 深圳市深科达智能股份有限公司 深圳市时代高科设备股份有限公司 深圳市燕麦科技股份有限公司深圳市中基自动化股份有限公司 深圳市吉阳智能科技有限公司 深圳市鼎阳智能电气有限公司 深圳市先阳新能源技术有限公司 广东利元亨智能装备股份有限公司 等等太多了 这些很多都上市公司里的工程师到底是天天加班很晚 加班没加班费 只能调休 或或者仅周日加班小部分按最低工资算加班费的,太坑了!这行业很卷都形成行业参考了,不按劳动法,你要入职按要求签规范的劳动协议,那你找不到这样的工作 入职不了,就这么卷 坑。这就是广东一线城市深圳的机械设备行业加班情况,那周边的东莞 惠州等技术工程师都加班没加班费,或者只有有加班费的但是按最低工资那那样算加班费,折算每小时时薪太低太廉价!

【回复】所以我从机械转行到嵌入式,好家伙还是天坑行业[doge]下一步该往哪转?
【回复】回复 @Cthulolz :往哪转都一样。[doge] 毕竟没有路灯可以用
【回复】制造业企业没有几个干净的,潍柴头两天灯火通明,空无一人不也火了吗?
SY梁梁:
我认为,CAN通信最精彩最精妙的部分在仲裁,视频只用了很短的篇幅。如果大家有兴趣可以查查,我第一次看到的时候眼前一亮。

【回复】仲裁内容确实很少,我理解,主要是发的每一位都要回读,只要回读到与发送的电平不一致,就停止继续发送。后面也会多一个busoff检查
【回复】回复 @王德发发发发发发发 :那要看你说的这个闭环是什么意思,仲裁是在多个节点都想往总线上发送信息的时候,决定到底由谁来发的一种机制,所以称之为“仲裁”。闭环往往是针对某一个带有输入和输出功能的系统而言的,当系统的输入当中携带了之前输出的部分信息,或者说,系统的输出经过,某些处理之后反馈回输入,我们称这种情况是闭环。在通信系统的访问冲突仲裁机制中,某些信号可能会经过反馈处理,所以在技术上可能存在一些闭环的地方,但总体而言,仲裁和闭环这两个概念还是有区别的。[脱单doge]
【回复】回复 @SY梁梁 :这个和I2C的线与仲裁机制是一样的,本质上就是显性电平抢占总线,I2C是OD门,所以输出低就能拉低总线,呈现显性
师傅不等于师父:
up终于讲到CAN了[星星眼]三连了!!! 是不是以后还可以安排一下EtherCAT?[脱单doge]据说有相通的地方又几乎全面优于CAN

【回复】ethercat成本太高了还是,最近在做这块选型,感觉看到最后还不如直接插网线
【回复】回复 @净寐 :而且居然对网卡有要求[藏狐][藏狐]
【回复】别了吧Ethercat最近搞得我头大,各种oE。一连plc全是错误。
小白猫鼬:
我一直认为CAN就是一个带协议的485而已。 直到一次,spi总线上有好几个主频不同的单片机,怎么算都配不到同一个波特率上,瞬间明白can允许不同波特率之间通讯,可真的太牛皮了。[笑哭]

【回复】can总线不允许不同波特率进行通信,如果总线上存在多种波特率应该通过其他设备转接保证总线波特率一致,如果你是主频不同波特率无法完全一致,那么波特率大致相同一般情况下也可以勉强通信,这在IIC和UART也是一样的。SPI总线有时钟线,从机不需要设定波特率
【回复】回复 @华南猫猫虫 :我说的是can波特率可以允许存在一定误差。spi那个正常情况下是如你所说,但是当主控作为从机情况下从机的波特率设置会影响数据接收,现象如乱码和部分乱码。这个手册里写的是不会影响,但跑起来确实有影响,这个我也没搞明白是为什么。后来是降低速度配了个差不多的频率,乱码现象没了。
【回复】??主频和通信总线的波特率有关么? can 总线这里,不是有个芯片进行翻译,导致读写可以异步?[疑惑] 我一直不知道单片机怎么做这里数据交互的。这里难道不是都用读取缓冲区的方法来读取数据?
朱仔村:
起始位,1位,一定是逻辑0 识别码,11位,识别信息发给哪个ECU RTR位,1位,区分数据帧或远程请求帧 远程请求帧:1 数据帧:0 控制码:6位,

【回复】回复 @寒夜清宵 :BV16t411D7m3
【回复】野火can那部分讲的非常详细,从物理层开始分析的
【回复】我觉得识别码描述得不准确,这个是识别帧的,帧的名字
一个龟仙人:
大学毕业跟导师捣鼓东西的时候听隔壁专业的老师讲过can总线,当时没接触过听得一头雾水,后来转行工作后自己研究过一阵子韦根协议,现在再看can总线就更理解了

【回复】回复 @legendaryzp :时间太久了,我这没了,都是网上各种搜的
【回复】能把韦根协议的相关资料发给我吗?我学学,我网上找不来
咔嚓很深:
哇,这种用人能听懂的话来讲解总线知识真的太好了,网上资料全是不知所谓的专有名词,看的一头雾水,越看越晕

【回复】回复 @丸鸽割 :我个人的感觉是,举个例子,作为一个连车都不知道是啥的野蛮人,我看到了路边停的一辆很酷炫的电动车,我想知道什么是电动车,然后上网去找资料,资料上不会告诉你车是四个轮子的,最早是烧油的,内燃机是什么,是在路上开的,载人行驶,为了让人更快移动的交通工具。资料会直接跟你说电动车和燃油车有什么区别,什么续航如何如何,电池采用什么技术,多么耐用,百公里加速多快,如何充电。直接看这些具体细节的东西我就有种我是谁我在哪的感觉
【回复】不是啊,有很多资料跟视频一样浅显易懂啊,你没仔细找吧。 CAN总线仅应用和简单认知来说一点不难的
【回复】动辄两三小时的讲课真听不起
Fexsi:
这里说一下线与仲裁: 假设有一根导线,这根导线通过一个阻止较大的电阻(比如4kΩ乃至10kΩ)连接在5V电源上,同时一个三级管的集电极也连在这根导线上,三极管的发射极接地,是0V。三极管的基极由其他电路控制。这个连接该导线和5V电源的电阻就叫上拉电阻。当三极管截止的时候,它的电阻可以视为无穷大,因此5V的电压几乎都施加在了三极管上,上拉电阻虽然很大,比如有10kΩ,但相比截止的三极管来说还是小了,因此没有太多压降,导线上的电压可以粗略地认为还是5V左右,是高电平。而如果三极管导通,它的电阻就非常小了,而且是饱和导通,CE电压一般都在0.3V左右,绝大部分的电压施加在了上拉电阻上,导线此时的电压也就是0.3V左右,可以粗略视为0V,是低电平。 上拉电阻因为阻值很大,因此上拉能力很弱,而下拉的三极管导通时阻值非常小,因此导通时下拉能力很强。我们能看到,当输出高电平的时候,需要下拉三极管截止,也就是断开,上拉电阻才能输出高电平;但当输出低电平的时候,在下拉三极管导通的时候,并不需要断开上拉电阻,就能输出低电平。 上面说的这个例子也可以颠倒过来,也就是导线通过大阻值电阻接地,而通过三极管接5V电源。那么这时就变成了当三极管截止时通过下拉电阻输出低电平,当三极管导通时通过上拉三极管输出高电平(但与此同时下拉电阻也并没有断开,依旧有电流流过)。 我们把三极管截止时通过拉电阻所输出的电平叫「隐性电平」,它是输出线上的默认电平;把三极管导通时输出的那个更强势的电平叫「显性电平」,它不需要让输出隐性电平的拉电阻断开,就能直接“覆盖”掉隐性电平。

【回复】此时,这些有着不同优先级的设备都使用我们上面提到的「上拉电阻+下拉三极管」的模式挂接在同一条总线上,它们高电平代表1,低电平代表0。它们在发送数据的时候会先发送自己的优先级码,从高位到地位依次发送。每发送一位的同时它们同时也检测一下那根总线上的电平,看看和自己设置的输出电平是否相同。此时如果有两个设备同时开始发送,那么当两个设备的识别码从高位到低位发送的时候,在某一位出现了不同,那么这一位发送0的那个设备的优先级码更小,优先级更高,发送1的那个设备的优先级码更大,优先级更低。因为我们前面所说的那些特性,作为显性电平的低电平会覆盖掉作为隐性电平的高电平,因此整条总线此时是低电平,也就是0。此时两个设备都检测总线上的电平是否是自己设置要输出的那个,优先级高、优先级码小的那个设备本身就要输出0,检测到总线也是0,因此继续发送;而优先级低、优先级码大的那个设备设置的输出是1,但因为1被0覆盖,它检测到总线上是0,和自己设置的1不符,因此知道同时有一个优先级更高的设备也要发送数据了,它就会停止发送数据,转为接收模式,等着看看这个数据帧是不是发给自己的。等到那个高优先级的设备发完数据,发送了明确的帧结束标志提示发送结束后,这个低优先级的设备再尝试占用总线发送自己要发送的数据。这就是靠优先级码完成的仲裁。
【回复】现在说回CAN总线,它是差分工作的,但核心思想与上面那个0V-5V的体系是一样的。CAN收发芯片内部通过一些电路产生一个2.5V的参考电压和1.5V、3.5V的两个显性电平电压。CAN-High线通过下拉电阻连接2.5V,通过上拉三极管连接3.5V;CAN-Low线通过上拉电阻连接2.5V,通过下拉三极管连接1.5V;这两个三极管同时导通、同时截止。平时两个三极管都截止,CAN-High和CAN-Low都被电阻拉到2.5V左右,压差是0V,表示逻辑1,这是隐性电平;只要有一个设备要输出逻辑0,它的两个三极管就会同时导通,把CAN-High拉高到3.5V,把CAN-Low拉低到1.5V,压差是2V,表示逻辑0,这是显性电平,能覆盖表示逻辑1的隐性电平。CAN-High和CAN-Low连接在一个电压比较器上,检测两线的压差,看看和自己要输出的那个值是否相同。然后就能代入上一段所说的那个比较的方法,检测优先级顺序,判断哪个设备有资格优先占用总线了。
【回复】现在假设每个设备都有一个优先级码,数值越小则优先级越高。数值越小,则从高位向低位看过去,会比数值更大的更早出现0(比如7、5和3,7的二进制是111,5是101,3是011,从高位往低位,7没有0,而5的第二位就出现了0,3则是第一位就出现了0。而如果是4,也就是100,它的前两位和5相同,但最后一位出现了0,而5是1),或者说从高位往低位逐位看,两个二进制数第一次出现不同的时候,那一位是0的那个数更小,是1的那个数更大。而我们规定了数越小代表优先级越高。
长安醉死人:
这玩意几乎就是加了差分和校验的i2c。

【回复】不知道你怎么得出这个结论的,CAN和IIC就几乎没有相同点
【回复】can 不分主从设备,通信时钟异步,差分信号,通行协议比iic复杂的多,iic分主从设备,通信时钟同步,TTL信号。
【回复】回复 @我的兄弟叫小毛 :手动约束通信速度,直接检测逻辑1即可
神话风云521:
起始位,1位,一定是逻辑0 识别码,11位,识别信息发给哪个ECU RTR位,1位,区分数据帧或远程请求帧 远程请求帧:1 数据帧:0 控制...

MonsterCaller:
其实这么看,这样的CAN总线传输,像不像DNA转录到RNA并指导合成蛋白质行使生物功能。起始位,这个码那个码,很像RNA起始密码子,外显子内含子,终止子,茎环结构啥的,与核糖体特异识别的机制

【回复】都是通过不断的迭代摸索总结筛选出来的最实用最稳定的最优解,之前在图书馆看了本书,用DNA编程做计算机,说是效率非常的高[热词系列_DNA]
【回复】回复 @水流泠丶丶 :现在已经实现用DNA存储数据了,容量巨大,但是不能随机读取,当然还在实验室阶段
【回复】应该是和物理层设计有关,物理层越简单就越需要复杂的数据链路设计,物理层越复杂,数据链路层反而可以设计简单一些[笑哭]。
bog就是我:
can的协议并不复杂,这种问题结合实际信号就比较好理解,有例程直接看实机信号就很容易理解了

浮世忆流年:
传不了那么远,用在2台变频器上就不行,因为变频器运行时干扰太大,可能会干扰到can通讯

【回复】收发芯片那里需要加上下拉电阻,不同数量的通讯端对应匹配电阻。can是差分的,抗干扰已经算优秀的了。
【回复】确实我们设备三台变频器,can只到本安箱然后通讯偶尔会出干扰,还找不到干扰位置,很烦后续检测信号在变频器启动会掉线,启动起来之后就没事啦很烦不知道在哪里处理防干扰
【回复】有变频器的,就一定要加抗干扰的措施了,屏蔽接地就很重要,然后加磁环好像也是个办法,话说变频器的斩波频率也要适当变化一下好像[思考]大概就只懂这么多了
噫好好吃:
做过相关毕业设计的表示讲的太清楚了![星星眼]

【回复】回复 @噫好好吃 :(/TДT)/ 我菜是一方面 行情是主要
【回复】回复 @positiveU :为啥,计算机不是比制造业好吗,还是这几年行情问题[思考]

科普 电路 知识 计算机 计算 数据 通讯 总线 CAN总线 科技猎手2023

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!