详解CAN总线
揭开CAN总线的神秘面纱: 作为Bosch精心打造的实时分布式控制网络,CAN总线以其1Mbps的疾速传输,长达10公里的通信范围,以及独特的无损仲裁机制和多主结构,在汽车行业中大放异彩。
标准化的协议体系: CAN的物理层和数据链路层均遵循严谨的标准化,允许应用层根据需求自定义。收发器巧妙地转换逻辑电平,区分两种标准:ISO11898与ISO11519,它们的差分电平各有特色。
物理层的精密设计: 逻辑信号通过双绞线传输,有效抵抗干扰。STM32的通信实例中,我们见识到三种关键接口器件:线与逻辑、5位同步跳变和120Ω终端电阻,确保信号的准确传递。
数据链路层的智慧架构: CAN帧类型包括数据、远程和错误指示,标准与扩展帧各有不同的帧结构。通过仲裁段,帧ID决定通信的优先级,确保多点竞争的有效解决。
控制与数据段的精妙配合: 标准与扩展帧在控制段的细微差别中展现,数据段则承载0-8字节的信息。CRC段与ACK段如同双保险,确保数据接收的准确无误。
严谨的错误处理机制: 无论是CRC错误、帧格式问题,还是应答和位发送的瑕疵,CAN总线都有严格的规定和处理策略,确保节点状态的稳定。
灵活的通信管理: 过载帧通知接收端准备,帧间隔则用于隔离,CAN节点的构建涉及从硬件到应用层的全方位设计,每个节点都有特定的职责。
CAN收发器和控制器是数据传递的中枢,它们分别处理CAN报文,功能电路则执行信号采集或控制任务。硬件驱动在如P89V51的主控制器上,负责初始化、数据传输和接收,更改控制器时,应用软件需做相应调整,虚拟驱动层提供了更高效的移植性。
CAN控制器专司数据链路层的管理,包括初始化参数、帧的发送和接收,以及处理中断。接口管理逻辑则协调MCU指令与CAN模块的状态,确保通信的流畅。
在应用层,CANOpen、DeviceNet等协议解读数据的含义,驱动程序解析报文,赋予通信更丰富的内涵。
SJA1000支持多种输出模式,推荐正常输出以延长通信距离。收发器分为高速和容错模式,必须配合滤波和抗干扰电路,确保信号的纯净。
集成滤波和抗干扰功能的隔离收发器是CAN总线设计中的关键组件。SJA1000的可扩展RAM使得数据交换更为灵活,通过寄存器操作实现高效的数据处理。
在编程层面,我们需要细致入微的操作:设置复位位,配置时钟、模式和滤波,以及定制波特率;发送CAN帧时,需要检查状态,填充缓冲区并启动发送。
发送函数如SetSJASendCmd,提供了多种发送模式选项;主函数中,定时器和SJA1000的初始化、复位、波特率设置和数据发送构成流程基础。
务必注意,帧ID的格式与缓冲区管理密切相关,终端电阻对高波特率信号质量至关重要。SJA1000的接收缓冲区容量大(64字节),可以减轻MCU的压力,通过查询或中断机制实时获取报文。
绛旓細鎻紑CAN鎬荤嚎鐨勭绉橀潰绾: 浣滀负Bosch绮惧績鎵撻犵殑瀹炴椂鍒嗗竷寮忔帶鍒剁綉缁滐紝CAN鎬荤嚎浠ュ叾1Mbps鐨勭柧閫熶紶杈擄紝闀胯揪10鍏噷鐨勯氫俊鑼冨洿锛屼互鍙婄嫭鐗圭殑鏃犳崯浠茶鏈哄埗鍜屽涓荤粨鏋勶紝鍦ㄦ苯杞﹁涓氫腑澶ф斁寮傚僵銆傛爣鍑嗗寲鐨勫崗璁綋绯: CAN鐨勭墿鐞嗗眰鍜屾暟鎹摼璺眰鍧囬伒寰弗璋ㄧ殑鏍囧噯鍖栵紝鍏佽搴旂敤灞傛牴鎹渶姹傝嚜瀹氫箟銆傛敹鍙戝櫒宸у鍦拌浆鎹㈤昏緫鐢靛钩锛屽尯鍒...
绛旓細CAN鎬荤嚎閲囩敤鍙岀粸绾夸紶杈擄紝閫氳繃宸垎淇″彿纭繚寮哄仴鎬э紝鏃犻渶涓讳粠璁惧鐨勪弗鏍煎尯鍒嗭紝鏀寔闂幆锛120娆х數闃伙紝楂樿揪1Mbit/s锛40绫冲唴楂樻晥锛夊拰寮鐜紙2.2k娆х數闃伙紝125kbit/s锛屽彲杈1000绫筹級涓ょ缁撴瀯銆侰AN閫氫俊鐨勬牳蹇冩槸CAN鎺у埗鍣ㄥ拰鏀跺彂鍣ㄧ粍鎴愮殑鑺傜偣锛屽畠浠氳繃鐢靛帇宸紙ISO11898鐨0闄勮繎闅愭э紝2V闄勮繎鏄炬э紝ISO11519-2鐨勮礋闅...
绛旓細CAN鎬荤嚎锛屼篃绉颁负鎺у埗鍣ㄥ眬鍩熺綉锛屾槸涓绉嶄笓涓哄疄鏃跺垎甯冨紡鎺у埗璁捐鐨勪覆琛岄氫俊缃戠粶锛岀敱寰峰浗Bosch鍏徃寮鍙戙傚叾鏄捐憲鐗圭偣鍖呮嫭楂橀熶紶杈擄紙鏈楂1Mbps锛夈佽繙璺濈閫氫俊锛堝彲杈10km锛夊拰鐙壒鐨勬棤鎹熶綅浠茶鏈哄埗锛屾敮鎸佸涓荤粨鏋勩傞殢鐫鎶鏈彂灞曪紝CAN鎺у埗鍣ㄦ垚鏈檷浣庯紝濡備粖鍑犱箮姣忚締姹借溅閮介厤澶囦簡CAN鎬荤嚎銆侰AN鎬荤嚎鐨勫簲鐢ㄥ満鏅箍娉涳紝鏍囧噯鍙...
绛旓細姹借溅涓殑CAN绾垮拰LIN绾璇﹁В鍙婂叾鍖哄埆 CAN鎬荤嚎绯荤粺锛屼竴绉嶇敤浜庡疄鏃舵帶鍒剁殑涓茶閫氫俊缃戠粶锛屼笓涓哄垎甯冨紡鎺у埗璁捐锛屽畠鍦ㄦ櫤鑳戒紶鎰熷櫒鍜屽埗鍔ㄨ缃瓑闇姹傞珮甯﹀鍜屽鍔熻兘鐨勯鍩熷彂鎸ヤ綔鐢ㄣ傜浉姣斾箣涓嬶紝LIN鎬荤嚎鏄竴绉嶈緟鍔╃殑涓茶閫氫俊鎬荤嚎缃戠粶锛屼富瑕佺敤浜庝笉闇CAN鎬荤嚎澶嶆潅鍔熻兘鐨勫満鍚堬紝濡傝溅杞界郴缁熺殑浣庣閮ㄥ垎锛屽叾浼犺緭閫熷害浣庛佺粨鏋勭畝鍗曚笖...
绛旓細CANopen瀹炴椂鎬荤嚎娣卞叆瑙f瀽锛氳浣犲叏闈簡瑙e叾鍏抽敭姒傚康CAN涓嶤ANopen锛氬熀纭涓庡簲鐢 CAN锛岀敱BOSCH寮曢锛屼笓涓烘苯杞︽帶鍒惰璁★紝鍏跺涓婚氫俊鏈哄埗纭繚浜嗘暟鎹殑鍙潬浼犺緭銆傚畠閲囩敤11-29浣嶆爣璇嗭紝鏀寔鏁版嵁鍧楃紪鐮侊紝浠120惟缁堢鐢甸樆椹卞姩鐨勫弻绾垮樊鍒嗘帴鍙o紝灞曠幇鍑轰簡鎴愮啛涓旈珮鎬т环姣旂殑鐗规с傚湪鑷姩鍖栧拰鏈烘鍒堕犻鍩燂紝CANopen浣滀负CAN鐨...
绛旓細CAN鎬荤嚎锛氭繁鍏ョ悊瑙i氫俊鍗忚鐨勫熀鐭 CAN鎬荤嚎锛屼綔涓築OSCH鐨勫垱鏂颁箣浣滐紝鏈鍒濅笓涓烘苯杞﹂鍩熻璁★紝浣嗗叾骞挎硾搴旂敤鍦ㄥ伐涓氳嚜鍔ㄥ寲涓紝鍑熷叾鐙壒鐨勮璁″拰楂樻晥鎬ц兘銆傚畠鏄竴绉嶅熀浜嶰SI妯″瀷鐨勫弻绾垮樊鍒嗕俊鍙风郴缁燂紝鏀寔澶氫富鎺у拰骞挎挱閫氫俊锛屼紶杈撶煭娑堟伅锛屽叿鏈夋樉钁楃殑鐏垫椿鎬у拰鍙潬鎬с1983骞寸殑鐮斿彂鍜1986骞寸殑鍙戝竷锛屾爣蹇楃潃CAN鎶鏈殑...
绛旓細CAN鎬荤嚎閫氳繃甯э紙Frame锛夊舰寮忚繘琛屾暟鎹氦鎹紝鍏朵腑鏁版嵁甯ф槸浼犺緭鏁版嵁鐨勪富瑕佸舰寮忋傛暟鎹抚鍒嗕负鏍囧噯鏍煎紡锛圫tandard Format锛夊拰鎵╁睍鏍煎紡锛圗xtended Format锛変袱绉嶏紝鏍囧噯甯х殑鏍煎紡濡備笅锛氭暟鎹抚鍙粏鍒嗕负涓冧釜閮ㄥ垎锛1锛夊抚璧峰锛圫tart Of Frame-SOF锛夛細1bit锛屾樉鎬т俊鍙凤紝鏍囧織鐫鏁版嵁甯э紙鎴栬繙绋嬪抚锛夌殑璧峰銆2锛変徊瑁佹锛...
绛旓細姹借溅CAN绾跨殑璇﹁В涓庢煡鎵炬柟娉 姹借溅CAN绾匡紝鍏ㄧО涓烘帶鍒跺櫒灞鍩熺綉锛圕ontroller Area Network锛孋AN锛夛紝鏄竴绉嶇敤浜庨珮鏁堟暟鎹紶杈撳拰閿欒妫娴嬬殑缃戠粶鎶鏈傚畠鐢变袱鏍逛氦鍙夋壄鏇茬殑绾挎潫缁勬垚锛岄氬父宸ヤ綔鐢靛帇涓5V锛屾壙鎷呯潃杩炴帴杞﹁韩鍚勯儴浠朵俊鎭殑鍏抽敭瑙掕壊銆備负浜嗚幏鍙栬杞︾數鑴戠殑鏁版嵁锛屾垜浠渶瑕佸熷姪涓撲笟鐨勮瘖鏂澶囨潵杩炴帴鎬荤嚎鎺ュ彛锛岄氳繃CAN绾...
绛旓細澶т紬甯曡惃鐗瑰熬閮ㄥ瓧姣璇﹁В<!-- 鍦ㄥぇ浼楀笗钀ㄧ壒涓紝浣嶄簬CD鏈哄悗鐨凜AN鏍囪瘑閫氬父浠h〃Car Communication Network锛屽嵆杞﹁浇閫氫俊缃戠粶銆傚畠鍙互浣滀负妫娴嬬鍙o紝閫氳繃杩炴帴妫娴嬭澶囷紝鏄剧ず鍏夌洏涓婄殑杞﹁締鐩稿叧淇℃伅銆傚浜庡笗钀ㄧ壒2017娆撅紝CD灏剧嚎涓婄殑CAN+鏄氫俊缃戠嚎锛屽浜庢绫婚棶棰橈紝4S搴楃殑涓撲笟鎶甯堝彲浠ユ彁渚涜灏借В绛斻傜悊瑙CAN鎬荤嚎鍦ㄥ笗钀ㄧ壒闊冲搷...
绛旓細姹借溅CAN绾垮崗璁璇﹁В CAN绾垮崗璁殑涓昏浼樼偣鏄珮閫熸暟鎹紶杈擄紝鏁版嵁浼犺緭鍑嗙‘鎬ч珮锛屾姉鍣уソ锛屽彲闈犳у拰鍙墿灞曟у己銆傚彟澶栵紝閫氳繃浣跨敤CAN绾垮崗璁紝姹借溅鍒堕犲晢鍜岃溅杈嗚閰嶅巶鍟嗗彲浠ュ噺灏鎬荤嚎绾挎潫鎵闇鐨勬晠闅滄帓闄ゅ拰缁存姢鏃堕棿锛屽悓鏃跺鍔犳苯杞︿綋閲嶅噺杞诲拰鍔熺巼瑕佹眰鐨勭伒娲绘с侰AN(Controller Area Network)鎬荤嚎鍗忚鏄洰鍓嶄娇鐢ㄦ渶骞挎硾鐨...