2.2 电压/数字IO接口模块设计
电压接口模块与数字开关量接口模块基本沿用电流接口模块的设计。不同之处在于模拟输入部分无需经过电流一电压转换,直接经运放输入ADC。数字量接口直接由MCU的IO端口引出。传感器输出的电压直接输入同向放大电路至AD转换所需要的电平。此处运放就相当于一个电压跟随器,显著特点就是,输入阻抗高,而输出阻抗低,可以提高驱动能力。
2.3 接口模块硬件实现
整个板子尽量使用紧凑布局。电源以及传感器接口布置于左侧,使用螺丝接线端子引出。串口以及以太网口布局在右侧。整个模拟与数字部分基本分开而设,有效避免干扰。布局基本没什么变化,左边螺丝接线端子往外移了一些,主要是考虑到外壳封装上后螺丝端子可能不够外露的问题。
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中。功能实现代码如下:
3.2 以太网口驱动
同样需要先进行SPI接口和GPIO端口初始化,与之前ADC类似,只不过这里用SPI1口。GPIO初始化也不再多说。以太网驱动部分主要是数据包的发送/接收,缓冲区的读写,物理层的写等函数。SPI口的发送/接收函数如下: