基于STM32F4的4路CAN通信系统设计开题报告
2020-05-02 17:10:26
1. 研究目的与意义(文献综述)
现场总线是当今自动化领域技术发展的热点之一,它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。近年来,CAN现场总线以其所具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于工业自动化、船舶、医疗设备、工业设备等方面。CAN是控制器局域网络(ControllerArea Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,它具有网络各节点之间的数据通信实时性强,通信速率高,性价比高,高稳定可靠等特点,并且完善的通信协议可由 CAN 控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期。RS-232、RS-485、CAN等总线都是过去或者现在使用较为广泛的总线,但是CAN相对于RS-232、RS-485有一些较为突出的优点,这就使得CAN总线已形成国际标准的现场总线。
RS-232串口标准是在低速率串行通讯增加通讯距离的单端标准。RS-232采取不平衡传输方式,即单端通讯。其收发端的数据信号都是相对于地信号的。所以其共模抑制能力差,再加上双绞线的分布电容,其传输距离最大约为15M,最高速率为20KBPS,且其只能支持点对点通信。
为了改善RS-232的局限性,人们又提出了RS-485的接口标准,RS-485采用平衡发送和差分接收方式实现通信,由于传输线通常使用双绞线,又是差分传输,所以有极强的抗共模干扰的能力,RS-485最大的通信距离约为1219M,最大传输速率为10Mb/S,RS-485采用半双工工作方式,支持多点数据通信。RS-485总线网络拓扑一般采用终端匹配的总线型结构。即采用一条总线将各个节点串接起来,不支持环形或星型网络,RS-485/422总线一般最大支持32个节点。
针对RS-485的部分局限性,CAN总线就很好地改善了,CAN控制器属于多主方式,网络中的各节点都可根据总线访问优先权采用无损结构的逐位仲裁方式竞争向总线发送数据,且CAN协议废除了站地址编码,而选择对通信数据进行编码,这使不同的节点同时接收到相同的数据,这就使CAN总线构成的网络各节点之间的数据通信实时性强,而RS-485只能构成主从式结构系统,通信方式也只能以主站轮询的方式进行,系统的实时性、可靠性较差。同时,CAN总线通过CAN控制器接口芯片的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或者悬浮状态,CANL端只能是低电平或者悬浮状态,这就保证了不会出现像在RS-485网络中,当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现在RS-485中,因个别节点出现问题,使得总线处于“死锁”状态。最后,CAN具有完善的通信协议,可由CAN控制器芯片及其接口芯片来实现,从而大大降低了系统的开发难度,缩短了开发周期,这相对只有电气协议的RS-485是无法比拟的。
当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。对每个节点来说,无论数据是否是发给自己的,都对其进行接收。每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置十分重要。
当一个站要向其它站发送数据时,该站的CPU将要发送的数据和自己的标识符传送给本站的CAN芯片,并处于准备状态;当它收到总线分配时,转为发送报文状态。CAN芯片将数据根据协议组织成一定的报文格式发出,这时网上的其它站处于接收状态。每个处于接收状态的站对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收它。
CAN通讯协议主要描述设备之间的信息传递方式。CAN层的定义与开放系统互连模型(OSI)一致。每一层与另一设备上相同的那一层通讯。实际的通讯发生在每一设备上相邻的两层,而设备只通过模型物理层的物理介质互连。CAN的规范定义了模型的最下面两层:数据链路层和物理层。下表1.1中展示了OSI开放式互连模型的各层。应用层协议可以由CAN用户定义成适合特别工业领域的任何方案。已在工业控制和制造业领域得到广泛应用的标准是DeviceNet,这是为PLC和智能传感器设计的。
7应用层 | 最高层。用户、软件、网络终端等之间用来进行信息交换 |
6表示层 | 将两个应用不同数据格式的系统信息转化为共同理解的格式 |
5会话层 | 依靠低层的通信功能来进行数据的有效传递 |
4传输层 | 两通讯节点之间数据传输控制 |
3网络层 | 规定了网络连接的建立、维持和拆除的协议 |
2数据链路层 | 规定了在介质上传输的数据位的排列和组织 |
1物理层 | 规定通讯介质的物理特性 |
表1.1
CAN能够使用多种物理介质,例如双绞线、光纤等。最常用的就是双绞线。信号使用差分电压传送,两条信号线被称为“CAN_H”和“CAN_L”,静态时均是2.5V左右,此时状态表示为逻辑“1”,也可以叫做“隐性”。
bxCAN的ID筛选器:
使用筛选器,可以筛选出想要接收的指定ID数据,屏蔽不想要的数据,通过设置还筛选器,接收到的信息ID符合筛选器要求,那么消息将会被接收。一般STM32有14个筛选器,互联型有28个筛选器。
筛选器的两种工作模式:
1. 屏蔽模式:即掩码模式,通过设置寄存器:CAN_FxR1和CAN_FxR2(x指使用x号筛选器)。CAN_FxR1配置为期望收到的ID,CAN_FxR2为可选择屏蔽不检查不关心的ID位,即设置掩码ID。
2. 列表模式:
列表模式没有设置掩码ID功能,因此CAN_F0R2充当CAN_F0R1使用,只要接受的ID符合CAN_F0R1或者CAN_F0R2都可以。
bxCAN的发送和接收:
1. 发送:bxCAN有3个发送邮箱,进行消息的发送。
2. 接收:bxCAN有两个FIFO,每个FIFO有3个邮箱,通过设置哪个FIFO进行消息接收,当有消息时会分别依次存进每个邮箱,若邮箱的消息没有及时读出,会出现溢出。
bxCAN的位时序(波特率设置):
上面的CAN概念简单的介绍了波特率的设置,bxCAN将传播时间段和相位缓冲时间段合并成一个段,因此只有3个段的位时间:tsjw,tb1,tb2。
另外波特率还跟bxCAN外设的时钟总线频率(fAPB1)以及分频系数(brp)有关。波特率公式:Fpclk1/((tsjw tbs1 tbs2)*brp)。
由于CAN总线是一种面向内容的编址方案,因此很容易建立高水准的控制系统并灵活地进行配置。我们可以很容易地在CAN总线中加进一些新站而无需在硬件或软件上进行修改。当所提供的新站是纯数据接收设备时,数据传输协议不要求独立的部分有物理目的地址。它允许分布过程同步化,即总线上控制器需要测量数据时,可由网上获得,而无须每个控制器都有自己独立的传感器。
同时, 作为Cortex M3市场的最大占有者,ST公司在2011年又推出基于Cortex M4内核的STM32F4系列产品,相对与STM32F1/F2等Cortex M3产品, STM32F4采用Cortex M4内核,带FPU和DSP指令集,而STM32F1采用的是Cortex M3内核,不带FPU和DSP指令集。而且STM32F4拥有多达192KB的片内SRAM,带摄像头接口(DCMI)、加密处理器(CRYP)、USB高速OTG、真随机数发生器、OTP存储器等,接着,对于相同的外设部分,STM32F4具有更快的模数转换速度、更低的ADC/DAC工作电压、32位定时器、带日历功能的实时时钟(RTC)、IO复用功能大大增强、4K字节的电池备份SRAM以及更快的USART和SPI通信速度,其次,STM32F4最高运行频率可达168Mhz,而STM32F1只能到72Mhz;STM32F4拥有ART自适应实时加速器,可以达到相当于FLASH零等待周期的性能,STM32F1则需要等待周期;STM32F4的FSMC采用32位多重AHB总线矩阵,相比STM32F1总线访问速度明显提高。最后, STM32F4拥有更低的功耗:STM32F40x的功耗为:238uA/Mhz,其中低功耗版本的STM32F401更是低到:140uA/Mhz,而STM32F1则高达421uA/Mhz。
目前国外的汽车总线技术已经渐进成熟,基于CAN总线的数据通信技术和网络技术在汽车行业有良好的应用前景。汽车总线技术很快将得到普及,是汽车发展的一个必然趋势。汽车总线在中国的发展却不容乐观。国内的零部件生产虽然数量可观,但整体规模并不大,缺乏开发能力。
但总的来说,目前CAN总线技术在我国汽车工业中的应用尚处于试验和起步阶段大部分的汽车还没有采用汽车总线的设计,因而存在着不少问题。根据ISO (国际标准化组织)定义的OSI[9]模型,CAN协议定义了物理层及数据链路层规范,这为不同的汽车厂商制定符合自身需要的应用层协议提供了很大的便利。
总之,汽车总线在中国已经有了一定的发展,并取得了一些成绩,但也应该看到我们与成熟的国外技术相比还有很大的差距,其中包括汽车硬件ECU的选择及其控制精度、总线ECU运行的可靠性、传感器测量精度以及通信协议的制定、采用上等很多方面都需要有待改进、提高,以缩短与国外相机技术的差距。对汽车CAN总线进行进一步研究有着很重要的现实意义。
因此本课题采用基于STM32F4来进行四路CAN通信设计, 了解ARM单片机的资源分配以及使用方法,并就软件硬件结合实现多路CAN通信这一问题解决方案进行设计。
2. 研究的基本内容与方案
本课题采用基于STM32F4进行四路CAN通信设计,主要分为了解基于ARM嵌入式系统的工作原理、CAN通信系统的工作原理,掌握基于ARM嵌入式系统的4路CAN通信系统的关键性方法,完成ARM嵌入式系统的4路CAN通信系统硬件设计和软件设计,并且通过这一系列实践培养能够将数学、自然科学、工程基础和专业知识的基本概念用于对电气工程及其自动化专业领域复杂工程问题的适当表述的能力,学会将系统分析、问题提出、过程推理及相关方案选择能运用数学、自然科学、工程科学的基本原理描述典型电气工程及其自动化专业领域的复杂工程问题的物理本质,并抽象、归纳,理解其局限性,以获得有效结论,了解ARM单片机的资源分配以及使用方法,并就软件硬件结合实现多路CAN通信这一问题解决方案的设计/开发背景和意义,同时能够选择与使用恰当的数字仿真、计算机辅助电路设计等现代工程工具,对电气工程及其自动化专业领域复杂工程问题进行预测与模拟,并能够理解其局限性,考虑设计的实用性和现实意义的相关约束,以及对现实生活的影响,理解并掌握工程管理与经济决策的一般知识。
对于方案,在了解课题之后,由于STM32F4是自带2路CAN通信,所以一开始是有三种初步方案:1、采用两个STM32F4芯片,后接上一个选片芯片2、采用一个STM32F4芯片,后接上一个类似二四译码器的地址编译拓展芯片3、采用一个STM32F4芯片,在原有的2路CAN控制器基础上,选取MCU上部分空余的寄存器,来进行外接CAN控制器的控制。经过阅读文献和老师的指点后,选择了第三种方案(如图2.1)。
|
图2.1
本课题是基于STM32F4的设计,在MCU的选择上,选取144引脚的STM32F407ZGT6,并且根据引脚手册进行功能选用,CAN控制器选用SJA1000,CAN收发器选用TJA1050T,隔离电路摒弃之前使用较多的光电隔离电路,选取AD公司的ADUM1201多通道隔离器。
根据SJA1000、TJA1050T、ADUM1201的引脚接线,选择根据参数手册进行相应电路元件(主要为电源、电容、晶振)选取和引脚连接,对于STM32F407ZGT6,由于CAN复用,STM32F407ZGT6上有3个CAN1通道,2个CAN2通道,各选取一组作为自带的2路CAN通道(如表2.2)
通道 | 功能 | 引脚号 |
CAN1 | CAN1_RX | 114 |
CAN1_TX | 115 | |
CAN2 | CAN2_RX | 73 |
CAN2_TX | 74 |
表2.2
此外,采用STM32F407ZGT6自带的FSMC寄存器进行外接的2路CAN控制器进行控制(如表2.3):
CAN3 功能 | 引脚号 | 功能 | CAN4功能 | 引脚号 |
FSMC_A0 | 10 | AD0 | FSMC_A23 | 1 |
FSMC_A1 | 11 | AD1 | FSMC_A19 | 2 |
FSMC_A2 | 12 | AD2 | FSMC_A20 | 3 |
FSMC_A3 | 13 | AD3 | FSMC_A21 | 4 |
FSMC_A4 | 14 | AD4 | FSMC_A22 | 5 |
FSMC_A5 | 15 | AD5 | FSMC_D4 | 58 |
FSMC_A6 | 50 | AD6 | FSMC_D5 | 59 |
FSMC_A7 | 53 | AD7 | FSMC_D6 | 60 |
FSMC_A8 | 54 | ALE/AS | FSMC_D7 | 63 |
FSMC_A9 | 55 | ~CS | FSMC_D8 | 64 |
FSMC_A10 | 56 | CLKOUT | FSMC_D9 | 65 |
FSMC_A11 | 57 | ~WR | FSMC_D10 | 66 |
FSMC_A12 | 87 | ~RD/E | FSMC_D11 | 67 |
FSMC_A13 | 88 | ~RST | FSMC_A15 | 80 |
FSMC_A14 | 89 | ~INT | FSMC_A16 | 81 |
表2.3
之后通过AltiumDesigner进行引脚连接,在完成对CAN功能的接线后,再选取合适的晶振、复位电路等搭建STM32F407ZGT6的最小系统。
在完成基于STM32F4的四路CAN通信系统的外部设计后,进行四路CAN通信的软件设计。作为CAN网络中的节点,微控制器最重要的功能就是与系统中的其他节点进行通信,微控制单元STM32F4是系统进行CAN通信的核心元件,因此在主程序中,首先要对STM32进行初始化。涉及到CAN总线的初始化,其过程主要有设置模式寄存器,设置波特率,设置中断方式等等,对四路CAN的程序设计方法做出流程图(如图2.4)
|
图2.4
从基于STM32F4的CAN总线通信主程序流程图可以看出:程序的主体框架首先对STM32开发板进行初始化,接下来对CAN模块进行初始化,并构造要发送的CAN消息,然后进入程序的主循环。程序进入主循环后,判断当前CAN模块是否能够发送消息或接收消息,如果能,则发送或接收消息;如果不能,则跳过发送消息阶段。然后判断当前CAN模块是否有接收到中断,如果有,则中断处理子程序,如果没有中断则进行其他任务。
STM32F4基本扩展 CAN 外设又称 bxCAN,可与 CAN 网络进行交互。该外设支持 2.0A 和 B 版本的 CAN 协议,旨在以最少的 CPU 负载高效管理大量的传入消息,并可按需要的优先级实现消 息发送。bxCAN初始化流程主要分为:引脚配置以及使能时钟(APB1),其中CAN_RX引脚为上拉输入,CAN_TX为复用输出、设置bxCAN模式、设置波特率(tsjw,tb1,tb2,brp)、设置滤波器。bxCAN设置滤波器流程包括:选择筛选器组号、使用哪个FIFO(FIFO0或FIFO1)关联到筛选器号(即用哪个FIFO进行接收消息)、设置筛选器模式以及需要筛选的ID。bxCAN发送流程分为:选用哪种帧类型(一般可选:标准数据帧,扩展数据帧,遥控帧)、设置标准帧(StdId),扩展帧(ExtId)的ID,以及需要一次性发送的数据长度(字节数)、将要发送的数据赋值给结构体成员(最多只能赋值8个字节的数据,每个数据1字节),并发送。bxCAN接收流程包括:等待有消息到达、将接收的消息(消息为结构体类型)存于指定FIFO(有2个FIFO,每个FIFO下有3个邮箱)、把消息的数据提出、将FIFO里的消息释放,避免堆积。接着将根据图2.4通过keil进行软件设计,在算法设计上实现四路CAN通信系统。
3. 研究计划与安排
第1~2周: 查阅文献,翻译外文资料,初步确定设计方案;
第3~4周: 毕业实习,撰写毕业实习报告;
4. 参考文献(12篇以上)
[1]基于arm的can通信系统的设计与实现[j]. 王庆双,蔡冬生. 航空电子技术. 2011(01)
[2]基于arm的双can通信系统设计[j]. 彭双平. 电子设计工程. 2014(18)
您可能感兴趣的文章
- 一种确定磁探针集总电路参数的标定方法外文翻译资料
- 一种人体可接触的大气压低温等离子体射流装置研究(适合电气B方向)毕业论文
- 氩氧中大气压DBD放电特性研究(适合电气B方向)毕业论文
- 大气压氩等离子体射流放电影响因素的仿真研究(适合浦电气B方向)毕业论文
- 含氧高活性均匀DBD改性聚合物薄膜研究(适合浦电气B方向)毕业论文
- 反应器结构对气液两相DBD放电特性的比较(适合浦电气B方向)毕业论文
- 南京某公司研发楼电气设计毕业论文
- 金帆北苑地块经济适用住房——02栋商住楼电气设计(适用于浦电气1004~06A方向学生)毕业论文
- 扬州人武部大楼电气设计毕业论文
- 金帆北苑地块经济适用住房——04栋商住楼电气设计(适用于浦电气1004~06A方向学生)毕业论文