基于STM32的传感器接口模块的设计

发布者:technology1最新更新时间:2011-09-21 来源: 电子产品世界关键字:STM32 手机看文章 扫描二维码
随时随地手机看文章


摘要:基于STM32实现了电流型、电压型以及数字IO型传感器接口模块;进行了接口模块的软件设计,说明了详细的固件代码设计。除传统串口外,提供以太网接口,嵌入UDP协议,提供后期开发的便利接口。
关键词:信号接口;传感器接口模块;UDP协议

0 引言
    物联网将会是未来很长一段时间内IT产业的发展趋势,一个完整的物联网系统的构成或产业链的划分,目前业界比较统一的观点基本都认为应该包括三个层面:末端设备或子系统、通信连接系统、以及管理和应用系统。即Device-设备、Connect-连接和Manage-管理。由于数字整合的需求日益增长,对作为感知层核心组成元素的传感器数据融合提出了更高要求。如何将传感器连入网络成为一个尤其重要的问题。

a.jpg


    传感器通过接口模块接入到相应网络。传感器通过信号接口连接到接口模块,节点以相应的适配模块接收和处理传感器输出信号,并将传感器原始数据转换为网络用户可以识别的信息,最后通过网络通信接口连接到上位机或者任何网络。
    传感器感知外部环境,某种敏感变量如电阻、电荷之类参量发生变化,然后经过信号处理,产生可供AD转换的电压或电流信号(目前ADC应用主要还是电压输入,电流模式ADC尚未大规模应用),而后经AD转换为可供处理的数字信号。由于在不同应用场合中会使用到针对上述不同层次接口的传感器,故信号接口标准针对不同层次设计:
    层次1:需经过信号调理然后才能输入AD处理,如热电阻、4~20mA电流输出;
    层次2:直接符合AD输入要求的,如0~5V电压输出;
    层次3:数字信号输出,如开关量、RS232接口输出;如图2所示。

b.jpg


    直接输出可以连入网络的接口,比如现场总线接口(如CAN、Profibus、工业以太网)、无线通信接口(如Zigbee、WI-FI)等一般无需考虑信号接口的问题,如需连入不同网络可以使用相应的网关(如CAN转以太网)。
    基于此分类依据,传感器输出信号一般有电压信号、电流信号、电阻信号、频率信号、脉冲信号、数字电平信号等。

1 传感器接口模块设计概述
    从功能上来讲,接口模块需要完成传感器与应用网络之间的连接,解决传感器的异构性带来的诸多问题,完成从原始信号到数据的数据流过程。总的来说包括传感器接入及激励、信号调理、AD转换/数字滤波、数据处理和网络通信。不同信号输入类型的接口模块在整体功能上是类似的,主要不同在于信号调理部分,以及AD转换的不同要求。接口模块整体功能如图3所示。

c.jpg


    信号调理针对不同信号类型设计。传感器原始输出的标准信号接入后,经过信号调理后生成可供ADC处理的信号。有的传感器还需提供激励源。
    ADC依据不同应用需求所需的通道数、精度、速度进行选择。可选择外置ADC,系统要求不高或者在一些特殊场合也可使用SOC片上系统的内置ADC(比如TI的MSC1210系列MCU内置24bit sigma-delta ADC,尤其适合处理微弱信号)。
    另外需要外扩存储器存储与传感器或者接口模块相关的描述信息,一般可使用EEPROM。鉴于此功能,存储模块芯片的选取就得考虑总线读写速度以及可编程性。由于需要在标准化接口模块正常工作的同时修改Flash中的电子表单,所以存储芯片得支持IAP(在应用编程)功能。
    整个模块的核心处理器为MCU或者FPGA,负责对整个模块的逻辑进行控制,可根据不同应用要求选择8位单片机或者高性能ARM处理器或者FPGA可重配置芯片。
    网络通讯采用可根据不同应用场合选取不同接口,比如RS485总线、CAN总线、Ethemet、WiFi等。可支持多个接口模块,主机可对从模块进行配置,可自由添加模块。

2 基于STM32的传感器接口模块设计
2.1 电流接口模块设计
    以STM32F103系列处理器为核心,外挂ADC采样芯片、以太网接口芯片、RS-232/485接口芯片。模拟电流信号经电流-电压转换电路、电压放大电路、电平匹配电路输入至ADC采样芯片后由处理器采集。ADC芯片采用5V的外置参考电压,提高精确度。EEPROM芯片通过IIC接口与处理器通信。处理器经由串口以及以太网接口与上位机进行数据和控制信息交换。调试接口为20针标准JTAG接口。
    电源部分设计为输入24V直流,经线性稳压电路和电压反转电路生成模拟部分需要的5V电压和数字电路需要的3.3V电压。电源输入的24V电压可以直接供给工业上常用的二线制电流输出传感器做激励。
    整体结构如图4所示。

d.jpg


    下面介绍具体电路设计。电源部分为+24V-DC输入经LM2596(IC1)开关电源芯片产生+5V-DC电压,+5V电源直接供给模拟部分电路。IC2为LM1117—3.3线性稳压芯片,将5V电源变换为3.3V供给数字电路。数字地与模拟地隔离,通过10 μH电感或者磁珠连接,可以抑制数字电路对于模拟电路部分的干扰。LED1和LED2分别用来指示两部分的电源接通状况。

e.jpg


    输入的电流由100Ω精密负载电阻变换为电压信号,由同向放大电路放大至AD转换所需要的电平,增益可以由电位器来进行微调。运放采用AD8551(U$3),其在低压差单电源情况下表现完美,具有极低失调电压(5 μV)、极低的温漂(0.03μV/℃)以及轨对轨输入输出的特性。

f.jpg


    +24V电压经过78L12Z(IC4)稳压产生12V电源供给AD586(U52)芯片产生高精度5V基准信号,输入到AD采样芯片ADS8344(U$1)的参考输入端。AD586的trim端连接10k电位器,可以对输出的基准电压进行精密调节。四路电流采样信号经前级放大后直接输入到AD芯片CH0-3通道,ADC由数字SPI接口连接MCU进行控制采集。

g.jpg


    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脉冲变压器的10BASE-T RJ-45插座。时钟由外部提供,使用25M晶振。

h.jpg


2.2 电压/数字IO接口模块设计
    电压接口模块与数字开关量接口模块基本沿用电流接口模块的设计。不同之处在于模拟输入部分无需经过电流一电压转换,直接经运放输入ADC。数字量接口直接由MCU的IO端口引出。传感器输出的电压直接输入同向放大电路至AD转换所需要的电平。此处运放就相当于一个电压跟随器,显著特点就是,输入阻抗高,而输出阻抗低,可以提高驱动能力。

i.jpg


2.3 接口模块硬件实现
    整个板子尽量使用紧凑布局。电源以及传感器接口布置于左侧,使用螺丝接线端子引出。串口以及以太网口布局在右侧。整个模拟与数字部分基本分开而设,有效避免干扰。布局基本没什么变化,左边螺丝接线端子往外移了一些,主要是考虑到外壳封装上后螺丝端子可能不够外露的问题。

l.jpg



3 基于STM32的标准化接口模块固件设计
    标准化接口模块的固件程序包括主程序、配置程序、ADC数据采样程序、EEPROM读写程序、以太网网口驱动程序、UDP协议栈的嵌入。
接口模块中共用到三种通信总线。ADC以及以太网控制器与MCU间为SPI总线,EEPROM与MCU间为IIC总线,另外接口模块提供UART串口对外通信。以外网嵌入UDP协议。
3.1 AD数据采样
    AD数据采样是整个系统接口模块固件设计的核心工作,也是实现传感器信息获取的关键所在。该模块负责将采集到的传感器信息转化为数字信号。
    AD数据采样主要完成如下的几个功能:
    (1)初始化。该工作主要完成对一些物理器件的引脚功能、工作模式等进行预定义;
    (2)AD转换。通过软件启动模数转换芯片,完成模拟信号到数字信号的转换;
    (3)数据接收和发送。实时采集转换后的信息,同时发送相应的控制命令,以切换采集通道。
    在数据采集过程中,我们可能需要切换不同通道,从而实现对多个传感器信息的获取。实际设计中,控制器会在采集本次通道转换结果的同时,发送下次采集通道的编号。详细操作步骤如下:
    (1)需采集的通道地址(Ch)通过SPI接口写入ADS8344的相应寄存器,应用设定的波特率来设置接口传输速度;
    (2)通过MCU设置GPIOB12(作为AD的CS信号)为低来启动ADS8344进行数据采样和转换,数据传输方式为SPI发送模式;
    (3)当数据发送完毕后,设置GPIOB12为高电平,ADS8344结束数据传输,进入空闲模式并等待MCU的指令。此外,固件代码中设置了对ADC进行软标定的程序。这样可以通过精密信号源对ADC进行标定,提高采样精读。标定信息存储于EEPROM中。功能实现代码如下:
    j.jpg
3.2 以太网口驱动
    同样需要先进行SPI接口和GPIO端口初始化,与之前ADC类似,只不过这里用SPI1口。GPIO初始化也不再多说。以太网驱动部分主要是数据包的发送/接收,缓冲区的读写,物理层的写等函数。SPI口的发送/接收函数如下:
k.jpg

3.3 控制指令
    串口指令格式
    [起始标志][指令][指令参数1]<指令参数2>…[结束标志]
    指令示意:
    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写入数据0x49
    00 09 19 18 FF将数字IO1设为输出,高电平,IO2/3输入,IO4输出,低电平以太网支持串口的指令0x01-0x03及0x07-0x0a,其参数、功能和返回值与串口一致。不支持用以太网口配置网络参数。

4 结果与总结
4.1 调试结果
    在串口助手环境下调试。以太网参数设置:
    发送指令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地址

m.jpg


    Ping接口模块:cmd ping 192.168.137.3(串口已经设置好ip和端口号)

n.jpg


    以太网采样和读写EEPROM:发送类似同样指令完成采样以及读写操作

o.jpg


4.2 总结
    本文以传感器的输出信号类型为分类依据,基于该信号接口分类给出了基于STM32的传感器接口模块的硬件设计,并实际设计实现了电流型、电压型以及数字IO型模块,给出了相应的硬件选型以及电路设计与实现;进行了接口模块的软件设计,说明了详细的固件代码设计。除传统串口外,提供以太网接口,嵌入UDP协议,提供后期开发的便利。


 

关键字:STM32 引用地址:基于STM32的传感器接口模块的设计

上一篇:基于MSP43OF2132的温差式原油流量传感器设计
下一篇:MEMS和信号调理实现扩散硅压力传感器

推荐阅读最新更新时间:2024-03-30 21:49

STM32之DAC原理
1.DAC模块 1.数模转换功能 2.可以配置为8位和12位模式(8位右对齐,12位左对齐,12位右对齐) 3.DAC模块有两个单独的控制器,每个通道有着单独的转换器,可以独立转换,也可以同时转换 4.可以实现噪声波形和三角波形的生成 5.每个通道有着DMA功能 6.图示: PS:左上方为一些触发的条件,左下方为一些数字电源(VDDA,VSSA) Vref+为参考电压,DAC_OUT_x为DAC的输出通道,(2.4v Vref VDDA) 数据并不是直接传入DORx的,需要先传入DHRx(如果没有选择硬件触发(TENx=0),在一个时间周期后传入DORx),同时,又经过Tsetting(大约3us)
[单片机]
<font color='red'>STM32</font>之DAC原理
stm32使用超高精度的同步时钟的设计
有些场合可能需要超高精度的同步时钟,比如0.5ppm甚至更低的时钟,并且保证多台设备很好的重复率,因此这篇文章主要讲述如何设计基于stm32的超高精度的时钟。 首先时钟精度要0.5ppm甚至更低的话,显然要使用txco,也就是温补晶振,0.5ppm的温补晶振市面上比较常见,体积很小(2520),并且价格很便宜,两三元一片,因为这种类型的晶振广泛引用于手机,GPS等需要精密时钟的地方,因此种类多价格低,但是相反的振荡频率只有那么几种,这几种中我么能用的也就是19.2mhz和26mhz两种。考虑2的倍数的问题,19.2mhz的最佳。 本次设计使用19.2mhz的有源温补晶振最为stm32的时钟源,这里我选择型号KT2
[单片机]
STM32 外部中断的使用
例程名称:外部中断实验 作 者:tkzsld(sky) 实验硬件:火牛开发板 硬件连接:指示灯连接 PD9 按钮连接 PA8 功能描述:本例程实现外部中断的输入试验, 按键次数 1:PD8 PD9 ON 2:PD8 PD9 OFF 3:PD10 PD11 ON 4:PD10 PD11 OFF 5:PD8-11 ON 6:PD8-11 OFF 7: PB5 BEEP ON 8 :BEEP OFF *********************************************************
[单片机]
STM32—PWM的产生
1. TIMER输出PWM基本概念 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。一般用来控制步进电机的速度等等。 STM32的定时器除了基本定时器TIM6和TIM7之外,其他的定时器都可以用来产生PWM输出,其中高级定时器TIM1和TIM8可以同时产生7路的PWM输出,而通用定时器也能同时产生4路的PWM输出。 1.1 PWM输出模式 STM32的PWM输出有两种模式,模式1和模式2,由TIMx_CCMRx寄存器中的OCxM位确定的(“110”为模式1,“111”为模式2)。
[单片机]
ST推出低功耗高安全的STM32U5
意法半导体(STMicroelectronics)宣布推出新一代节能微控制器(MCU),即STM32U5系列,该产品专为可穿戴设备,个人医疗设备,家庭自动化和工业传感器等智能应用中对功率/性能比敏感的应用而设计。 新的MCU采用40纳米工艺制造,可在动态工作模式和节能模式下节省功耗。新的STM32U5系列结合了Arm Cortex-M33内核,使用Arm Keil MDK进行最大功率优化的功能以及诸如高级安全性和针对PSA 安全3级和SESIP(针对IoT平台SESIP的安全评估标准)的基于硬件的保护之类的新功能 ,以及图形加速器以增强用户体验。 面向未来的物联网 在物联网(IoT)不断发展的时代,为了使事物连接到网络
[单片机]
ST推出低功耗高安全的STM32U5
PT2272-M4--4键无线遥控器(STM32
一、前期准备 单片机:STM32F103ZET6 开发环境:MDK5.14 库函数:标准库V3.5 PT2272-M4模块:淘宝有售 二、实验效果 三、驱动原理 PT2272-M4是5V信号输出的,所以必要找到单片机带FT脚的作为接收口。按下按键,对应的输出端口输出高电平,反之输出低电平。A,B,C,D对应D2,D0,D3和D1。 需要完整工程或者有问题的请加QQ:1002521871,验证:呵呵。 四、驱动代码 wirelesskey.h #ifndef __WIRELESS_KEY_H__ #define __WIRELESS_KEY_H__ #include stm32f10x.h #include gpi
[单片机]
PT2272-M4--4键无线遥控器(<font color='red'>STM32</font>)
STM32 Systick定时器在实现1us延时的问题与解决
问题: 使用systick_config()函数来实现计数,这个函数在下面代码中的 SysTick_CTRL_TICKINT_Msk 开启了中断。不论系统时钟为72Mhz或36Mhz若设置STM32每10us进入一次中断,计时是可以的;而每1us进入中断,由于中断指令较多,那么程序就会困在中断里出不来。 static __INLINE uint32_t SysTick_Config(uint32_t ticks) { if (ticks SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */
[单片机]
STM32的ADC实验的原理简介
ADC简介 Analog-to-Digital Converter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。 STM32的ADC的配置 战舰V3开发板的ADC通道与引脚的对应关系 模拟量输入的范围(ADC正常工作的范围) STM32F103ZET6芯片中的电源部分(VREF与VSSA): 我们看到Vref-连接到了GND,而VREF+通过跳线帽连接到了VDD(VDD连接到了开发板的3.3V供电电源上),因此我们的DAC通道正常工作的模拟量输入范围为(2.4V,3.3V)。 ADC工作逻辑图解析(以ADC通道1为例) ADC中断的三种类型 注入
[单片机]
<font color='red'>STM32</font>的ADC实验的原理简介
热门资源推荐
热门放大器推荐
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新工业控制文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved