基于STM32的CAN总线的数据采集卡设计毕业论文.docx
《基于STM32的CAN总线的数据采集卡设计毕业论文.docx》由会员分享,可在线阅读,更多相关《基于STM32的CAN总线的数据采集卡设计毕业论文.docx(61页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学 号: 0121311371307能力拓展训练题 目基于STM32的CAN总线数据采集卡设计学 院自动化学院专 业自动化专业班 级自动化1305班姓 名司文雷指导教师罗璠2016年8月27日任务书1、要求设计如下功能的数据采集卡:(1)采用STM32对8路05V模拟信号进行采集,采样频率为100Hz。(2)采集的数据要求通过CAN总线发送出去。(3)数据采集卡的CAN总线标识符可用拨码开关指定。2、要求选择合适的STM32微控制器,具备对CAN总线的支持,并选择合适的CAN接口电路芯片;3、要求完成采集卡的硬件电路设计,包括原理图设计、PCB布线设计;4、要求完成STM32程序设计,并进行仿
2、真;5、提交设计报告。1 STM32简介3 1.1 STM32F105VCT6的参数3 1.2 内部资源4 1.3 Cortex-M3内核简介52 CAN概述6 2.1CAN简介6 2.2工作原理7 2.3CAN的高层协议7 2.4 CAN波特率计算8 2.4.1 波特率8 2.4.2CAN波特率的计算83硬件电路设计134软件实现14 4.1STM32电压数据采集的软件实现14 4.1.1AD-DA模块的编写14 4.2CAN 总线节点的软件设计24结 论33参考文献34附录135附 录236摘 要摘要:CAN(Controller Area Network,控制器局域网)是一种有效支持实时
3、控制的串行数据通信网络。自上世纪80年代诞生以来,CAN总线以其可靠性好、实时性高及组网简便灵活等优势而受到人们的青睐,并在众多行业领域内得到了广泛的应用。随着工业技术的不断进步,控制过程的自动化与网络化是必然的发展趋势,同时数据的传输量越来越大,对数据传输的实时性要求也更加苛刻。笔者采用内置 CAN 控制器的高性能微处理器 STM32F105vct6 作为节点的微处理器,使用带隔离的高速集成 CTM1050T 作为 CAN 收发器,数据输入输出通道采用光电耦合器进行隔离,设计了 CAN 总线系统的数据采集节点。本设计节点具有体积小、功耗低、抗干扰能力强、实时性高及数据处理能力强等优势。实现,
4、它主要实现现场节点的监控及数据的显示、分析和存储。数据转换器采用 RS-232 转 CAN,它主要实现串口协议与 CAN 协议之间的桥接,并将接收的数据进行转发。各节点与工业现场的仪器仪表相连接,不分主次地挂接在 CAN 总线上,它主要实现数据的采集与处理,并接收来自 CAN 总线上的数据或将数据发送到 CAN 总线上。关键词:STM32;CAN总线;数据采集1 STM32简介STM32F105xx增强型系列使用高性能的ARM/Cortex-M3/32位的RISC内核,工作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K字节的SRAM),丰富的增强I/O端口和联接到两条APB总
5、线的外设。所有型号的器件都包含2个12位的ADC 、3个通用16位定时器和一个PWM定时器,还包含标准和先进的通信接口:多达2个I2C和SPI、3个USART、一个USB和一个CAN。 STM32F105xx增强型系列工作于-40至+105 的温度范围,供电电压2.0V至3.6V,一系列的省电模式保证低功耗应用的要求。 这些丰富的外设配置,使得STM32F105xx增强型微控制器适合于多种应用场合: 电机驱动和应用控制 ; 医疗和手持设备 ; PC外设和GPS平台; 工业应用:可编程控制器、变频器、打印机和扫描仪 ;STM32开发板核心芯片的参数如表1-1表1-1 器件功能和配置(STM32F
6、105xx 增强型) 芯片引脚图如图1-2:图1-2 STM32F105xx增强型LQPFP48管脚图1.2 内部资源STM32有丰富的内部资源,如下所示:RealView MDK(Miertocontroller Development Kit)基于ARM微控制器的专业嵌入式开发工具;内置闪存存储器;内置SRAM; 嵌套的向量式中断控制器(NVIC);外部中断/事件控制器(EXTI); 时钟和启动; 自举模式; DMA ;RTC(实时时钟)和后备寄存器 ;窗口看门狗; I2C总线 ;通用同步/异步接受发送器(USART); 串行外设接口(SPI); 控制器区域网络(CAN) ;通用串行总线(
7、USB); 通用输入输出接口(GPIO); ADC(模拟/数字转换器) ;温度传感器; 串行线JTAG调试口(SWJ-DP)。1.3 Cortex-M3内核简介Cortex-M3内核包含一个适用于传统Thumb和新型Thumb-2指令的译码器、一个支持硬件乘法和硬件除法的先进ALU、控制逻辑和用于连接处理器其他部件的接口。Cortex-M3处理器是首款基于ARMv7-M架构的ARM处理器。中央Cortex-M3内核使用3级流水线哈佛架构,运用分支预测、单周期乘法和硬件除法功能实现了出色的效率(1.25DMIPS/MHz)。Cortex-M3处理器是一个32位处理器,带有32位宽的数据路径、寄存
8、器库和基于传统ARM7处理器的系统只支持访问对齐的数据,沿着对齐的字边界即可对数据进行访问和存储。Cortex-M3处理器采用非对齐数据访问方式,使非对齐数据可以在单核访问中进行传输。Cortex-M3处理器是专为那些对成本和功耗非常敏感但同时对性能要求又相当高的应用而设计的。凭借缩小的内核尺寸和出色的中断延迟性能、集成的系统部件、灵活的配置、简单的高级编程和强大的软件系统,Cortex-M3处理器将成为从复杂的芯片系统到低端微控制器等各种系统的理想解决方案。表2-3为Cortex-M3处理器与ARM7作比较。表2-3 Cortex-M3与ARM7相比较 2 CAN概述2.1CAN简介CAN,
9、全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。 一个由CAN 总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。例如,当使用Philips P82C250作为CAN收发器时,同一网络中允许挂接110个节点。CAN 可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检
10、定特性也增强了CAN的抗电磁干扰能力。2.2工作原理当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。对每个节点来说,无论数据是否是发给自己的,都对其进行接收。每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置十分重要。 当一个站要向其它站发送数据时,该站的CPU将要发送的数据和自己的标识符传送给本站的CAN芯片,并处于准备状态;当它收到总线分配时, 转为发送报文状态。CAN芯片将数据根据协议组织成一定的报文格式发出,这时网上
11、的其它站处于接收状态。每个处于接收状态的站对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收它。 由于CAN总线是一种面向内容的编址方案,因此很容易建立高水准的控制系统并灵活地进行配置。我们可以很容易地在CAN总线中加进一些新站而无需在硬件或软件上进行修改。当所提供的新站是纯数据接收设备时,数据传输协议不要求独立的部分有物理目的地址。它允许分布过程同步化,即总线上控制器需要测量数据时,可由网上获得,而无须每个控制器都有自己独立的传感器。2.3CAN的高层协议 CAN的高层协议(也可理解为应用层协议)是一种在现有的底层协议(物理层和数据链路层)之上实现的协议。高层协议是在CAN
12、规范的基础上发展起来的应用层。许多系统(像汽车工业)中,可以特别制定一个合适的应用层,但对于许多的行业来说,这种方法是不经济的。一些组织已经研究并开放了应用层标准,以使系统的综合应用变得十分容易。 一些可使用的CAN高层协议有: 制定组织主要高层协议 CiA CAL协议 CiA CANOpen协议 ODVA DeviceNet 协议 Honeywell SDS 协议 Kvaser CANKingdom协议 2.4 CAN波特率计算2.4.1 波特率波特率(Baud rate)即调制速率,指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数。它是对符号传输速率的一种度量,1波特
13、即指每秒传输1个符号。 单位“波特”本身就已经是代表每秒的调制数。2.4.2CAN波特率的计算 CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;CAN_InitStructure.CAN_BS1 = CAN_BS1_3tq; 注意/#define CAN_BS1_3tq (uint8_t)0x02) /*! 3 time quantum */CAN_InitStructure.CAN_BS2 = CAN_BS2_5tq;CAN_InitStructure.CAN_Prescaler = 4;/2nominal bit time(3+5+1)tq=9tq关于分频系
14、数 查看 system_stm32f10x.c下面的static void SetSysClockTo72(void) 函数/* HCLK = SYSCLK */* PCLK2 = HCLK */* PCLK1 = HCLK/2 */所以can时钟 72MHZ/2/4=9 Mhztq=1/36Mhz波特率为 1/nominal bit time= 9/9=1MHZ void CAN_Configuration(void) CAN_InitTypeDef CAN_InitStructure; CAN_FilterInitTypeDef CAN_FilterInitStructure; /* CA
15、N register init */ CAN_DeInit(); CAN_StructInit(&CAN_InitStructure); /* CAN cell init */ CAN_InitStructure.CAN_TTCM=DISABLE; CAN_InitStructure.CAN_ABOM=DISABLE; CAN_InitStructure.CAN_AWUM=DISABLE; CAN_InitStructure.CAN_NART=DISABLE; CAN_InitStructure.CAN_RFLM=DISABLE; CAN_InitStructure.CAN_TXFP=DISA
16、BLE; CAN_InitStructure.CAN_Mode=CAN_Mode_Normal; CAN_InitStructure.CAN_SJW=CAN_SJW_1tq; CAN_InitStructure.CAN_BS1=CAN_BS1_9tq; CAN_InitStructure.CAN_BS2=CAN_BS2_8tq; CAN_InitStructure.CAN_Prescaler=200; CAN_Init(&CAN_InitStructure); /* CAN filter init */ CAN_FilterInitStructure.CAN_FilterNumber=0; C
17、AN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask; CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_16bit; CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000; CAN_FilterInitStructure.CAN_FilterIdLow=0x0000; CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000; CAN_FilterInitStructure.CA
18、N_FilterMaskIdLow=0x0000; CAN_FilterInitStructure.CAN_FilterFIFOAssignment=0; CAN_FilterInitStructure.CAN_FilterActivation=ENABLE; CAN_FilterInit(&CAN_FilterInitStructure); 注意/#define CAN_BS1_3tq(uint8_t)0x02) /*!BTR = (u32)(u32)CAN_InitStruct-CAN_Mode CAN_SJW CAN_BS1 CAN_BS2 CAN_Prescaler - 1); Fpc
19、lk=36M 时can波特率250k的配置为 /* CAN cell init */ CAN_InitStructure.CAN_TTCM=DISABLE; CAN_InitStructure.CAN_ABOM=DISABLE; CAN_InitStructure.CAN_AWUM=DISABLE; CAN_InitStructure.CAN_NART=DISABLE; CAN_InitStructure.CAN_RFLM=DISABLE; CAN_InitStructure.CAN_TXFP=DISABLE; CAN_InitStructure.CAN_Mode=CAN_Mode_LoopB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STM32 CAN 总线 数据 采集 设计 毕业论文
限制150内