CAN总线35周年特别篇 -- CAN总线的前世今生

2023-05-16

origin:https://mp.weixin.qq.com/s/MloRz-4sio8QGdNItNRBjQ
 

CAN总线35周年之际,花了一晚上时间整理翻译了下,通过这个帖子大家会对当前市场上各种CAN名词有的全面系统的认识.

图片

        1986年2月,Robert Bosch GmbH在汽车工程师协会(SAE)大会上推出了控制器局域网(CAN)串行总线系统。这是有史以来最成功的网络协议之一诞生的时刻。如今,欧洲几乎所有汽车都配备了至少一个CAN网络。CAN还用于其他类型的车辆,从火车到轮船,以及工业控制中,CAN是最主要的总线协议之一,甚至可能是全球领先的串行总线系统。

从构思到第一个芯片
        在1980年代初期,博世的工程师正在评估现有的串行总线系统,以探讨其在汽车中的可能用途。由于没有可用的网络协议能够满足汽车工程师的要求,因此Uwe Kiencke于1983年开始开发新的串行总线系统。

        新的总线协议主要是要增加新的功能 --- 减少线束不是CAN发展背后的驱动力。奔驰的工程师很早就参与了新的串行总线系统的规范制定阶段,英特尔作为潜在的主要半导体供应商也参与了进来。来自德国Braunschweig-Wolfenbüttel的应用科学大学(现为Ostfalia University of Applied Science)的Wolfhard Lawrenz教授被聘为顾问,他将新的网络协议命名为“Controller Area Network(控制器区域网络)”。来自卡尔斯鲁厄大学的Horst Wettstein教授也提供了学术帮助。

        1986年2月,CAN诞生了:在底特律的SAE大会上,新的总线系统被称为“Automotive Serial Controller Area Network(汽车串行控制器局域网)”。Uwe Kiencke,Siegfried Dais和Martin Litschel介绍了多主网络协议。它基于一种非破坏性仲裁机制,该机制允许总线访问具有最高优先级的帧而没有任何延迟。没有中心控制器。此外,CAN之父(上述人员以及博世员工Wolfgang Borst,Wolfgang Botzenhard,Otto Karl,Helmut Schelling和Jan Unruh)已经实现了几种错误检测机制。错误处理还包括自动断开故障总线节点,以保持其余节点之间的通信。传输的帧不是由帧发送器或帧接收器的节点地址(几乎在所有其他总线系统中)识别的,而是由它们的内容识别的。表示帧有效载荷的标识符,还具有指定帧在网络段内的优先级。

        随后,许多介绍该创新通信协议的演讲和出版物,直到1987年中期(比计划提前两个月),英特尔才交付了第一款CAN控制器芯片82526。这是CAN协议的第一个硬件实现。在短短四年内,一个想法就变成了现实。此后不久,飞利浦半导体推出了82C200。CAN控制器的这两个最早的祖先在接受过滤和帧处理方面有很大的不同。一方面,与飞利浦选择的BasicCAN实施相比,英特尔所青睐的FullCAN概念要求所连接的微控制器的CPU负载更少。另一方面,FullCAN设备在可以接收的帧数方面受到限制。BasicCAN控制器还需要更少的硅。在当今的CAN控制器中,实现了接受过滤和帧处理这两种概念的混合。这使BasicCAN和FullCAN的误导性术语过时了。

图片

标准化和规格
        博世CAN规范(2.0版)已于1990年代初提交国际标准化。在发生了几场政治纠纷之后,尤其是涉及到法国一些主要汽车制造商开发的“车载区域网络”(VAN,Vehicle Area Network),ISO 11898标准于1993年11月发布。除了CAN协议外,它还标准化了物理层,速率高达1 Mbit / s。同时,ISO 11519-2对通过CAN的低功耗,容错数据传输方式进行了标准化。由于该标准存在缺陷,因此从未实施。在1995年,ISO 11898标准通过附录进行了扩展,该附录描述了使用29位CAN标识符的扩展帧格式。

        不幸的是,所有已发布的CAN规范和标准化都包含错误或不完整。为避免不兼容的CAN实施方案,Bosch确保所有CAN芯片均符合Bosch CAN参考模型。此外,由Wolfhard Lawrenz教授领导的德国Braunschweig-Wolfenbüttel应用科学大学已经进行了几年的CAN一致性测试。所使用的测试模式基于ISO 16845一致性测试计划标准系列。今天,多家测试机构可提供CAN一致性测试服务。

        修订后的CAN规范已标准化。ISO 11898-1描述了“ CAN数据链路层”,ISO 11898-2标准化了“非容错” CAN物理层,而ISO 11898-3指定了“容错CAN物理层”。ISO 11992系列(卡车和拖车接口)和ISO 11783(农业和林业机械)系列指定了基于SAE J1939网络方法的应用程序配置文件。它们不兼容,因为物理层规范不同。

图片

CAN时代的先锋
        尽管CAN最初被开发用于汽车,但最初的应用来自不同的市场领域。特别是在北欧,CAN在早期已经非常流行。在芬兰,电梯制造商Kone 使用了CAN总线。瑞典工程办公室Kvaser向一些纺织机械制造商(Lindauer Dornier和Sulzer)及其供应商建议将CAN作为机器内部的通信协议。在Lars-Berno Fredriksson的领导下,这些公司成立了“ CAN纺织品用户小组”。到1989年,他们制定了沟通原则,有助于在1990年代初塑造发展环境“ CAN Kingdom”。尽管相对于OSI参考模型,CAN Kingdom不是应用程序层,
       在荷兰,飞利浦医疗系统决定将CAN用于其X射线机的内部联网,从而加入了工业CAN用户。主要由Tom Suters开发的“ Philips消息规范”(PMS)代表了CAN网络的第一个应用层。来自德国Weingarten应用科学大学的Konrad Etschberger教授也有相同的想法,在他负责的Steinbeis过程自动化转移中心(STZP)中,他开发了类似的协议。


        尽管第一个标准化的高层协议开始出现,但大多数CAN开拓者还是采用了整体法。通信功能,网络管理和应用程序代码是一种软件。即使某些用户希望采用模块化的方法,但他们仍有专有解决方案的缺点。增强和维护CAN高层协议的必要努力被低估了 ---今天仍然部分是正确的。

        在1990年代初,是时候成立了一个用户小组,以推广CAN协议并促进其在许多应用中的使用。1992年1月,当时的《 VMEbus》杂志编辑(出版商:Franzis)的Holger Zeltwanger吸引了用户和制造商一起建立了一个中立的平台,用于CAN的技术增强以及串行总线系统的市场营销。两个月后,“ CAN in Automation”(CiA)国际用户和制造商小组正式成立。在早期,CAN通讯已经出版。

        仅几周后发布的第一份技术出版物涉及物理层:CiA建议仅使用符合ISO 11898的CAN收发器。如今,制造商专用的EIA-485收发器在CAN网络中非常普遍,那个时候,并不总是兼容,应该已经完全消失了。

        CiA的首要任务之一是规范CAN应用层。利用飞利浦医疗系统公司和STZP提供的现有材料,并在CiA其他成员的帮助下,开发了“ CAN应用程序层”(CAL),也称为“绿皮书”。在使用CAN制定规范时,CiA的主要任务之一是组织CAN专家与那些希望在CAN上变得更多知识的专家之间的信息交换。因此,自1994年以来,举行了国际CAN会议(iCC)。

        LAV(德国农业车辆协会)追求另一种学术方法。自1980年代后期以来,已经开发了基于CAN的农用车辆总线系统(LBS)。但是在这项工作可以成功完成之前,国际委员会已决定支持美国的解决方案J1939(ISO 11783)。此应用程序配置文件也基于CAN,由SAE卡车和公共汽车协会的委员会定义。J1939是一种非模块化方法,非常易于使用,但也非常不灵活。

        还为卡车开发了CAN的标准化。卡车和拖车之间的网络标准化为ISO11992。该协议基于J1939,从2006年起必须在欧洲使用。汽车的趋势是向OSEK-COM和OSEK-NM,通信协议和网络管理迈进。两者均已提交国际标准化。到目前为止,汽车制造商一直在使用专有软件解决方案。
 

从理论到实践
        当然,将CAN内核实现到其微控制器中的半导体供应商主要集中在汽车行业。自1990年代中期以来,英飞凌科技公司(以前为西门子半导体公司)和摩托罗拉公司(外包为飞思卡尔,后来被NXP收购)已经向欧洲汽车制造商及其供应商运送了大量CAN控制器。自1990年代末以来,远东半导体供应商也开始提供CAN控制器。NEC在1994年推出了他们传奇的CAN芯片72005,但为时过早-该组件在商业上并不成功。

        自1991年以来,奔驰一直在其汽车中使用CAN。第一步,通过CAN连接负责发动机管理的电子控制单元。1995年,宝马在其7系汽车中使用了带有五个ECU(电子控制单元)的树/星拓扑CAN网络。第二步,跟随人体电子设备所需的控制单元。实现了两个物理上分离的CAN网络,通常通过网关连接。其他汽车制造商也沿用了奔驰的方式,通常在乘用车中实现两个CAN网络。如今,他们都在自己的车辆中实现了多个CAN网络。

        在1990年代初期,美国机械工程公司Cincinnati Milacron的工程师与Allen-Bradley和Honeywell Microswitch共同成立了一家合资公司,以基于CAN的控制和通信项目。但是,不久之后,重要的项目成员换了工作,合资企业瓦解了。但是Allen-Bradley和Honeywell分别继续工作。这导致了至少在较低的通信层中非常相似的两个高层协议“ DeviceNet”和“智能分布式系统”(SDS)。1994年初,Allen-Bradley将DeviceNet规范移交给了“开放DeviceNet供应商协会”(ODVA),这促进了DeviceNet的普及。Honeywell未能在SDS上采取类似的方式,这使SDS看起来更像是Honeywell微动的内部解决方案。DeviceNet是专为工厂自动化而开发的,因此,它本身就是Profibus-DP和Interbus等协议的直接对手。提供现成的即插即用功能,DeviceNet已成为美国这个特定细分市场中领先的总线系统。

        在欧洲,几家公司尝试使用CAL。尽管CAL方法在学术上是正确的,并且可以在工业应用中使用它,但是每个用户都需要设计一个新的配置文件,因为CAL是真正的应用程序层。CAL可以看作是独立于应用程序的CAN解决方案必不可少的学术步骤,但它从未在该领域获得广泛认可。

        自1993年以来,在Esprit项目ASPIC的范围内,由博世领导的欧洲财团一直在开发CANopen的原型。它是用于生产单元内部网络的CAL配置文件。在学术方面,来自德国罗伊特林根应用科学大学的Gerhard Gruhler教授和来自英国纽卡斯尔大学的Mohammed Farsi博士参加了有史以来最成功的Esprit活动之一。项目完成后,CANopen规范移交给了CiA,以进行进一步的开发和维护。1995年,发布了经过完全修订的CANopen通信配置文件,并在短短五年内成为欧洲最重要的标准化嵌入式网络。

        第一个CANopen网络用于内部机器通信,尤其是驱动器。CANopen提供了很高的灵活性和可配置性。高层协议已用于多个非常不同的应用领域(工业自动化,航海电子,军用车辆等),同时其国际标准为EN 50325-4(2003)。CANopen尤其在欧洲使用。意大利的注塑机,德国的木锯和机器,英国的卷烟机,法国的起重机,奥地利的搬运机以及瑞士的钟表制造机只是工业自动化和机械制造中的几个例子。在美国,推荐将CANopen用于叉车并将其用于信件分拣机中。

        CANopen不仅定义了应用程序层和通信配置文件,而且还定义了可编程系统以及不同设备,接口和应用程序配置文件的框架。这是整个行业(例如印刷机,海事应用,医疗系统)决定在1990年代后期使用CANopen的重要原因。

        借助DeviceNet和CANopen,可以使用两个标准化的(IEC 62026-3或EN 50325-4 / 5)应用层,以满足不同的工业自动化市场的需求。DeviceNet针对工厂自动化进行了优化,而CANopen特别适合于各种机器控制中的嵌入式网络。这使得专有的应用程序层已过时。定义特定于应用程序的应用程序层的必要性已成为历史(也许,对于某些专用的大容量嵌入式系统而言除外)。

图片

时间触发的通讯
        在2000年初,一个由数家公司组成的ISO特别工作组为CAN帧的时间触发传输定义了一个协议。Bernd Mueller博士,Thomas Fuehrer博士和其他博世员工,以及半导体行业和学术研究专家共同定义了协议“ CAN上的时间触发通信”(TTCAN,Time-triggered communication on CAN)。

        这种CAN扩展可以实现时间等量的帧传输和通过CAN的闭环控制的实现,而且还可以在x-by-wire的应用中使用CAN。由于CAN协议未更改,因此可以通过同一物理总线系统传输时间触发帧和事件触发帧。但是,汽车行业尚未采用TTCAN。而且,工业用户很少使用时间触发的协议扩展。他们改用CANopen中指定的同步传输功能,可以说是一种软时间触发方法。

图片

当局批准

        在90年代后期,发明了几种基于CAN的专有安全协议。幸存下来的是德国Pilz生产的Safetybus p。在1999年,CiA开始开发CANopen-Safety协议,该协议已获得德国TüV的批准。经过标准化机构的大量参与之后,此CANopen扩展(CiA 304)在EN 50325-5(2009)中进行了国际标准化。

        DeviceNet使用CIP安全协议扩展。全球领先的船级社之一的德国劳埃德船级社(Germanischer Lloyd)已批准了适用于海事应用的CANopen框架(CiA 307)。除其他外,该框架规定了从默认的CANopen网络到冗余总线系统的自动切换。如今,这些功能已在CiA 302系列其他CANopen应用层功能中得到了概括和指定。

CAN FD开发
        2011年初,通用汽车和博世开始着手开发一些有关提高吞吐量的CAN协议。当将越来越多的软件包下载到电子控制单元(ECU)时,汽车行业尤其受苦。高性能通信系统必须缩短这项耗时的任务。通过引入第二个比特率来提高CAN传输速度的想法并不新鲜。自2000年初以来,已有几位学者发表了研究方法。但是,没有一个研究者能够说服汽车制造商。博世与其他CAN专家合作,预先开发了CAN FD规范,该规范于2012年在德国哈姆巴赫城堡举行的第13届国际CAN会议上正式推出。

        在ISO的标准化过程中,发现了所提出的错误检测机制中的一些学术缺陷。这需要对CAN FD协议进行审查,并引入其他防护措施(例如,填充位计数器)。这就是为什么存在非ISO CAN FD协议的原因,该协议与ISO 11898-1中标准化的ISO CAN FD协议不兼容。

        戴姆勒公司的Mark Schreiner博士为设计CAN FD网络提供了很多提示和知识。他的许多想法都包含在CAN FD节点的CiA 601系列以及系统设计建议和规范中。
 

图片


CAN的未来是光明的

        随着CAN FD协议的引入,CAN技术的寿命得以延长。汽车行业已经开始为下一代车载网络采用CAN FD协议。可以预期,所有未来的应用程序都将使用CAN FD协议。不管它们是否需要更高的带宽都没关系。您仍然可以将CAN FD与单个位定时设置一起使用。有效负载长度无论如何都可以在0到64字节之间配置。

        对于那些需要更多带宽并需要混合拓扑的用户,CiA已开发了所谓的SIC(信号改善电路)收发器规范(CiA 601-4)。最初的想法来自日本Tier-1供应商Denso。

        CiA还开发了基于CAN FD下层的CANopen FD协议。特别是对于工业运动控制应用,非常适合更高的传输速率和更长的有效载荷(最大64字节)。CiA还参与了使用SAE J1939系列中指定的现有参数组的商用车,基于CAN FD的应用层的开发。

第三代CAN
        2018年底,CiA开始开发第三代基于CAN的数据链路层协议CAN XL。它是应大众汽车的要求启动的。Carsten Schanze和Alexander Mueller提供了许多最初的想法。

        2020年由于疫情,取消了国际CAN会议的执行,今年的国际CAN会议改为线上举行,主题是CAN XL。CAN XL速度提升至10Mbps。
图片
        同时保持CAN协议的优势以及与CAN和CAN FD的兼容性。下面是CAN FD和CAN XL的混合网络:
图片
补充:
(1)CiA CAN XL规范于2018年12月开始,目标是在2019年底之前拥有OSI第2层规范(称为CAN XL协议),第二步,将开始进行ISO标准化。
(2)经典CAN是1Mbps,CAN FD最高2Mbps,CAN FD-SiC是5-8Mbps,CAN XL是10Mbps。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CAN总线35周年特别篇 -- CAN总线的前世今生 的相关文章

  • C#不使用配置文件封装log4net

    先使用NuGet安装log4net 如下图 log4net封装类 span class token keyword using span span class token namespace log4net span class token
  • Qt QTextEdit使用总结

    目录 QTextEdit类 QTextEdit基本用法 1 创建QTextEdit对象 2 设置文本 3 获取文本 4 插入文本 5 设置字体 字号和颜色 6 设置对齐方式 7 撤销和重做 8设置只读模式 9 信号与槽 10 多行显示 QT
  • C++ Qt智能指针使用教程

    C Qt智能指针使用教程 contents 一 QSharedPointer用法 二 QWeakPointer 三 QScopedPointer 四 QPointer 五 Qt智能指针需要注意的坑 Qt提供了类似C 11智能指针的实现 用于
  • 编程题:有两个字符串str1和str2,写一个函数实现在str1中查找str2的初始位置,要求不区分大小写

    编程题 xff1a 有两个字符串str1和str2 xff0c 写一个函数实现在str1中查找str2的初始位置 xff0c 要求不区分大小写 思路 xff1a 1 xff1a 首先判断两个字符串的大小 xff0c 作初步比较 2 xff1
  • vscode对C++程序进行调试

    调试helloworld 先建立一个文件夹然后在文件夹 xff0c 创建一个test cpp 写下一下内容 span class token macro property span class token directive hash sp
  • C++模拟go defer

    go defer介绍 在Go语言中 defer语句用于在函数返回之前执行一些代码 这对于释放资源或记录函数执行时间非常有用 当函数中有多个defer语句时 它们将按照后进先出 LIFO 的顺序执行 以下是一个简单的示例 演示了如何使用def
  • C++设计模式13:责任链模式

    C 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式 第9式 装饰器模式
  • C++设计模式7:桥接模式

    C 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式 第9式 装饰器模式
  • C++设计模式8:组合模式

    C 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式 第9式 装饰器模式
  • C++设计模式11:享元模式

    C 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式 第9式 装饰器模式
  • C++设计模式15:解释器模式

    C 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式 第9式 装饰器模式
  • C++设计模式16:迭代器模式

    C 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式 第9式 装饰器模式
  • C++设计模式21:策略模式

    C 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式 第9式 装饰器模式
  • C++设计模式18:备忘录模式

    C 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式 第9式 装饰器模式
  • C++设计模式20:状态模式

    C 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式 第9式 装饰器模式
  • stm32直流电机驱动与测速

    stm32直流电机驱动与测速 说实话就现在的市场应用中stm32已经占到了绝对住到的地位 xff0c 51已经成为过去式 xff0c 32的功能更加强大 xff0c 虽然相应的难度有所增加 xff0c 但是依然阻止不了大家学习32的脚步 x
  • C++设计模式22:模板方法模式

    C 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式 第9式 装饰器模式
  • C++ 设计模式23:访问者模式

    C 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式 第9式 装饰器模式
  • C++设计模式17:中介者模式

    C 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式 第9式 装饰器模式
  • C++设计模式14:命令模式

    C 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式 第9式 装饰器模式

随机推荐

  • GPS 和 RTK 定位

    refers xff1a https blog csdn net u012241570 article details 80802675 GPS定位的基本原理 测量出已知位置的卫星到地面GPS接收器之间的距离 xff0c 然后接收器通过与至
  • 关于GD32的CMakeLists以及gcc部分编译选项的解释

    set CMAKE SYSTEM NAME Generic cmake最低版本 cmake minimum required VERSION 3 0 0 工程名称 语言 project TEST PRJ NAME LANGUAGES C C
  • ulimit -s 指定栈上的内存上限

    转自 xff1a http blog chinaunix net uid 24439730 id 144094 html ulimit s 指定栈上的内存上限 xff0c 单位为KB xff0c 如 xff1a root 64 wdqf1w
  • C++头文件重复包含问题

    为了避免同一个文件被include多次 有两种方式 1 span class token macro property span class token directive keyword ifdef span SOMEFILE H spa
  • TCP(select函数模型)

    客户端代码 include lt stdio h gt include lt sys types h gt include lt sys socket h gt include lt arpa inet h gt include lt st
  • i2c那些坑

    origin http bbs ntpcb com simple t126695 html I2C 的那些坑 一般情况下 xff0c i2c 设备焊接没什么问题 xff0c 按照设备手册一步步来 xff0c 基本上就顺风顺水能够用起来 如果
  • stm32f103系列引脚定义-功能图

    器件功能和配置 STM32F103xx增强型 STM32F103xx增强型模块框架图 STM32F103xx增强型VFQFPN36管脚图 STM32F103xx增强型LQFP100管脚图 STM32F103xx增强型LQFP64管脚图 ST
  • 用数百行代码实现60亿设备互联:微软重金收购的ThreadX硬在何处

    origin https www sohu com a 315222502 485057 2019年4月 xff0c 微软收购了ThreadX的母公司Express Logic 公司 而ThreadX有几亿个设备在运行 1 物联网操作系统简
  • Cache和DMA一致性

    cache读必须要buffer是cacheline对齐的 DMA应该多多少少知道点吧 DMA Direct Memory Access 是指在外接可以不用CPU干预 xff0c 直接把数据传输到内存的技术 这个过程中可以把CPU解放出来 x
  • stm32几种低功耗模式的实现和差别

    origin https blog csdn net jian3214 article details 99818603 01 前言 按功耗由高到低排列 xff0c STM32具有运行 睡眠 停止和待机四种工作模式 上电复位后 STM32
  • threadx也开源了

    前一段时间ucos开源了 xff0c 今天微软收购的threadx也开源了 xff0c 行业剧变呀 xff01 xff01 xff01 2020 5 26
  • armv8-M 32bit处理器

    https www eet china com mp a14579 html https developer arm com ip products processors cortex m 最早的Cortex M0属于Armv6 M架构 x
  • 作为ARM Cortex-M家族的继承者 Cortex-M23与M33有哪五大特色?

    http news eeworld com cn xfdz article 2017011259937 html 集微网消息 xff0c ARM处理器在嵌入式设备领域的应用非常广泛 基于ARM Cortex处理器的片上系统 xff08 So
  • emmc5.1, ufs2.0, ufs3.0

    总的来说 xff0c UFS3 0的综合性能 xff0c 特别是持续读写速度有着秒杀UFS2 1前辈的表现 xff0c 只是在随机读写和SQLite性能上 xff0c 却依旧和双通道的UFS2 1持平 xff0c 有些小遗憾 最后 xff0
  • 串行Norflash是如何实现XIP的?

    先说问题 xff1a 要想程序在串行的Norflash中运行 xff0c 到底需要做哪些工作 xff1f Norflash和Nandflash想必大家都知道 恕本人才学疏浅 xff0c 最近突然发现Norflash可以并行连接实现XIP x
  • ARM汇编语言 - 简介 [一]

    origin https zhuanlan zhihu com p 82490125 ARM汇编语言 简介 一 兰新宇 talk is cheap 说明 xff1a 本系列文章将主要以ARMv7和ARMv8架构为例 xff0c 介绍ARM汇
  • ARM汇编语言 - 简介 [二]

    上文介绍了ARM的数据传送指令 xff0c 本文将主要介绍ARM中的移位 序转和位操作等数据处理指令 移位指令 移位包括逻辑移位和算术移位 xff0c 所谓 逻辑 就是将寄存器中存放的内容仅仅视为一串bits xff0c 移位的时候只需要将
  • 智能小车开发的重点之一电机该如何选型

    一 智能小车的分类 二 电机的分类 无刷电机要好于有刷电机 xff0c 优点 xff1a 1 没有损耗 xff0c 有刷电机有寿命 2 静音 xff0c 有刷电机噪音比较大 无刷电机分为带霍尔传感器和不带霍尔传感器两种 xff0c 因为无刷
  • ARM汇编语言 - 简介 [三]

    上文介绍了ARM的数据处理指令 xff0c 本文将主要介绍ARM中的跳转指令 跳转指令 无条件跳转 ARM中的基础跳转指令就一个字母 34 B 34 xff0c 代表Branch xff0c 相比起x86中和它功能基本相同的 34 jmp
  • CAN总线35周年特别篇 -- CAN总线的前世今生

    origin https mp weixin qq com s MloRz 4sio8QGdNItNRBjQ CAN总线35周年之际 xff0c 花了一晚上时间整理翻译了下 xff0c 通过这个帖子大家会对当前市场上各种CAN名词有的全面系