《STM32 传感器接口模块》由会员分享,可在线阅读,更多相关《STM32 传感器接口模块(9页珍藏版)》请在金锄头文库上搜索。
1、基于 STM32的传感器接口模块的设计翟羽佳 吴仲城 沈春山 时间:2011 年 09月 17日 山西电子技术字 体: 大 中 小关键词:STM32 传感器接口 UDP协议 摘要:基于 STM32实现了电流型、电压型以及数字 IO型传感器接口模块;进行了接口模块的软件设计,说明了详细的固件代码设计。除传统串口外,提供以太网接口,嵌入 UDP协议,提供后期开发的便利接口。关键词:信号接口;传感器接口模块;UDP 协议0 引言物联网将会是未来很长一段时间内 IT产业的发展趋势,一个完整的物联网系统的构成或产业链的划分,目前业界比较统一的观点基本都认为应该包括三个层面:末端设备或子系统、通信连接系统
2、、以及管理和应用系统。即 Device-设备、Connect-连接和 Manage-管理。由于数字整合的需求日益增长,对作为感知层核心组成元素的传感器数据融合提出了更高要求。如何将传感器连入网络成为一个尤其重要的问题。传感器通过接口模块接入到相应网络。传感器通过信号接口连接到接口模块,节点以相应的适配模块接收和处理传感器输出信号,并将传感器原始数据转换为网络用户可以识别的信息,最后通过网络通信接口连接到上位机或者任何网络。传感器感知外部环境,某种敏感变量如电阻、电荷之类参量发生变化,然后经过信号处理,产生可供AD转换的电压或电流信号(目前 ADC应用主要还是电压输入,电流模式 ADC尚未大规模
3、应用),而后经 AD转换为可供处理的数字信号。由于在不同应用场合中会使用到针对上述不同层次接口的传感器,故信号接口标准针对不同层次设计:层次 1:需经过信号调理然后才能输入 AD处理,如热电阻、420mA 电流输出;层次 2:直接符合 AD输入要求的,如 05V 电压输出;层次 3:数字信号输出,如开关量、RS232 接口输出;如图 2所示。 直接输出可以连入网络的接口,比如现场总线接口(如 CAN、Profibus、工业以太网)、无线通信接口(如 Zigbee、WI-FI)等一般无需考虑信号接口的问题,如需连入不同网络可以使用相应的网关(如 CAN转以太网)。基于此分类依据,传感器输出信号一
4、般有电压信号、电流信号、电阻信号、频率信号、脉冲信号、数字电平信号等。1 传感器接口模块设计概述从功能上来讲,接口模块需要完成传感器与应用网络之间的连接,解决传感器的异构性带来的诸多问题,完成从原始信号到数据的数据流过程。总的来说包括传感器接入及激励、信号调理、AD 转换数字滤波、数据处理和网络通信。不同信号输入类型的接口模块在整体功能上是类似的,主要不同在于信号调理部分,以及 AD转换的不同要求。接口模块整体功能如图 3所示。信号调理针对不同信号类型设计。传感器原始输出的标准信号接入后,经过信号调理后生成可供 ADC处理的信号。有的传感器还需提供激励源。ADC依据不同应用需求所需的通道数、精
5、度、速度进行选择。可选择外置 ADC,系统要求不高或者在一些特殊场合也可使用 SOC片上系统的内置 ADC(比如 TI的 MSC1210系列 MCU内置 24bit sigma-delta ADC,尤其适合处理微弱信号)。另外需要外扩存储器存储与传感器或者接口模块相关的描述信息,一般可使用 EEPROM。鉴于此功能,存储模块芯片的选取就得考虑总线读写速度以及可编程性。由于需要在标准化接口模块正常工作的同时修改 Flash中的电子表单,所以存储芯片得支持 IAP(在应用编程)功能。整个模块的核心处理器为 MCU或者 FPGA,负责对整个模块的逻辑进行控制,可根据不同应用要求选择 8位单片机或者高
6、性能 ARM处理器或者 FPGA可重配置芯片。网络通讯采用可根据不同应用场合选取不同接口,比如 RS485总线、CAN 总线、Ethemet、WiFi 等。可支持多个接口模块,主机可对从模块进行配置,可自由添加模块。2 基于 STM32的传感器接口模块设计21 电流接口模块设计以 STM32F103系列处理器为核心,外挂 ADC采样芯片、以太网接口芯片、RS-232485 接口芯片。模拟电流信号经电流-电压转换电路、电压放大电路、电平匹配电路输入至 ADC采样芯片后由处理器采集。ADC芯片采用 5V的外置参考电压,提高精确度。EEPROM 芯片通过 IIC接口与处理器通信。处理器经由串口以及以
7、太网接口与上位机进行数据和控制信息交换。调试接口为 20针标准 JTAG接口。电源部分设计为输入 24V直流,经线性稳压电路和电压反转电路生成模拟部分需要的 5V电压和数字电路需要的 33V 电压。电源输入的 24V电压可以直接供给工业上常用的二线制电流输出传感器做激励。整体结构如图 4所示。下面介绍具体电路设计。电源部分为+24V-DC 输入经 LM2596(IC1)开关电源芯片产生+5V-DC 电压,+5V电源直接供给模拟部分电路。IC2 为 LM111733 线性稳压芯片,将 5V电源变换为 33V 供给数字电路。数字地与模拟地隔离,通过 10 H 电感或者磁珠连接,可以抑制数字电路对于
8、模拟电路部分的干扰。LED1 和 LED2分别用来指示两部分的电源接通状况。输入的电流由 100 精密负载电阻变换为电压信号,由同向放大电路放大至 AD转换所需要的电平,增益可以由电位器来进行微调。运放采用 AD8551(U$3),其在低压差单电源情况下表现完美,具有极低失调电压(5 V)、极低的温漂(003V)以及轨对轨输入输出的特性。+24V电压经过 78L12Z(IC4)稳压产生 12V电源供给 AD586(U52)芯片产生高精度 5V基准信号,输入到AD采样芯片 ADS8344(U$1)的参考输入端。AD586 的 trim端连接 10k电位器,可以对输出的基准电压进行精密调节。四路电
9、流采样信号经前级放大后直接输入到 AD芯片 CH0-3通道,ADC 由数字 SPI接口连接 MCU进行控制采集。EEPROM存贮芯片采用 241c64(IC5)芯片,具有 64kbit存储容量,外部接口为 I2C与 MCU相连。ARM芯片的 IO口经 MAX3232电平转换芯片,将 3.3V逻辑电平转换为 RS-232标准的电平信号,接入 DB-9插头。MAX3232采用 3.3V供电,具有低功耗、高数据速率、增强型 ESD保护等特性。 ENC28J60 是 SPI接口的以太网控制器,其 SPI接口与 MCU的 SPI对应 IO口相连,输入和输出分别为一组差分信号,接入带有1:1 脉冲变压器的
10、 10BASE-T RJ-45插座。时钟由外部提供,使用 25M晶振。22 电压数字 IO接口模块设计电压接口模块与数字开关量接口模块基本沿用电流接口模块的设计。不同之处在于模拟输入部分无需经过电流一电压转换,直接经运放输入 ADC。数字量接口直接由 MCU的 IO端口引出。传感器输出的电压直接输入同向放大电路至 AD转换所需要的电平。此处运放就相当于一个电压跟随器,显著特点就是,输入阻抗高,而输出阻抗低,可以提高驱动能力。23 接口模块硬件实现整个板子尽量使用紧凑布局。电源以及传感器接口布置于左侧,使用螺丝接线端子引出。串口以及以太网口布局在右侧。整个模拟与数字部分基本分开而设,有效避免干扰
11、。布局基本没什么变化,左边螺丝接线端子往外移了一些,主要是考虑到外壳封装上后螺丝端子可能不够外露的问题。3 基于 STM32的标准化接口模块固件设计标准化接口模块的固件程序包括主程序、配置程序、ADC 数据采样程序、EEPROM 读写程序、以太网网口驱动程序、UDP 协议栈的嵌入。接口模块中共用到三种通信总线。ADC 以及以太网控制器与 MCU间为 SPI总线,EEPROM 与 MCU间为 IIC总线,另外接口模块提供 UART串口对外通信。以外网嵌入 UDP协议。31 AD 数据采样AD数据采样是整个系统接口模块固件设计的核心工作,也是实现传感器信息获取的关键所在。该模块负责将采集到的传感器
12、信息转化为数字信号。AD数据采样主要完成如下的几个功能:(1)初始化。该工作主要完成对一些物理器件的引脚功能、工作模式等进行预定义;(2)AD转换。通过软件启动模数转换芯片,完成模拟信号到数字信号的转换;(3)数据接收和发送。实时采集转换后的信息,同时发送相应的控制命令,以切换采集通道。在数据采集过程中,我们可能需要切换不同通道,从而实现对多个传感器信息的获取。实际设计中,控制器会在采集本次通道转换结果的同时,发送下次采集通道的编号。详细操作步骤如下:(1)需采集的通道地址(Ch)通过 SPI接口写入 ADS8344的相应寄存器,应用设定的波特率来设置接口传输速度;(2)通过 MCU设置 GP
13、IOB12(作为 AD的 CS信号)为低来启动 ADS8344进行数据采样和转换,数据传输方式为 SPI发送模式;(3)当数据发送完毕后,设置 GPIOB12为高电平,ADS8344 结束数据传输,进入空闲模式并等待 MCU的指令。此外,固件代码中设置了对 ADC进行软标定的程序。这样可以通过精密信号源对 ADC进行标定,提高采样精读。标定信息存储于 EEPROM中。功能实现代码如下:32 以太网口驱动 同样需要先进行 SPI接口和 GPIO端口初始化,与之前 ADC类似,只不过这里用 SPI1口。GPIO 初始化也不再多说。以太网驱动部分主要是数据包的发送接收,缓冲区的读写,物理层的写等函数
14、。SPI 口的发送接收函数如下:33 控制指令串口指令格式起始标志指令指令参数 1结束标志指令示意:00 01 01 FF读取通道 1的电流值00 04 C0 A8 89 03 FF设置 IP地址为 192(0xC0)168(0xA8)137(0x89)3(0x03)00 05 2E E0 FF设置 UDP端口为 12000(0x2EE0)00 07 10 11 11 10 14 19 FF往 EEPROM的地址0x0110写入数据 0x4900 09 19 18 FF将数字 IO1设为输出,高电平,IO23 输入,IO4 输出,低电平以太网支持串口的指令 0x01-0x03及 0x07-0x
15、0a,其参数、功能和返回值与串口一致。不支持用以太网口配置网络参数。4 结果与总结41 调试结果在串口助手环境下调试。以太网参数设置:发送指令 00 04 C0 A8 89 03 FF设置接口模块 IP地址为192(0xC0)168(0xA8)137(0x89)3(0x03)发送指令 00 05 55 66 FF设置接口模块 UDP端口为 21862(0x5566)发送指令 00 06A1 B2 C3 D4 E5 06 FF设置接口模块 MAC地址 Ping接口模块:cmd ping 1921681373(串口已经设置好 ip和端口号)以太网采样和读写 EEPROM:发送类似同样指令完成采样以及读写操作42 总结本文以传感器的输出信号类型为分类依据,基于该信号接口分类给出了基于 STM32的传感器接口模块的硬件设计,并实际设计实现了电流型、电压型以及数字 IO型模块,给出了相应的硬件选型以及电路设计与实现;进行了接口模块的软件设计,说明了详细的固件代码设计。除传统串口外,提供以太网接口,嵌入 UDP协议,提供后期开发的便利。