历史上的今天
返回首页

历史上的今天

今天是:2025年03月08日(星期六)

2021年03月08日 | 基于CAN总线的智能节点的设计

2021-03-08 来源:eefocus

现场总线是工业自动化领域中实现分布式控制而产生的工业级局域网,其可以实现控制系统内各节点的实时数据通信,具有良好的可靠性,成为当前工业控制领域内的研究热点。在众多现场总线中,CAN总线以其高性能的特点,被广泛应用于航天航空、工业控制、环境监测,医疗设备等多个方面。基于CAN总线的控制节点可实现对工业控制中多点


的分布式控制,具有重要的研究价值。


1 总体结构设计


CAN总线采用了不同于传统的分布式控制系统的构架,由分散于工业控制中现场智能节点完成传统系统中主机的常规测试与控制。因此基于CAN总线的分布式控制系统的主机不必监控底层设备,实现高性能的高层次控制与管理。一般基于CAN总线的工业分布式控制系统中由主机、数据转换器以及智能节点组成。


整个系统的结构如图1所示,主机和智能节点通过CAN总线连接,智能节点作为从机通过CAN接口连接CAN总线。主机由基于LabVIEW设计的监测软件和硬件资源组成,主要实现对智能节点的监测以及测试数据的显示和存储。数据转换器是串口转CAN总线实现数据的转换,并实现转发。各个智能节点都挂接到 CAN总线上,将采集到的数据发送到CAN总线上或者接受CAN总线上数据进行处理。智能节点主要由微控制器、CAN收发器以及相应I/O接口组成。


智能节点设计使用STM32F107作为其主控芯片,集成多项高性能工业标准接口的互联型微处理器,其采用32位ARM Cortex—M3核心,主频高达72 MHz,其出色的兼容性以及高性能,低价格,具有较大的RAM和ROM,对于程序量较大的嵌入式系统有良好的支持,广泛应用于工业控制中。

新STM32外设丰富强大,包括10个定时器,其中一些不仅可以进行普通的定时还可以进行脉冲捕获、以及PWM生成;2个12位AD模数转换器,其最大采样率高达2M sample/s、2个12位DA数模转换器、2个I2C接口、5个UART接口支持最高921 600 bps和3个SPI端口和高质量数字音频接口IIS,拥有全速USB(OTG)接口,支持2路CAN2.0B接口,以及高速以太网10/100 MAC模块接口。


CAN收发器选择德州仪器的SN65HVD230,该器件具有高速率、高抗干扰能力和高可靠性CAN总线的串行通信。该芯片在CAN总线系统中具有广泛的应用,便于更换。


2 系统硬件设计


一般的CAN总线智能节点由三个部分:微控制器、CAN总线控制器以及CAN总线收发器组成。微控制器STM32F107内部已经集成了CAN总线控制器,故本文涉及的智能节点主要由STM32F107和CAN总线收发器组成。


图2是基于STM32F107智能节点系统的CAN总线部分原理图。图中STM32F107的PD0和PD1脚分别为CANRX和CANTX引脚,为 CAN总线的输入输出管脚,连接CAN总线收发器才能与CAN物理总线相连。CAN收发器SN65HVD230,具有速度高达1 Mbps的差分发送、差分接收能力,提供三种工作模式:高速、低电流待机和斜率控制。自身具有短路保护、失地保护、过压保护和过热保护。常态下工作电压是 -2V~7V,瞬时耐压范围是-25V~25V。CAN收发器SN65HVD230第8引脚经10 k电阻与PD15连接,这样可以由微控制器控制其工作模式,当PD 15为低电平时为高速工作模式,PD15为高电平时为低电流待机模式。CAN收发器SN65HVD230与CAN总线的接口设计时采用较强的抗干扰措施,以及过流保护等方式。其中与CANH、CANL串连的5 k电阻可起到一定的限流作用;并联在CANH、CANL和地之间的32 pF的小电容,防止高频干扰,同时具有一定的防电磁辐射能力;在CAN总线的输入端与地之间接的防雷击管,可以滤除CAN总线输入端和地之间的瞬态突变干扰。


复位电路则是包括按键复位电路和上电自动复位电路组成,加强其可靠性。本文为了系统的调试,集成了JTAG的调试接口。

3 系统软件设计


基于CAN总线的智能节点主程序流程如图3所示,其发送方式通过查询实现,而发送数据方式通过中断来实现。智能节点的主程序主要包括系统及外设初始化、CAN控制器初始化、数据发送、数据接收部分。


在CAN控制器初始化时,必须要求其控制寄存器中复位位置较高时,才可以访问寄存器。因此,在初始化寄存器前,系统必须确保已经进入复位状态,在访问CAN总线时寄存器中的内容决定波特率的大小。总线定时寄存器的初始化值应根据CAN控制器的晶振频率进行设计。


数据发送时,CAN控制器将数据发送到CAN总线是由CAN控制器自动完成的,发送主程序将发送数据的信息帧发送到CAN的发送缓冲区,然后启动发送命令即可。


数据接收时,CAN控制器从CAN总线将数据读取到CAN接收缓冲区也是自动完成的。接收程序需要从接收缓冲区读取数据。设计时充分考虑读接收缓存器(RBF0和RBF1)内容后,微控制器必须通过置释放接收缓存位为高,从而释放缓存器,使得另一个立即变为有效。


4 结束语


以STM32F107微处理器为核心,设计了CAN总线的智能数据采集节点,该系统充分发挥CAN总线的优点,具有高可靠性、高抗干扰性、高传输率以及灵活的组网方式等。该智能节点可实现分布式多节点测试,实现了测试过程智能化和网络化,在工业测控领域有广阔的应用前景,尤其是处理数据较多和实时性严苛的环境下,该设计节点会更加有优势。


推荐阅读

史海拾趣

华润微(CRMICRO)公司的发展小趣事

华润微一直注重技术创新和研发投入。公司拥有一支高素质的研发团队,致力于宽禁带半导体(即第三代半导体)等领域的技术研发。通过不断的努力和积累,华润微在新技术研发方面取得了丰硕的成果,成为宽禁带半导体领域的佼佼者。同时,公司也加大了对封装测试技术的研发投入,不断提升其封装测试能力和技术水平。

Allianc公司的发展小趣事

在XXXX年,Allianc公司迎来了一次重大的技术突破。公司研发团队成功开发出了一款具有领先性能的新型电子产品,该产品不仅具有更高的性能和更低的能耗,还具备更好的用户体验。这一技术突破使得Allianc公司在市场上迅速脱颖而出,赢得了大量客户的青睐。随着产品销量的不断攀升,公司的知名度和影响力也逐渐扩大。

GETEDZ ( HVGT)公司的发展小趣事
根据电路的需要选择合适的接触器、继电器等电器元件,确保元件的性能和质量满足要求。
Crocus Technology公司的发展小趣事

随着技术的不断成熟和市场需求的变化,Crocus Technology开始拓展其产品线。2015年,公司成功推出了首款磁开关产品,这标志着公司在磁传感器领域迈出了重要的一步。随后,公司又陆续推出了位置传感和2D传感器产品,进一步巩固了其在磁传感器市场的地位。

ACCUTEK公司的发展小趣事

随着产品质量的不断提升和市场份额的逐步扩大,ACCUTEK公司开始将目光投向国际市场。公司积极参加国际电子展会和技术交流活动,与全球多家知名企业建立了合作关系。同时,公司还在海外设立了多个分支机构,以便更好地服务当地客户。这些举措不仅提升了公司的国际影响力,也为公司的长远发展注入了新的活力。

Hirosugi-Keiki公司的发展小趣事

ACCUTEK公司成立于XXXX年,起初只是电子行业中的一家小型初创企业。创始人凭借对电子技术的深入理解和市场趋势的敏锐洞察,决定专注于高精度数控设备的研发和生产。公司初期面临着资金短缺、技术瓶颈和市场认可度低等挑战,但凭借团队的坚持和不懈努力,逐渐在市场中站稳脚跟,赢得了初步的客户信任。

问答坊 | AI 解惑

2007年全国大学生电子设计竞赛 题目推测汇总(不断更新中8.30)

本帖最后由 paulhyde 于 2014-9-15 04:19 编辑 2007年全国大学生电子设计竞赛 题目一: 一、 设计任务 设计一多功数字自适应电参数测试仪 二、设计要求 1、 基本要求 系统功能具体要求如下: (1)基本输入信号: 电 阻:电阻0~1MΩ。 输 ...…

查看全部问答>

求一个关于单片机20000字符的英文文献+翻译

本帖最后由 paulhyde 于 2014-9-15 09:50 编辑 毕业设计要求找一个20000字符的英文文献 翻译过来 急求!!!!!!!  …

查看全部问答>

matlab第二课---switch-case的用法!

看看分支选择结构吧! [ 本帖最后由 gaoxiao 于 2009-6-11 21:27 编辑 ]…

查看全部问答>

如何定制支持MFC的SDK

现在想把原来在WINCE5.0开发的MFC程序移植到WINCE6.0上面, 但一直不能成功.特来请教下: 我现在的环境是VS2005+WINCE6.0  之前在网上找了下, 说是WINCE6.0默认是不支持MFC的.要手动添加几个DLL文件. 现在我也把 MFC80ENU.DLL加进去了, ...…

查看全部问答>

请教各位硬件实验PlatForm Builder 平台有关的问题

最近老师让交个硬件实验设计 ,要求在PlatForm Builder平台下实现,请教各位PlatForm Builder平台怎么装,有些同学装上这个平台不是系统崩溃,就是电脑运行速度速减,请教各位了,谢谢…

查看全部问答>

不能编译DriverStudio3.2库的问题

我使用的是vs2005 DriverStudio3.2 XPDDK编译DriverStudio库文件时出现这样的问题如下: C:\\PROGRA~1\\COMPUW~1\\DRIVER~1\\DRIVER~4\\source>call C:\\WINDDK\\2600\\bin\\setenv.bat C:\\WINDDK\\2600 chk   C:\\PROGRA~1\\COMPUW~1 ...…

查看全部问答>

麻烦高手看下编写的AT89C52对TLC1543取样的程序

;-------------------1543对应的管脚接线方式----------------------- ;1543AT89C52 ;EOCP1.5 ;I/O CLOCKP1.6 ;ADDRESSP1.7 ;DATAOUTP3.0 ;CSP3.1 ;=========================================== ...…

查看全部问答>

blob源码中configure.in的问题

case \"$board_name\" in     assabet)         board_name=\"Intel Assabet\"         AC_DEFINE(ASSABET)                      ...…

查看全部问答>

TI秀+13年的开发板

本帖最后由 gaon 于 2014-1-24 14:49 编辑 TI推广又一年。参加活动送了些开发板, 340,最早拿到的一块板子。 2000 参加研讨会送的。          电源评估板。           ...…

查看全部问答>

Helper2416-14——裸机第六弹——YL-boot——更新烧写bin文件到NAND(烧写UBOOT)

本帖最后由 yuanlai2010 于 2014-7-21 22:01 编辑 YL-boot——更新通过串口烧写bin文件到NAND(烧写UBOOT) 参与Helper2416开发板助学计划心得 经过周末的nand操作学习,还有今天一整天的无厘头的调试,终于成功烧写uboot到nand了,亲测u-boot. ...…

查看全部问答>