罗 钧, 李 华, 付 丽, 侍宝玉
(重庆大学 光电技术及系统教育部重点实验室, 重庆 400030)
为了培养学生的工程设计和动手能力,特为重庆大学研究生开设了“嵌入式微处理器原理及应用开发”课程,并设计了本实验来提升学生动手能力。
为了平衡功耗与性能,德州仪器在2015年推出了基于ARM Cortex-M4F内核兼有低功耗、高性能特点的新型32位MSP432处理器。 本实验系统以MSP432微处理器为核心,模拟现代农业中的大棚环境无线检测。通过本次实验,学生不仅能掌握好无线数据采集的相关的原理,而且更重要的是掌握一款先进的高性能、低功耗处理器的开发与应用。
大棚环境对于大棚农作物的生长极其重要,它直接影响农作物的产量和质量[1]。传统农业都是通过人力定期检测,效率低,而且检测的实时性不能保证。为了适应现代农业的发展,农业自动化将成为未来潮流[2]。目前常见短距离无线环境监测大多数都以ZigBee为主,其主要特点是距离短,功耗低,速度低,对于主处理器的选择多以STC89C52或STM32为主,功耗较高,不适合长时间监测[3]。
为了克服这些缺点,本实验系统以MSP432超低功耗、高性能微处理器为核心,配合TI的CC1101低功耗射频模块,温湿度传感器、LCD显示屏实现远距离低功耗长时间监测。
本系统的组成包含温湿度与光照传感器、无线传输模块、MSP432微处理器及其外围电路、按键和LCD显示屏。系统的原理图见图1。
图1 系统原理图
学生A和学生B拥有相同的硬件实验设备,包括传感器、按键、MSP432超低功耗微处理器、LCD显示器和无线模块,学生A或者B通过按键切换自身作为发送端还是接收端。发送端负责传感器的数据采集和发送,接收端负责把采集到的数据显示在LCD显示器上。
实验的硬件系统主要包括MSP432超低功耗微处理器、温湿度和光照采集传感器、无线通信模块以及LCD显示模块4个部分。
MSP432是德州仪器(TI)最新推出的32位超低功耗、高性能微处理器[4],它包含了一个基于ARM Cortex-M4F内核的新型32位处理器,且具有浮点单元和储存器保护单元[5]。MSP432的串行通信有eUSCI_A和eUSCI_B 2个模块,其中eUSCI_A模块支持UART串口和SPI两种模式;eUSCI_B支持I2C和SPI两种模式,也就是说系统拥有4路串口、4路I2C和8路SPI,可以很好地作为多路数据采集和传输[6]。图2列出了MSP432微处理器的部分电路图。
图2 MSP432微处理器的部分电路图
由于MSP432时钟最大能运行在48 MHz,所以系统的高速时钟选择了一个48 MHz的有源晶振,而系统的低速时钟选取了32.768 kHz无源晶振。系统采用3.3 V供电。此外,为了仿真系统和下载程序,把SWCLKTCK、SWDIOTMS两个口作为SWD调试。为了采样光照度和驱动液晶屏显示,把系统的ADC口和SPI口都引出,这样可以更好地作为其他实验的系统扩展。
温湿度传感器采用HDC1080,光照度采集采用光敏电阻。HDC1080是一款具有集成温度传感器的数字湿度传感器,其相对湿度精度为±2%(典型值),其温度精度为±0.2℃(典型值)[7]。光敏电阻RM采用PGM5506,亮电阻(10 lx)为2~5 kΩ,暗电阻为0.2 MΩ。图3为传感器的采集电路。
图3 传感器采集电路
HDC1080采用IIC协议,把它的SDA管脚接到MSP432的IIC管脚,本文选的是eUSCI_A0。采样光敏电阻串联一个10 kΩ的电阻、实现分压,然后将光敏电阻上的电压值通过一个低通滤波器输出至微处理器的AD0管脚实现采样。低通滤波器的截止频率为
由于光照度的变化一般比较慢,所以截止频率在1 kΩ左右能实现信号的不失真采集。
无线通信模块是系统数据传输的关键,关键指标有通信距离、通信速度和功耗。CC1101的通信距离与射频放大的倍数有关,放大倍数越大,通信距离越远,功耗越高[8]。CC1101主要是针对低于1 GHz超低功耗设计,它可工作在315、433、868、915 MHz,也可通过编程使其工作在300~348 MHz、387~464 MHz和779~928 MHz[9]频段。
传输的最大速度高达600 kbit/s,由于系统的数据传输不需要太快,数据量也不大,通信距离通过实验证明能达到100 m左右,如需进一步扩大距离,需进一步进行射频放大,故设计能满足要求[10]。在功耗方面,CC1101在睡眠模式时工作电流只有200 nA[11]。图4为CC1101的原理图。
图4 CC1101原理图
CC1101与外围设备的通信采用SPI传输方式,将CC1101对应管脚接到微处理器的SPI0口即可实现通信。为了消除电源对它的影响,在其附近对电源进行滤波、减小噪声。
为了显示数据,在本次实验中加入了LCD屏。本次实验采用61 mm(2.4英寸)的液晶显示器,分辨率为320×240,驱动芯片为ILI9341,背光为白色,逻辑电压为2.8 V[12]。LCD的显示主要是靠驱动电路对其显示,图5为LCD的驱动电路图。
图5 LCD驱动电路
LCD液晶屏有两种方式驱动:一种是串行,另一种是并行。串行驱动的优点是省IO口,但是速度相对来说慢一点;并行驱动的优点是速度快,但是缺点就是比较浪费IO口。由于显示的更新速度不是特别快,而MSP432的很多管脚都是有专门用途,故设计成串行驱动。串行传输的协议是SPI协议,与CC1101类似,LCD驱动是用的eUSCI_B1。
软件设计是本实验设计的核心,主机包括系统初始化、无线通信模块设置、传感器数据采集、无线发送,从机不同的是在位检测后进入接收状态,把接收的数据显示在LCD液晶屏上。系统的工作流程图如图6所示。
图6 系统软件工作流程
无线模块作为系统的重要组成部分,也是软件部分的难点之一。该模块主要有SPI参数配置、CC1101在位检测、发送或者接收模式设置、数据发送或者接收。
SPI的参数配置包括SPI的读写速度,由于MSP432的SPI的最大读写速度为24 MHz,所以设置为最大速度;接下来设置读写顺序,依据CC1101的协议设置为高位在前,连续读写模式;然后进入在位检测状态,在位检测主要是往CC1101的RAM里写一个固定的数组,之后读取该段RAM空间的这一个固定数组,如果全部和之前写入的数组一样,则通过在位检测;然后进入到工作模式设置,工作模式设置有主从机设置、通信通道设置、增益设置,增益的大小影响模块的传输距离,也影响系统的功耗;最后是进入数据的传送状态,主机主要负责数据的发送,从机负责数据的接收,数据的发送接收根据两者的应答来确认发送的数据是否正确。图7 无线通信软件工作流程。
图7 无线通信软件工作流程
传感器数据采集主要负责温湿度和光照度的采集,采集程序主要分为IIC的初始化参数配置、AD模块参数配置、HDC1080数据读取、光照度数据读取。图8为传感器数据采集的软件工作流程。
图8 传感器数据采集软件工作流程
IIC的参数配置包括IIC的时钟速度,主要是由主时钟分频而来,IIC的通信速度最大能达400 kbit/s;然后设置高低位的顺序,再设置从机地址,设置为发送模式;之后进入AD模块的设置,和IIC类似,设置好AD的采样率、AD的通道设置、数据缓存地址、采样触发模式;然后完成2个传感器的采集模块初始化。
初始化后打开2个模块的中断,并设置2个中断源的优先级,实验中设置AD的优先级高于IIC的接收中断。 在中断中读取HDC1080的数据和光照度。
LCD显示模块是此实验中最难的一点,显示的程序分为SPI参数配置、LCD显示模式设置、显示字符、显示变化波形。图9为LCD显示模块的软件设计流程。
图9 LCD显示模块的软件设计流程
SPI的参数配置和CC1101的配置一样,显示模式设置包括背景颜色设置、扫描方式、显示窗口大小等设置。背景颜色设置成白色,扫描方式是自上而下和从左到右。显示窗口的大小320×240;字符显示是通过调用字库来显示的,本次设计的LCD支持2种字体大小:12×6和16×12,具体大小的设置与自身的喜好有关,字符显示设置显示的起始坐标、显示内容、字体大小、字体颜色,设置完之后就可以完整的显示设置的内容。
显示波形的变化是实验的难点,通过LCD最底层的描点函数实现。首先在屏幕的左下角画出横纵坐标,画完横纵坐标后再画出小刻度,在小刻度的附近标示小刻度的内容,这就完成坐标系的绘制。最后根据画出的坐标系,对整个显示空间定位,将采集到的数据转换到坐标空间,根据从左到右的扫描顺序,依次打点,直到最后一列点打完后对显示的点进行清除,再一次重新打点,循环操作,即完成了显示模块的软件设计。
学生A和学生B同时上电后,若学生A作为数据采集端,程序正常初始化完成后,采集数据并完成传输;学生B作为数据接收端,完成设备初始化后进入数据接收状态。学生A通过用手缓慢遮住光敏电阻,在学生B的液晶显示器上明显地能观察到数据的变化,因为光照度变化比温度和湿度更容易改变。为了实验有更好的展示度,将光照度的结果通过波形来显示,用手遮住光敏电阻,可明显地观察到光照的变化。图10为自制的核心主控板,图11为最终的实验效果图。
图10 自制的核心主控板
图11 最终的实验效果图
图11中RL代表相对光照强度,RH为相对湿度,TP为测量温度,曲线代表相对光照度的变化规律。纵坐标单位为PCT(百分比),横坐标代表时间。
本实验实现了MSP432高性能、低功耗处理器应用于高校学生实验的基本目的,弥补了目前大部分高校实验平台单一化的缺点,实验完成了基于MSP432微处理器的多传感器无线数据采集以及动态显示,设计了自主开发的实验板,实验板不仅能完成本次实验,也可以实现蓝牙通信、陀螺仪加速度、气压数据采集、电机驱动控制等功能。学生能通过本实验学习IIC、SPI、AD采集等底层驱动原理,有助于学生对基础知识的掌握。此外,本次实验还开发了液晶屏的动态波形显示,这有助于学生掌握目前常用的液晶显示器的显示原理。最后,以2个学生配合的方式完成本次实验,这有助于学生的团队协作,也提高了实验的趣味性,学生能通过彼此交流更好地完成实验。
实验还有不足之处,比如传感器的数目相对来说还有点少,波形的显示空间不足等,后期需进一步开发,使实验的功能更加完善,让学生对于嵌入式应用开发技术有更浓厚的兴趣。