基于STM32的IO设备模拟器设计
扫描二维码
随时随地手机看文章
引 言
近年来,各国为各自利益逐渐加强了海洋研究,海洋观测方法日趋多样化,海洋观测平台成为研究海洋的重要途径 [1]。海洋观测平台由MCU 控制,外围接若干海洋设备终端,如采用温盐深仪传输海洋温度、盐度、压力;多普勒流速剖面仪传输海流流速、流向等数据。一个成功的海洋观测平台的开发需要首先经过实验室的联合调试。
若干个课题组协同工作时,经常共同使用有限个设备终端,或者存在订货周期过长、设备出海等问题,导致联合调试时因某些设备缺位而延长系统调试周期,而模拟器可以较好地解决这些问题。此模拟器无需深入了解设备的通信协议与响应数据格式,只需对实际设备实现一次操作,即可学习实际设备的通信协议,最终达到代替实际设备参与系统调试的目的。
1 总体设计
系统总体结构如图 1 所示。
本文设计的模拟器由STM32F103 微处理器模块、供电模块、LED 灯指示模块、存储模块、串口模块、按键构成。 按键用于系统硬件复位,拨动开关选择系统工作模式,LED 灯指示系统的运行状态,存储模块用于存储系统数据,防止 掉电丢失。其工作方式分为两种,一种是学习实际设备的指令 与响应及实际设备收到指令与发出响应的时间间隔,学习数据 存入 FLASH ;另一种是模拟实际设备,在收到上位机指令后, 通过字符匹配 FLASH 中的指令,延长实际设备收到指令与发 出响应的时间间隔,回复与指令对应的响应。模拟器工作简图 如图 2 所示。
2 硬件设计
2.1 存储模块
STM32F103 内核为 Cortex-M3,采用 ARM V7 构架,是 现今性价比最高的一款 ARM 微控制器,最高工作频率可达 72 MHz,该芯片具有 64 kB SRAM,512 kB FLASH,拥有快 速的中断处理 [3]。本设计使用了芯片的 USART1、USART3、 Timer3、Timer7 及 SPI 接口。
串行外围设备接口(Serial Peripheral Interface,SPI)是 一种全双工,高速、同步的通信总线,在芯片的管脚上只占 用四根线。本设计使用 STM32F103 自带的 SPI 来实现对外部 FLASH(W25Q128)的读写操作 [4]。如图 3 所示,W25Q128 是华邦公司推出的大容量 SPI FLASH 产品,容量为 128 Mb, 即 16 MB,可用于存储字库和其他用户数据,系统掉电后数 据不丢失,满足了本设计的数据存储要求。设置 SPI 为全双 工、主机模式、8 位帧格式传输,高位在前,具有 CRC 校 验功能 [5]。SPI 波特率预分频值为 256 分频,传输速度为36 MHz/256=140.625 kHz。
2.2 串口通讯部分设计
仪器通讯通常采用串行通信和并行通信两种方式[6]。串行通信方式具有使用线路少、成本低的优点,在远程传输时, 避免了多条线路特性的不一致而被广泛采用 [7]。计算机和单片机都具有串行接口,可以完成上位机与模拟器、模拟器与实际设备之间的通讯任务。如图 4所示,模拟器串口1可以实现两种不同的通讯模式,通过跳线帽或者拨动开关选择相应的通信方式,即 RS232,RS485,理论上可实现不仅限于海洋仪器的模拟,具备较强的延伸性。
此设计使用 SP3232 芯片作为 TTL 转 RS 232 芯片。数据 传输速率最高为 20 kb/s,最大距离为 15 m。可供两路串口共 同使用,接口为延伸通讯接口,可同时使用 DB-9 与三线制连 接法,两者均使用 RXD、TXD、GND 三条信号线,程序设 计中未使用握手信号,可直接发送和接收数据。RS 485 隶属 于 OSI 模型物理层电气特性的规定,为两线、半双工、多点 通信的标准。其电气特性和 RS 232 不一样,而是用缆线两端的电压差值来表示传递信号,通讯距离为 1 200 m[8]。本设计 使用 MAXIM 公司生产的 MAX3471,USART_RE 为发送使 能端,接 STM32 的 GPIOA_8,高电平发送数据,低电平接收 数据,接收和发送均由软件控制。串口 3 与串口 1 的电路图基 本相同,处于学习模式时与实际 IO 设备连接。
2.3 状态控制部分设计
系统运行状态由 STM32 的 GPIOE_3 的输入逻辑电平控 制,连接外部三脚拨动开关,通过判断该引脚的输入逻辑电 平来决定模拟器的工作方式,电平状态改变则系统工作状态 改变。运行状态指示灯(红色 LED 灯)连接引脚 GPIOB_5, 系统运行状态不同则指示灯闪烁运行方式改变。
2.4 供电设计
供电电路采用电平转换芯片 AMS1117-3.3,这是一个 5 V 转 3 V 稳压电源芯片,内部集成有过热保护与限流电路。通过 该芯片,可以实现对模拟器的 3.3 V 供电与 5 V 供电,同时也 可以使用 USB 供电,保证了模拟器在多供电环境的使用。供 电模块还具有供电状态指示灯(蓝色 LED 灯)。
3 系统软件设计
(1)程序初始化:初始化包括串口初始化,定时器初始化, W25Q128 初始化。程序中加入了看门狗,可防止系统因外界 环境的干扰而出现程序跑飞的现象 [9]。为保证模拟器正常稳定 地工作,程序采用轮询方式确定是否改变模拟器的工作状态。
(2) 定 时 器 在串口通信中的 软件 设 计:USART1 和 USART3 采用中断接收字符方式共同使用 Timer7,通过判断 接收到的两个字符间的时间差来断定是否为连续的数据 [10]。 Timer7 是 STM32F103 自带的两个基本定时器之一,定时器中 断优先级为 0,高于串口优先级,采用由下至上的计数方式, 10 ms 进入一次定时器中断,定时器中断中串口接收标记设 置为接收完成,两个字节接收时间间隔小于 10 ms 即认为这 两个字节属于同一字符串,通过定时器来判断接收的字节是 否属于同一次数据,避免两次数据间的干扰。将 USART1 和 USART3 接嵌入式模块。Timer3 是通用定时器,在本设计中 用来记录 USART1 开始透传数据至 USART3 到 USART3 收 到外部数据之间的时间间隔,即实际设备的响应时间,定时器 中断每隔 1 s 进入一次,在中断时间间隔执行自加操作,以一 定的格式将时间间隔写入 FLASH 保存,便于后续读取。
(3)为了保证上位机指令与设备响应正常匹配,W25Q128 中的数据存储格式如图 5 所示。
模拟器模拟设备时析出有效数据,程序流程如图 6 所示。
4 结 语
本设计以模拟美国 TELEDYN 分析仪表公司的多普勒流 速剖面仪(ADCP)以及 Sea-Bird 公司的 SBE39-IM 型温盐深 仪为例,实现了对这些实际仪器IO功能的模拟。通过实验检验, 成功实现了实验室环境下模拟器代替 ADCP 在定时卫星通信 系统中的作用以及代替 SBE39-IM 型温盐深仪在电磁耦合浮标 系统中的作用。