CAN总线接口–硬件

8.3 CAN总线接口–硬件

        虽然CAN总线目前已应用于工业控制、机器人、医疗器械等领域,汽车控制领域是CAN总线的最大市场。保守地估算,按每辆车30个CAN网络节点,2019年全球汽车产量约9100万辆, 即27.3亿个CAN网络节点。在汽车领域,CAN网络节点被称作ECU(电子控制单元),譬如汽车左右后视镜就是2个ECU,每个后视镜至少有2个马达(控制镜片绕2个方向旋转)和1个转向指示灯, 在CAN总线引入汽车之前这些ECU单元需要很多根控制信号和供电电缆连接到中控系统,现在CAN总线只需要4根(2根通讯和2根供电)电缆即可将这些ECU连接起来, 不仅降低电缆成本还极大地简化车内布线、维修等。

../_images/canbus_in_automotive_netwaork.jpg

图8.12 CAN总线在汽车控制系统中的应用

       图8.12给出汽车控制系统中典型的CAN总线应用示意图。本质上,每个ECU就是一个车载的嵌入式系统。我们使用“车载的”,因为车载的嵌入式系统与工业级、商业级和消费级嵌入式系统不同, 车用级别的嵌入式系统涉及人身安全且运行环境恶略(如电磁辐射、浪涌电流冲击、静电放电,以及高温、低温、长时间连续运行等),半导体行业有专门的“车规级”/“汽车级”标准。 上图中标注的“低速CAN总线”和“高速CAN总线”将在下一节的内容中解释,我们在这里只需要知道汽车控制系统的网络分为多种层次。

       CAN总线经历数十年的发展已经形成稳定的软硬件设计模型[1]。图8.13是参照CAN总线协议栈的CAN网络节点的硬件设计模型。

../_images/cannode_hardware_design_model_vs_canbus_protocol.jpg

图8.13 CAN网路节点的硬件设计模型

       目前第一代和第二代的CAN协议控制器均已被硬件化,即独立的集成电路或成熟的硬件功能单元的形态,而且绝大多数面向汽车控制、工业控制、机器人控制、 马达控制等应用领域的MCU和DSP都带有CAN协议控制器。硬化的CAN协议控制器不仅缩短CAN接口产品的设计周期,还能确保CAN总线时序的一致性, 当然硬件成本也非常低,还能降低CAN网络节点的CPU数据处理成本。独立的CAN协议控制器IC有很多种,Intel、NXP、TI、Microchip等知名半导体都有专门的产品线。

       值得注意的是,虽然CAN总线的2个信号也是差分的,CAN总线收发器与RS485、RS422等差分信号收发器并不通用,根据前一节知识我们很清楚他们之间的区别。 图8.14给出CAN总线收发器的内部结构及其前后级接口的原理。在RS485等标准差分收发器中,逻辑‘1’和逻辑‘0’(或开路状态)都受驱动器控制,接收状态受控于专用的“enTxD”信号。 在CAN总线范畴,仅发送逻辑‘0’(显性位)时收发器处于受控状态,其他时刻收发器都是三态的(只能接收)。 图8.14所示的CAN总线收发器无需MCU或其他专用逻辑驱动的情况下即可实现这些状态模式。

../_images/canbus_transceivers_destial.jpg

图8.14 CAN总线收发器的内部原理结构及其前后级接口

        CAN总线驱动器也有很多种型号,大多数半导体制造商都有CAN驱动器IC(毕竟每年有27.3亿颗销量的市场)。虽然CAN总线收发器的工作电源和接口逻辑电平电压也有多种, 我们只需要根据所用MCU、CAN协议控制器的I/O电平逻辑来选择即可,因为CAN总线采用差分信号的电压差和阈值来判定高低电平。

       对于CAN总线的终端电阻,图8.14中的RT需要注意其功率。根据CAN总线的差分信号接口,当传输显性位‘0’时CAN_HI信号通过内部P型三极管被拉高至VDD, 同时CAN_LO信号被内部N型三极管强制拉低到GND,此时终端电阻两端的电压差是最大的,CAN总线的驱动电流被限制在50mA,那么120欧终端电阻的功率为0.3W(即0.05*0.05*120), 这意味着至少选择1/3W(1210)或1/2W的规格。

       根据CAN网络节点的硬件设计模型,图8.15是基于BlueFi的40P扩展接口的CAN接口的示例电路原理图。

../_images/cannode_hardware_design_example_bluefi_canif.jpg

图8.15 CAN网路节点的硬件设计示例:BlueFi-CAN拓展板

       在图8.15所示的设计示例中,使用兼容CAN2.0B的独立CAN协议控制器IC——MCP2515,该协议控制器的详细资料链接都页面[2],在页面[3]将会看到更多中CAN2.0B和CAN FD的独立协议控制器, 对于我们的目的选择使用那种CAN协议控制器并无本质区别,但是作为量产的CAN网络节点产品来说,建议使用兼容CAN FD标准的控制器更为合理。 MCP2515的内部结构参加图8.16。 考虑BlueFi的40P扩展接口仅有3.3V供电电源,而且所有功能扩展接口的逻辑电平电压都采用3.3V,独立的CAN协议控制器MCP2515是一种宽工作电压的IC(允许2.7~5.5V), 我们可以使用BlueFi的40P扩展接口上的3.3V和GND为其供电,那么CAN总线收发器与CAN协议控制器之间的逻辑接口电压也必须采用3.3V的, 如果CAN总线收发器的工作电压也采用3.3V,意味着我们的CAN接口拓展板采用3.3V单工作电源,这样的设计更为简化。 在页面[4]中我们能找到很多种CAN总线收发器,SN65HVD230是价格较低的一种支持3.3V供电的CAN总线收发器。

../_images/cannode_hardware_design_mcp2515_structure.jpg

图8.16 兼容CAN2.0B的CAN协议控制器——MCP255的内部结构

       图8.15中将完整的CAN拓展板的电路原图分割为4个部分:BlueFi拓展接口、CAN协议控制器、CAN总线收发器和CAN总线接口插座。 由于整个拓展板采用单3.3V供电,这个接口设计变得极为简单。独立的CAN协议控制器使用SPI接口与BlueFi主控制器(nRF52840)连接, CAN协议控制器与CAN总线收发器之间的连接是常规的,CAN总线接口插座使用易插拔的形式。每个拓展板上都设计2个CAN总线接口插座, 目的是方便连线,三个BlueFi-CAN拓展板之间使用CAN总线通讯的实物连线如图8.17所示。从图8.15可以看出,两个CAN总线接口的插座上的CAN总线信号是相互连通的, 接线时只要注意区分CAN_HI和CAN_LO两个信号即可。

../_images/cannode_bluefi_extended_board.jpg

图8.17 三个BlueFi-CAN拓展板之间使用CAN总线通讯的实物连接

       由于BlueFi的主控制器(nRF52840)片内没有CAN协议控制器和CAN总线收发器等功能单元,我们使用SPI接口的独立CAN协议控制器IC为BlueFi扩展出CAN接口, 整个CAN拓展板使用单3.3V供电电源使得拓展电路的设计非常简单。


       当然,许多面向工业控制应用领域的MCU/SoC片上都带有硬件CAN协议控制器单元,譬如ARM Cortex-M3/M4/M4F内核的LPC1769(来自NXP半导体)、 STM32F1xx/4xx(来自ST半导体)等片上都有1个或2个独立的CAN协议控制器单元,再如ESP32或ESP32-S2(来自上海乐鑫)片上带有一个CAN协议控制器单元, 在乐鑫的文档中,CAN协议控制器单元被称作TWAI(即Two-Wire Automotive Interface的缩写)。 事实上,CAN协议控制器是由一个多状态复杂时序逻辑电路和多个FIFO缓存组成的数字电路功能单元,很容易集成到MCU/SoC内部,或者使用FPGA内部逻辑单元和存储器来实现。 片上CAN协议控制器单元通过片内并行总线(如APB)与CPU内核和RAM互联,这样的接口在访问速度方面远超SPI等接口,而且片上功能单元的寄存器和RAM之间很容易通过DMA方式传输数据。 当我们需要缩短CAN总线接口的数据传输延迟时,使用片上CAN协议控制器将是首选的。

       图8.18是使用片上CAN协议控制器时的CAN总线节点上的硬件接口电路示例。使用片上CAN协议控制器时需要仔细查阅MCU/SoC的技术文档确定CAN接口引脚的分配规则, 以及逻辑电平的电压等。

../_images/cannode_hardware_design_cancontroller_on_the_mcu.jpg

图8.18 使用MCU/SoC片上CAN协议控制器的CAN总线节点的硬件接口电路示例

       对比图8.15和图8.18的示例电路,或许你会问“为什么不将CAN总线收发器集成到MCU/SoC内部呢?” 考虑CAN总线收发器的一对差分信号比较特殊, 无法与其他I/O引脚通用。


       本节以分层的CAN总线协议栈作为对照,引入CAN网络节点的硬件设计模型,并简要分析CAN总线收发器的前后级接口,然后参照硬件设计模型给出BlueFi-CAN拓展板的硬件设计。 虽然我们仅给出一种最简单的兼容CAN2.0B标准的CAN网络节点的硬件设计,而且尽可能地简化电路设计,CAN总线接口方面并未考虑电磁辐射、浪涌电流和静电放电等保护措施。 在CAN总线的各类应用场景中,无论是工业的或是汽车领域,抗高低温损伤、抗辐射干扰、抗静电损坏,以及防水等设计都十分重要, 从数据帧的传输原理和协议角度可以看出CAN总线本身具有很强的抗干扰能力和很高的可靠性,但实际应用系统的设计也会严重影响CAN总线的性能。

参考文献:

[1] https://www.ti.com/lit/pdf/sloa101
[2] https://www.microchip.com/wwwproducts/en/MCP2515
[3] https://www.microchip.com/ParamChartSearch/Chart.aspx?branchID=1939
[4] https://www.ti.com/interface/can-lin-transceivers-sbcs/overview.html
[5] https://www.ti.com/document-viewer/SN65HVD230/datasheet/features-slos3463030#SLOS3463030

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/372593.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

13.rk3588搭建rknn环境

一、搭建Anaconda3环境 首先下载Anaconda3-2022.10-Linux-aarch64.sh,链接:https://pan.baidu.com/s/10oXSAaleAEoe6KaJ3IQyaw ,提取码:mtag 。 下载后放入到自己的home文件夹下面,然后在该文件夹下运行 bash Anaco…

34 使用 LNMP 架构部署动态网站环境

源码包程序 LNMP 动态网站部署架构 LNMP 动态网站部署架构是一套由 Linux Nginx MySQL PHP 组成的动态网站系统 解决方案。 1. 准备工作 在使用源码包安装服务程序之前,首先要让安装主机具备编译程序源码的环境。这需要 具备 C 语言、C语言、Perl 语言的编译器&…

Python:流程控制

4.1 顺序结构 在任何编程语言中最常见的程序结构就是顺序结构。顺序结构就是程序从上到下一行行地执行,中间没有任何判断和跳转。 如果Python程序的多行代码之间没有任何流程控制,则程序总是从上往下依次执行,排在前面的代码先执行&#xf…

Failed at the chromedriver@2.27.2 install script.

目录 【错误描述】Failed at the chromedriver2.27.2 install script. npm install报的错误 【解决方法】 删除node_modules文件夹npm install chromedriver --chromedriver_cdnurlhttp://cdn.npm.taobao.org/dist/chromedrivernpm install 【未解决】 下载该zip包运行这个&…

RK3568驱动指南|驱动基础进阶篇-进阶7 向系统中添加一个系统调用

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

Matplotlib 绘图实践:从基础到高级技巧【第62篇—python:Matplotlib绘图】

文章目录 Matplotlib绘图模块基础入门大全1. 安装Matplotlib2. 绘制基本图形3. 自定义图形样式4. 多子图布局5. 高级绘图技巧6. 绘制实时动态图7. 图形注释与标记8. 颜色映射与散点图9. 绘制直方图10. 绘制饼图11. 绘制热力图 总结 Matplotlib绘图模块基础入门大全 Matplotlib…

字符串哈希模版(来自TsReaper)

有一个字符串word,让你求出某一段所对应的数值(即映射值),word[L,R]对应的数值。

【LeetCode: 239. 滑动窗口最大值 + 滑动窗口 + 单调队列】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

rhel8静态ip配置

1.先cd进来 2.把默认的dhcp改成static IPADDR192.168.211.22 22随意改,255以下的数字都行,1和255不要用 GATEWAY192.168.211.2和虚拟机默认网关保持一致 重启网络 nmcli c reload和 nmcli c up ens160 ping百度测试--(成功了&#xff0…

dnslog在sql盲注

首先必须保证sql是在windows下 因为需要使用到UNC路径 保证mysql中的secure_file_priv为空 secure_file_priv为null,load_file则不能加载文件。 secure_file_priv为路径,可以读取路径中的文件; secure_file_priv为空,可以读取磁盘…

ShardingSphere 5.x 系列【5】Spring Boot 3 集成并实现读写分离

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 概述2. 使用限制3. 案例演示3.…

maven-install-plugin:2.4:install (default-cli) on project ability-dispatch:

IDEA,instal时报错 ,错误 信息如下: Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.4:install (default-cli) on project ability-dispatch: The packaging for this project did not assign a file to the buil…

javaEE - 24( 20000 字 Servlet 入门 -2 )

一: Servlet API 详解 1.1 HttpServletResponse Servlet 中的 doXXX 方法的目的就是根据请求计算得到相应, 然后把响应的数据设置到HttpServletResponse 对象中. 然后 Tomcat 就会把这个 HttpServletResponse 对象按照 HTTP 协议的格式, 转成一个字符串, 并通过S…

golang并发安全-sync.Once

什么是sync.Once sync.Once 是 Go 语言中的一种同步原语,用于确保某个操作或函数在并发环境下只被执行一次。它只有一个导出的方法,即 Do,该方法接收一个函数参数。在 Do 方法被调用后,该函数将被执行,而且只会执行一…

情人节浪漫礼物指南:精选共享甜蜜时光的情人节礼物推荐

情人节,代表着浪漫和爱意的纪念日,总能激起每个人内心深处的悸动,促使他们渴望与爱侣共度美好时刻。为爱人精心选择一份情人节礼物,不仅是对他们深情的告白,更是将这份爱升华,让它成为两人爱情故事里的宝贵…

C# Winform NLog的使用笔记

一、NLog的介绍 NLog是一个开源的、灵活的、可扩展的日志记录库,用于.NET平台。它提供了强大的日志记录功能,可以帮助开发人员在应用程序中实现高效的日志记录和跟踪。它提供了一种简单且灵活的方式来在应用程序中记录日志信息。NLog支持多种日志目标&am…

计算机设计大赛 深度学习+opencv+python实现昆虫识别 -图像识别 昆虫识别

文章目录 0 前言1 课题背景2 具体实现3 数据收集和处理3 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数:2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 4 MobileNetV2网络5 损失函数softmax 交叉熵5.1 softmax函数5.2 交叉熵损失函数 6 优化器SGD7 学…

一次Kubernetes Pod内存异常导致的测试环境耗时异常问题排查过程

概述 在使用公司内部后台系统测试环境时发现一个请求加载慢的问题,简简单单的列表,查询MongoDB数据库,测试环境不过几百上千条数据而已,请求耗时居然高达5~6秒: 作为对比,生产环境的请求响应截图如下&…

机器学习中的有监督学习和无监督学习

有监督学习 简单来说,就是人教会计算机学会做一件事。 给算法一个数据集,其中数据集中包含了正确答案,根据这个数据集,可以对额外的数据希望得到一个正确判断(详见下面的例子) 回归问题 例如现在有一个…

【算法】枚举——蓝桥杯、日期统计、特殊日期(位数之和)、2023、特殊日期(倍数)、跑步锻炼

文章目录 蓝桥杯日期统计特殊日期(位数之和)2023特殊日期(倍数)跑步锻炼 蓝桥杯 日期统计 日期统计 如果暴力枚举100个数的八次循环那就是1016次运算,时间复杂度太高了,好在前四次的2023是确定的&#xf…
最新文章