CORTEX-M4(通用6篇)
CORTEX-M4 篇1
瓦斯是煤矿生产的伴生物, 其主要成分是甲烷, 易燃易爆, 是威胁煤矿安全生产的头等灾害。给国家和人民的生命财产带来重大的损失。因此, 开发研制出能够准确快速的检测瓦斯浓度的设备, 有效防止和避免因瓦斯浓度超限而引起瓦斯爆炸成为关键问题。传统的瓦斯检测仪大都是基于8位单片机控制的, 不同程度的存在着功能单一、工作时间短、性能不稳定、误报动作和升级困难等问题。本文设计的是以ARM Cortex-M4内核控制器为核心利用红外传输功能的智能自动化仪表。利用ARM和计算机强大的数据处理能力, 可对瓦斯实时的进行检测, 同时可以对传感器进行自校零和线性划处理。当瓦斯浓度超过预定值是发出报警。而且Cortex-M4内核的低功耗、高速16位模数转换器、12位数模转换器及性价比方面具有极大的优势, 大大提高了仪器的性能, 提高了井下人员的安全性, 非常适合煤矿井下的环境。
1 系统电路组成及工作原理
瓦斯浓度监测报警系统由瓦斯浓度传感器, 微控制器和计算机数据处理等软硬件组成。瓦斯浓度传感器首先采集现场信号, 转化为电信号经过放大电路送入A/D电路转化为数字信号传给微控制器处理, 微控制器经过计算得到瓦斯的浓度, 在LCD液晶屏上显示, 同时利用红外发射模块将数据送出到地面监控站的PC机, PC机对数据进一步分析, 保存和绘制曲线。当浓度超过界限时, 启动声光报警电路, 同时为了防止高浓度瓦斯的冲击, 当瓦斯浓度大于最大设定值时关断传感器电源, 以延长传感器的寿命。系统工作原理图如图1所示。
2 硬件电路设计
2.1 Cortex-M4内核微处理器K60N512
Cortex-M4内核是在Cortex-M3内核的基础上发展起来的, 其性能比Cortex-M3提高了20%。Cortex-M4在Cortex-M3的基础上强化了运算能力, 新加了浮点运算控制器、DSP和并行计算等。K60N512芯片是基于M4内核集成度最高的芯片, 主频高达100MHZ, 32路DMA供外设和存储器使用, 大大提高了CPU利用率, 4路差分的16位AD转换和2路12位DA转换等资源, 极大的提高了系统的稳定性和可靠性。
2.2 催化燃烧式瓦斯传感器
市场上各种瓦斯检测仪在煤矿生产中发挥着重要作用, 表1是通用瓦斯检测仪的性能比较。
催化燃烧法是通过加热催化元件来实现对有机物的完全氧化, 催化传感原件由掺有贵金属催化剂Pt或Pd的Al2O3多孔陶瓷体中Pt丝线圈构成。当可燃性气体在催化剂元件表面燃烧时, 元件表面温度升高引起了Pt丝电阻的变化, 根据电阻的变化来测量气体浓度。国外用的大多数是红外甲烷传感器, 但是该传感器对环境的要求比较高, 而国内的煤矿井下环境都比较恶劣, 再加上性价比的考虑, 本文选用催化燃烧式瓦斯检测传感器。最终系统选用MJC4/3.0J型催化元件。
2.3 无线传输模块
考虑到煤矿井下环境恶劣等技术指标, 本设计方案采用n RF2401无线芯片, n RF2401是单片射频收发芯片, 工作于2.4~2.5GHZ ISM频段, 具有非常低的芯片能耗。n RF2401内置地址解码器、先入先出堆栈区、解调处理器、时钟处理器、GFSK滤波器、频率合成器, 功率放大器等功能模块, 需要很少的外围元件, 使用起来非常方便。n RF2401应用电路如图2所示。
3 软件设计
FreeRTOS是由InterNiche公司在2005年开发的一个开源的免费多任务实时操作系统。可配置的任务调度方式, 执行效率高, 最小的配置仅需要0.5K的RAM资源和约1K的FLASH资源[5]。用户花很少的时间就可以灵活运用它。Cortex-M4处理器强大的功能简化了设计的步骤, 应用软件采用C编写, 模块化程序设计使每一个任务独立开来, 方便设计、编程、测试和查错, 最后一起实现应用程序的功能。本设计的任务有:
1) 声光报警任务,
2) 设备欠压报警任务,
3) 防高浓度冲击自关断任务,
4) 零点漂移自校正任务,
5) 数据采集任务,
6) 无线数据传输任务。采用优先级调度的方法使每个任务顺利运行。
结语
经过连续的实验室测试, 此系统最大误差小于0.03%, 足以提高煤矿开采作业的安全等级。以新型的32位ARM Cortex-M4内核控制器为核心搭建的瓦斯检测系统, 具有精度高、速度快, 而且资源丰富, 便于功能的扩展, 可以在本系统的基础上加上温湿度等的测量功能。具有良好的应用前景。
参考文献
[1]路秋英.郝国法等.基于51单片机和VB6.0的瓦斯浓度监测系统[J].工矿自动化, 2008 (1) :48-50.
[2]王峰.智能型瓦斯检测报警仪设计[J].2011.3 (1) :70-71.
[3]柴化鹏, 冯锋等.瓦斯传感器的研究进展[J].山西大同大学学报 (自然科学版) , 2009, 6 (3) :27~30.
[4]K60Sub-Family R eference Manual.2011http://www.freescale.com.
[5]Freescale MQX R TOS R eference Manual.2011http://www.freescale.com/mqx.
CORTEX-M4 篇2
内置FPU的Cortex-M4内核在效能优异的Cortex-M3 CPU上增加了数字信号处理 (DSP) 功能、优化单周期指令、饱和算术指令和浮点单元等功能, 使其处理性能优于ST公司2007年推出的第一款Cortex-M3产品——STM32 F1系列。STM32 F3微控制器系列的市场定位介于广获好评的STM32 F1系列与性能最高的STM32F 4微控制器系列之间。STM 3 2 F 4微控制器系列同样基于内置FPU的Cortex-M4内核, 但是配备大容量存储器和168MHz的最大处理频率, 使该系列产品更适于处理复杂的应用。
至此, STM32微控制器产品家族现已超过350余款产品, 适合各种不同的应用领域, 从价格敏感的入门级设计, 到对性能和芯片功能要求严格的应用。F3系列的定位是让ST能将其在STM32产品与生态系统方面的优势, 发挥在如高性能电机控制器和嵌入式数字音频系统等, 同时具有高性能模拟器件和入门级DSP的应用。
CORTEX-M4 篇3
温度是我们生活,工作,以及工业等其他各个领域中主要的环境参数之一,尤其是人体需要的适温。过冷、过热都会影响我们正常的生活和工作,由此控温系统显得异常重要。随着信息技术和微电子技术的迅速发展,嵌入式技术得到越来越广泛的应用,特别是ARM技术的迅猛发展,无论是在低功耗、低成本,高性能还是在稳定性、高速率等方面都表现得相当出色,ARM芯片Cortex-M0在单片机微控制低端领域的表现更是突出。
本文设计了一种基于Cortex-M0单片机的温度感知控制系统,能通过DS18B20温度传感器感知环境温度,并根据设定温度和环境温度的差值得出调节量,然后通过这个调节量控制Cortex-M0的执行与操作,实现调节环境温度保持适温的目的,控制算法基于数字PID算法。
1 Cortex-M0
ARM Cortex-M01处理器是现有的最小、能耗最低和能效最高的ARM处理器。该处理器硅面积极小、能耗极低并且所需的代码量极少,而且是一款32位的RISC处理器,16位的Thumb指令集,代码密度高。高度优化的功耗与面积使其更适于低成本,低功耗的场合,中断现场的自动保护使得它在进入与退出中断时的软件开销降到最低同时具有确定的指令执行时间能保证每条指令执行的时间总是相同的,从而能达到一种实时控制。作为A R M公司的最低端产品,同样拥有高性价比,稳定可靠的特性,由此选用此款芯片并应用A R M公司的M D K集成开发工具,可提高开发效率,缩短开发周期。
2. 系统硬件设计
本温度控制系统是以LPC1111(Cortex-M0)为控制核心。整个系统的硬件部分包括温度感知模块,MCU,I/O设备,人机交互接口,控制调节系统等。整个温度控制系统框图如图1所示。
温度感知(温度数据采集)部分采用了DS18B20温度传感器,DS18B20是Dallas公司生产的一款数字温度传感器,超小体积,超低硬件开销,抗干扰能力强,精度高,附加功能强。DS18B20的温度检测与数字数据输出集成于一个芯片上,单总线数据通信,二进制输出,分辨率最高可达12位,检测温度范围为-55~+125℃,具有限温报警功能。
为实现对室内温度的冷暖调节,以快速高效地达到适温,本系统使用CortexM0作控制核心,充分利用其特性,把温度感知模块采集的温度数据和通过按键设定的温度进行实时的比较,将超出允许的差值保存并将之传送到I/O执行设备中,运用PID算法准确地控制I/O冷暖设备来进行适温的调节。具体的硬件部分包括温度采集(18B20),微控制器LPC1111,交互接口(按键与LCD),I/O执行设备。其硬件框图如图2所示。
DS18B20通过一根I/O总线来传送采集的温度数据和接收控制命令,段式LCD实时显示采集温度,调节按键按下时,LCD显示设定温度并把值传送到控制器LPC1111中存储,以便和采集的温度进行比较,运用PID算法计算出的超出允许的差值就可以控制I/O设备,使其降低或提高冷暖设备的运行功率,平衡差值,使采集温度和设定温度相接近(即允许的范围内),这里我们利用了空气流动原理,将温度传感器和冷暖设备按室内最远距离放置,充分起到了平衡调节的作用,即是通过这个系统让室温自动地达到需要的温度(适温)。
3.系统软件设计
软件部分采用程序模块化设计,便于各个功能的调试和实现。系统软件程序主要由主程序、温度数据采集与显示、PID运算控制与驱动执行等3个模块组成。
3.1 主程序模块
主程序模块采用循环查询直至断电退出,以达到温控系统冷暖自动控制的目的。主程序流程如图3所示。
3.2 温度数据采集与显示模块
温度数据采集模块采用GPIO端口模拟DS18B20的单总线来实现温度数据的实时采集直至断电退出,通过对I/O的读写来控制DS18B20的初始化和各种时序操作。DS18B20控制子程序按照DS18B20的单总线通信协议编制,包括初始化,读、写等控制子程序,分别按照相应的规则说明进行编程实现。DS18B20温度采集子程序流程如图4所示。
温度数据显示模块利用I2C总线将段式LCD与LPC1111连接实现数据的可靠传输,通过操作I2C总线来设置LCD控制寄存器的各种参数并读取用户设定的值和实时采集的温度值,然后送到Cortex-M0中作运算控制处理。其中断方式设定温度和实时显示采集温度的子程序流程如图5所示。
3.3 PID运算控制与驱动执行模块
PID基本算法:控制器Cortex-M0的输出与设定值和采集值的误差成正比,与误差的积分成正比,与误差的微分成正比,为三个分量的和,比例调节器(P)能够反应很快,但不能完全消除静差,控制不精确。积分调节器(I),积分器的输出值大小取决于对误差的累积结果,在误差不变的情况下,积分器还在输出直到误差为零,因此积分调节器相当于能自动调节控制常量,消除静差,使系统趋于稳定。积分器虽然能消除静差,但使系统响应速度变慢。微分调节器(D)通过检测信号的变化率来预报误差,并对误差的变化作出响应,微分调节器的加入将有助于减小超调,克服振荡,使系统趋于稳定,同时加快了系统的稳定速度,缩短调整时间。因此组成比例、积分、微分(PID)调节器,可有效改善自动控制系统的动态性能,其控制规律的数学表达式为:
式中:TD为微分时间;e为采集值与设定值之间的差值;TI为积分时间;KP为运算控制的比例系数。
由于控制器中处理的都是数字量,通过数字化处理和数值变换(以一系列的采样时刻点kT代替连续时刻t,以矩形法数值积分近似代替积分,以一阶向后差分近似代替微分)即
显然在离散化过程中,要保证有足够的精度,采样周期必须足够短,为了书写方便,将e(kT)简化为e(k),省去T,则式(2)代入式(1)可得离散PID表达式:
式中:k-采样序号,k=1,2,…;
u(k)-第k次采样时刻的控制器输出值;
e(k)-第k次采样时刻的输入偏差值;
e(k-1)-第k-1次采样时刻的输入偏差值;
kI-积分系数;kd-微分系数;
PID控制系统如图6所示
通过凑试法将PID的比例系数,积分系数,微分系数等参数调整到合适的值。实际的算法实现中,PID控制系统的程序流程如图7所示。
4 结束语
本文设计了一种基于Cortex-M0的单片机温控系统,以自整定PID参数,闭环式PID控制算法为基础,并从应用角度出发,给出了室内温控系统冷热调节的硬,软件设计。利用了DS18B20“单总线”数字化温度传感器,实时采集室内温度,通过Cortex-M0控制器调节室内冷暖设备功率大小使采集温度和设定温度相接近,运行误差为1℃,达到了控制室内适温的目的。实验证明,该系统操作方便,运行良好,功能稳定,可靠。
参考文献
[1]http://www.arm.com/products/processors/cortex-m/cortex-m0.php
[2]何梅,陈海波.基于DS18B20的温控系统冷热调节设计.电子设计工程.Vol.18(4)2010.4
[3]魏英智,红伟,张琳,徐宝玉,李海燕.数字PID控制算法在温控系统中的应用.现代电子技术.No.17,2010.4
[4]高立兵,康雁林.基于AVR单片机的PID温控系统设计.工业控制计算机.Vol.23(4),2010.1
CORTEX-M4 篇4
关键词:反汇编,ARM,Cortex-M3,条件指令
0 引言
ARM家族的Cortex-M3是一个通用的32位微处理器, 它具有高性能和超低功耗的特性, 近几年在各个领域得到了广泛的应用。出于项目开发维护、程序调试, 或者逆向工程的需要, 经常需要对二进制代码进行反汇编。目前广泛使用的Keil uVision4开发工具平台, 可对ELF格式的目标代码进行反汇编, 尚不支持二进制格式。通过文献检索, 尚未发现公开的针对Cortex-M3处理器的二进制格式代码反汇编工具[1,2,3,4,5]。笔者根据项目需要, 设计了可在Linux/Windows环境下运行的针对CortexM3处理器的二进制格式代码反汇编工具。
1 Thumb-2指令
任何一款微处理器都有自己专用的指令集, ARM处理器一直支持两种形式上相对独立的指令集, 32位的ARM指令集, 对应处理器状态为ARM状态;16位的Thumb指令集, 对应处理器状态为Thumb状态。在程序的执行过程中, 处理器可以动态地在两种执行状态之中切换, 这种切换是由程序员完成的。
Thumb-2是最近才加入ARM架构的一项新技术, 是16位Thumb指令集的一个超集[6,7]。在Thumb-2中, 16位指令首次与32位指令并存。在Thumb-2技术下也不再像以往那样需要在ARM/Thumb两套指令之间切换。
Cortex-M3系列处理器只支持Thumb-2指令集。
2 技术难点
二进制格式代码中既有指令代码, 也有数据, 反汇编程序需要正确识别哪些是指令, 哪些是数据。另外, Thumb-2指令集中引入了特有的IF-THEN指令, 也是反汇编的难点之一。
2.1 数据的识别
如前所述, Thumb-2指令是定长的, 32位或16位, 对32位立即数的访问无法内嵌在指令码中实现, 通常是通过文字池来实现, 即在代码区的某个地址存放数据。汇编指令一般通过PC寄存器相对寻址来实现。反汇编程序需要解决的是如何根据指令码找出这些数据, 并利用DCD伪指令定义这些常数。例如:
我们希望把0x20000020存放在寄存器R0中, 指令码中无法内嵌数据0x20000020, 先把数据存放在标号地址L0001A4处, 通过相对寻址方式实现存取。
2.2 条件指令 (IT)
ARM汇编指令可以有条件地执行, 但在Cortex-M3中, 指令中对条件后缀的使用有限制, 只有转移指令 (B指令) 才可随意使用。而对于其他指令, CM3引入了IF-THEN指令块, 在这个块中的指令才可以加后缀, 且必须加以后缀。IF-THEN块由IT指令定义。
IF-THEN (IT) 指令围起一个块, 里面最多有4条指令, 它里面的指令可以条件执行。IT已经带了一个“T”, 因此还可以最多再带3个“T”或者“E”。并且对T和E的顺序没有要求。其中“T“对应条件成立时执行的语句, “E”对应条件不成立时执行的语句。在IF-THEN块中的指令必须加上条件后缀, 且“T”对应的指令必须使用和“IT”指令中相同的条件, “E”对应的指令必须使用和“IT”指令中相反的条件。IT的使用形式如下:
其中
而
反汇编程序需要解决的是如何根据指令码找出IT指令中的条件, 根据这些条件正确反汇编IF-THEN块中的指令。
2.3 异常处理向量表
缺省情况下, CM3异常处理向量表位于零地址处, 各向量占用4字节。每个表项占用4字节, 存放处理例程的入口地址。CM3有256个预定义的异常类型, 最多支持240个外部中断, 但具体使用了多少个由芯片生产商决定。
反汇编程序需要确定向量表的具体大小, 找到第一条指令代码的起始地址。
3 设计要点
3.1 总体结构
如前所述, Thumb-2指令序列由16bits对齐的半字组成。在这个序列中, 每条指令或者是16bit, 或者是由两个半字组成的32bits, 详情可参考文献[6]。基于此, 选择了简单的表格驱动算法来实现这一程序, 而不采用逻辑驱动算法, 因为前者比后者更容易测试。
如参考文献[6]所描述的, 如果一个半字的bits[15:11]为0b11101、0b111100、0b11111, 那么这是一条32bits指令, 否则就是16bits指令。如表1所示。
我们可以忽略指令中的imm5、Rn和Rt域, 而只对其中明显标为0或1的二进制位感兴趣。在上例的情况下, 我们只对其高5位感兴趣。如果去掉该指令中没有明显标为0或1的其他进制位, 然后检查其高5位是否为01101或16进制数0x68, 就可以知道该指令是否是LDR指令:
if ( (inst&0x6800) ==0x6800)
它是条LDR指令……
可以用这种先屏蔽后测试的办法来检查每条汇编指令, 一旦确认为LDR指令就可调用译码函数恢复刚才忽略的imm5、Rn和Rt区域的内容。
这就是我们设计的反汇编程序的工作方式。
首先定义一个数据结构, 描述指令识别特征码、掩码和译码函数:
我们看到, 函数pcDisasm并不很大。它使用的算法非常简单:把当前的指令与掩码相与, 在表中特征码比较, 若匹配则调用相应的译码程序。译码程序返回一个修改后的程序计数器, 因为指令可能是16位或者32位。
3.2 数据的识别
定义一个256K大小的int型数组, 数组下标就是数据地址。如果某个地址对应的是数据, 而不是指令代码, 相应的数组位置置1。
int is_data[1024*256];
识别到PC寄存器相对寻址指令, 从指令码中计算出数据的存放地址, 把相应的数组位置置1, 二次扫描时把相应的地址表示为数据, 用DCD伪指令定义这些常数。
3.3 条件指令 (IT)
定义两个数据结构, 记录IT指令的相关信息。
IT指令的分析识别非常复杂, 主要的实现思路如下。
IT后面可能出现的组合:
IT指令编码形式如表2所示。
其中, mask占4bit, 表示IT后是xyz、xy、x或者没有, 具体编码见参考文献[6]的A6.7.37。firstcond编码见参考文献[6]的A6.3。
识别函数如下:
对应T的条件:
对应E的条件:
根据识别出的IT指令, 把相应的条件存在IT_block的cond域中。译码程序根据有关标志正确反汇编。
3.4 异常向量表
CM3有256个预定义的异常类型, 最多支持240个外部中断, 但具体使用了多少个由芯片生产商决定, 因此可以通过配置文件或者人机界面的形式指定异常向量表的大小。笔者实现的程序中通过配置文件指定。
4 运行实例
LPC1768是恩智浦 (NXP) 公司基于ARM公司的Cortex-M3内核的微控制器[8], 主要针对高集成度和低功耗的嵌入式应用。LPC1768的异常向量表地址为0x00-0xC8, 第一条指令的起始地址为0xCC。反汇编出的部分代码片段:
利用辅助工具去除指令编码域的内容, 可以直接编译生成二进制代码。
5 结语
Cortex-M3系列处理器采用的Thumb-2指令集是一套非常复杂的指令集, 本文介绍了实现反汇编程序中的主要技术难点和实现思路。无论是工程实践, 还是学习ARM指令系统, 或者是C语言编程实践, 本项目都是极好的课题。目前笔者实现了Linux环境下的运行版本, 通过增加可视化人机界面, 后续的工作中将实现Windows环境下的运行版本。
参考文献
[1]宋威, 曾勇军, 奚琪.一种动静态结合的代码反汇编技术[J].计算机工程, 2012, 38 (1) :68-70, 73.
[2]马金鑫, 忽朝俭, 李舟军.基于控制流精化的反汇编方法[J].清华大学学报, 2011 (10) :1345-1350.
[3]崔晨, 李清宝, 胡刚, 等.基于中断向量表重构的固件代码反汇编技术[J].计算机科学, 2012 (7) :302-304.
[4]彭波.基于ELF文件的智能反汇编技术研究[J].微计算机信息, 2011 (6) :28-29.
[5]王振华, 陈宝财, 卢琦.目标代码静态反汇编技术研究与实现[J].现代计算机, 2010 (3) :163-167.
[6]ARM Limited.ARMv7-M Architecture Reference Manual[CP/DK].ARM Limited, 2010.http://infocenter.arm.com/help/index.jsp.
[7]Joseph Yiu.ARM Cortex-M3权威指南[M].宋岩, 译.北京:北京航空航天大学出版社, 2009.
CORTEX-M4 篇5
另外如果发生火灾或洪水时会造成有人呼吸窒息, 传统的方法我们会通过人工呼吸进行救治, 但是人工呼吸有时会因为操作不当或不卫生而给患者带来其他的疾病。因此本课题提出用于睡眠和急救的双功能呼吸机。在睡眠模式下采用了持续气道正压 (CPAP) 方法。持续气道正压因具有无创伤、疗效显著的特点, 是治疗OSA最常见的方式, 主要的工作原理是:患者佩戴面罩, 由呼吸机提供稳定的正压气流通过管路经鼻腔至上气道, 维持上气道的开放状态, 从而达到治疗睡眠呼吸暂停的目的。
1 Cortex-M3内核及LM3S811简介
Cortex-M3是首款基于ARMv7-M体系结构的32位标准处理器, 具有低功耗、短中断延迟、低调试成本等众多优点。其在结构上包括处理器内核、嵌套向量中断控制器 (NVIC) 、存储器保护单元 (MPU) 、总线接口单元和跟踪调试单元等特点。该内核采用了哈佛 (Harvard) 架构的3级流水线内核, 采用ARM Core sight调试跟踪体系结构, 可实现低成本跟踪调试。
LM3S811就是基于Cortex-M3的一款微控制器, 具有以下特性:工作频率为50MHz, 集成了嵌套向量中断控制器, 26个中断具有8个优先等级, 带存储器保护单元 (MPU) , 精确的位操作;内部存储器有64KB单周期Flash, 8KB单周期访问的SRAM;3个通用定时器模块, 同步串行接口SSI;2个完全可编程UART;4个10位ADC通道;1个集成的模拟比较器;IIC;3个PWM信号发生模块, 高达1-32个GPIO。
2 系统硬件结构
2.1 系统结构
本文所设计的呼吸机控制器系统由单片机加上各种外设组成的。Cortex-M3系列高端单片机作为核心的处理芯片, 通过其内部丰富的接口连接外围设备, 实现了呼吸机控制器的设计系统框图如下: (如图1)
从功能模块上该系统可以分为三个部分。
第一部分为控制器的核心—LM3S811处理器, 它的主频是50MHz, 这样可以高速处理测量、显示和控制任务。
第二部分为LM3S811的最小系统, 包括电源电压转换模块;外部引脚复位及低压差 (LDO) 复位用来保证主CPU的可靠复位;UART串口用于实现和上位机的通信;JTAG调试接口完成程序的下载和调试功能。
第三部分是实现测量、显示和控制的外围电路。主控制器实现测量数据的处理、显示和控制。LCD显示模块完成压力曲线、功能选择状态和数字量的显示, 键盘接受用户操作, 反映在工作模式的改变和LCD屏上菜单的变化;模拟量测量模块用来将0V-3V的气道压力 (电压信号) 转换成10位精度的数字量。数字量然后经过CPU的运算又被还原为气道压力值, 并在液晶屏上动态显示。
2.2 硬件选型
本设计中选用的CPAP专用无刷直流电机作为压力发生器, 此电机响应速度快, 惯性小, 其输出压力在4~20cm H2O之间, 压力的波动范围可控制在 (±2cm H2O) 之间。无刷直流电机的驱动选择MC33035和MC33039, 两者组合实现对无刷直流电机的速度闭环控制, 因为MC33035是电机驱动控制芯片, MC33039是电机的速度闭环控制。LCD液晶显示屏选择的是240RGB x 320 TFT, 其控制芯片是ILI9325, LCD接口选择的的是8位系统接口。压力传感器选用Freescale公司的MPXV5004G系列中的一款, 其具有良好的线性输出特性, 可测压力范围是0~3.92KPA, 即0~400mm H2O, 对应的压力输出大小为1.0~4.9V。
3 系统软件结构
本系统的软件使用Keil C语言在Keil4 for AMR的集成环境下进行编写编译调试, 并且使用了Stellaris驱动库程序, 该驱动库程序的作用主要是方便对外设的使用。
3.1 软件程序总体结构
软件总体架构上采用模块化设计, 采用模块化的设计方法, 可以使软件的总结结构比较清楚, 同时也减少了软件编写过程中的调试工作量和难度。整体软件设计结构如图2所示。软件设计中的功能选择利用外部引脚中断, 有led灯指示是睡眠模式还是急救模式, 并且在液晶屏上也可显示。在睡眠模式下的功能选择也是利用外部引脚中断来实现的, 用来实现成人急救模式和儿童急救模式的切换。
整个主程序是采用大循环加小中断的模式进行设计的。在整个大循环里进行AD检测转换、LCD显示刷新、电机调速控制以及与上位机通信, 检测压力值是否超过报警上下线。利用小中断进行功能模式的选择, 主程序利用了2个外部引脚中断和一个定时器中断, 以及看门狗定时器中断。
3.2 呼吸频率的测量
呼吸频率定义为每分钟内完整呼吸的次数。采用定时器1进行定时1ms, 在一个呼吸周期内通过计数1ms的个数来得到呼吸频率的周期T。呼吸频率有下面公式得到:f=60/T=6000/n (次/min) 。呼吸频率的测量方法如下图3所示。
3.3 气道压力的检测与控制
开机进入睡眠模式, 睡眠模式采用持续气道正压 (CPAP) 方式, 患者通过按需活瓣持续正压气流系统进行自主呼吸, 正压气流大于吸气气流, 呼气活瓣系统对呼出气流给与一定的阻力, 使吸气期和呼气期气道压力均高于大气压。通过气道压力测量和调节系统, 随时调整正压气流的流速, 维持气道压基本恒定在预调的CPAP水平。上电后进入睡眠模式及默认的CPAP值 (一般在2~10cm H2O) , 在感觉到呼气时风机启动, 传感器检测气道内压力, 传给LM3S811微处理器, 微处理器根据此压力值通过PWM来调节电机转速, 来维持恒定的CPAP水平。当超过预定的CPAP水平一定时间后, 会启动报警模块。传感器检测气道压力和输出电压值的转换公式如下:Vs是传感器的供电电压, p为气道压力值, 单位为Kpa, VFss为误差, 一般为±1.5。
Vout=Vs*[ (0.2*p) +02.]±.15%VFss通过按键选择进入急救模式, 默认是成人急救模式。急救的原理类似人工呼吸, 间隔性地对气道进行吹气。成人的呼吸频率大约没分20次, 儿童大约为没分25次, 根据二者的不同设置不同的模式, 该模式的选择也是通过按键进行选择。此模式下电极的调节由定时器0和PWM2模块共同来完成。
4 上位机界面和实验结果
本文的上位机界面使用Visual C++设计, 下位机和上位机通过R232进行通讯, 在上位机上可以显示实时压力曲线、流量曲线、压力值等参数。
工作时, 下位机按照设定的参数开始驱动电机并且通过传感器采集压力, 然后将采集到的气道压力通过串口传输至上位机, 实现通信功能, 完成数据的实时曲线显示并将历史数据存储于数据库中。在网页上用曲线形式实现呼吸机参数的远程监测, 进而实现医疗资源的共享。
下面图4和图5为该呼吸机的下位机的演示效果:
5 结语
本文提出一种睡眠急救呼吸机的设计方案, 睡眠模式下采用经典的持续气道正压CPAP模式, 急救模式根据呼吸频率的不同分为不同的模式, 具有很好的实用性。本文还着重考虑系统方案设计中硬件选择, 选择了基于ARM Cortex-M3内核的LM3S811微处理器, 使成本有所降低并且可靠性更高。该呼吸机对于家庭使用、外出旅游随身携带都很方便, 具有良好的市场前景。
参考文献
[1]曹鄂洪, 童茂荣.睡眠呼吸暂停综合征诊疗手册[M].南京:南京出版社.
[2]王永虹, 徐炜, 郝立平.ARM Cortex-M3微控制器原理与实践[M].北京航空航天大学出版社, 2008.
[3]王保国等.实用呼吸机治疗学[M].北京:人民卫生出版社, 1994.90-103, 203-205.
[4]刘波文.ARM Cortex-M3应用开发实例详解[M].北京:电子工业出版社, 2011.2.
CORTEX-M4 篇6
随着我国经济建设的迅速发展和人民群众生活水平的极大提高, 人们越来越注重自身所处的环境是否安全。特别是当家中无人或者仅有老人孩子时, 家庭成员的生命和财产的安全性越来越受到重视。因此, 家庭防盗已成为一个重要的社会问题。目前, 许多住宅小区的安防主要依靠传统的机械式 (防盗网、防盗窗) 防盗系统。这样不仅有碍美观, 不符合火灾逃生的要求, 而且不能有效地防止坏人的侵入。随着电子技术的飞速发展, 防盗报警系统已迫切从原来的简单化、局部化向智能化、集成化发展。
当前, GSM短信息服务已作为GSM网络的一种基本业务, 基于GSM短信模块与单片机相连接应用于家庭无线防盗报警系统中, 让家庭防盗更及时、更方便, 以最直观的中文短消息形式, 直接把案发地点的情况反映到用户的手机屏幕上。同时采用一种热释电红外传感器进行检测, 变有形的传统防盗网防盗窗为无形的监控, 给家庭防盗提供最直观、高效、可靠的保障。
1 系统的总体设计及工作原理
GSM短信报警系统设计框图如图1所示。整个系统[1]由STM32单片机模块、热释电传感器模块、GSM模块及传统扬声器模块组成。GSM模块采用芯讯通 (SIMCom) 公司生产的SIM900A芯片及外围设计电路, 而热释电传感器模块采用红外专用芯片BISS0001的设计电路。首先当热释电传感器模块检测到人发射的红外线时, 通过其外围放大电路转换成电压信号传输给STM32单片机。单片机判断热释电传感器模块送来的数据, 通过串口发送一个高电平给GSM模块, 使GSM模块发送短信到设定的手机号码, 及时通知主人家里出现了什么情况, 同时使扬声器发声报警, 从而实现系统的预想功能。
然而白天当主人在家的时候, 则不需要设定防盗功能, 可以关闭功能;假如主人要离开房屋或夜间睡眠时, 则需要打开防护功能。这些“设防”、“撤防”的功能, 同样可以通过手机发送特定短信至GSM模块的方式进行开启和关闭, 热释电传感器检测会随之起作用, 以免引起不必要的麻烦和误报。
2 系统硬件电路设计
2.1 STM32F103最小系统
STM32系列单片机[2]由ST公司生产的专为要求高性能、低成本、低功耗的嵌入式应用设计的ARM Cortex-M3内核。本系统采用的STM32属于互联型产品, 具有以下标准功能:72MHZ主频, 56k字节Flash, 64字节SRAM, 2个看门狗, 多个16位定时器, 80%的引脚可以作为通用I/O口, 以及USART、SPI等通信外设, 其外设完全满足本系统的功能要求。因此, 本系统采用STM32F103作为总控制器, 其最小系统如图2所示。
本系统采用4线JTAG接口, 即TMS (测试模式选择) 、TCK (测试时钟) 、TDI (测试数据输入) 、TDO (测试数据输出) , 又采用常规的20pin接口方式, 通过仿真器与PC机连接, 可以实现在线仿真调试, 方便可靠。系统采用8MHZ晶体振荡器, 此时需要接负载电路。另外, 复位电路的设计方式简洁, 可以实现系统可靠复位。
2.2 GSM模块
GSM模块[3]用芯讯通 (SIMCom) 公司生产的SIM900A, 是一款尺寸紧凑的GSM/GPRS模块, 采用SMT封装, 基于STE的单芯片案, 采用ARM926EJ-S架构, 性能强大, 支持AT指令。
利用STM32的串口来控制GSM MODEM, 单片机与GSM模块一般采用串行异步通信接口, 通信速度可设定, 通常为19200bps。GSM MODEM与单片机之间采用串口通信的方式, MODEM的TXD、RXD分别为发送、接收端, 与单片机的PA10、PA9连接, 组成串口通信。GSM模块通过把PWRKEY信号拉低一段时间然后释放来开机。当模块开机后就可以发送AT命令来控制模块, 用户可以通过“AT+IPR=x”设置波特率并把参数保存。一旦配置为固定波特率, 当模块开机时将会从串口收到字符“RDY”。这些字符在自动波特率激活的情况下无法显示。同样, 可以通过把PWRKEY信号拉低一段时间然后释放来关机。或者使用AT命令“AT+CPOWD=1”关闭模块。该命令使模块从网络上注销, 让软件进入安全状态, 保存有用数据, 让然后完全断开供电。在关机前, 模块串口将自动发送下列字符串“NORMAL POWER DOWN”, 这之后将不能执行AT命令。模块进入掉电模式, 仅仅RTC处于激活状态。掉电模式可以通过STATUS引脚来检测, 在掉电模式下此引脚输出为低电平。GSM主模块 (包括SIM部分) 如图3所示。
2.3 热释电传感器模块
热释电传感器模块[4]括热释电传感器及外围放大电路, 当有人进入传感器所能检测到的范围时, 传感器检测到能量变化, 转换成微弱的电信号, 然后通过外围放大电路放大并转换成电压信号传输给单片机。其作用原理如下:人体都有恒定的体温, 一般在37度, 所以会发出特定波长10um左右的红外线, 被动式红外探头就是靠探测人体发射的10um左右的红外线而进行工作的。人体发射的10um左右的红外线通过菲泥尔滤光片增强后聚集到红外感应源上。由实验证明, 传感器不加菲涅尔透镜, 其检测距离小于2m, 而加上菲涅尔透镜后, 其检测距离可增加到10m左右。红外感应源通常采用热释电元件, 这种元件在接收到人体红外辐射温度发生变化时就会失去电荷平衡, 向外释放电荷, 经后续电路检测处理后就能产生电信号发送给单片机处理。
热释电BISS0001模块的原理图如图4所示。图中, 运算放大器OP1 (芯片内部) 将热释电红外传感器的输出信号作第一级放大, 然后由C104耦合给运算放大器OP2 (芯片内部) 进行第二级放大, 再经由电压比较器COP1和COP2构成的双向鉴幅器处理后, 检出有效触发信号Vs去启动延迟时间定时器, 输出信号Vo经晶体管T1放大驱动继电器去接通负载。CDS1为光敏电阻, 用来检测环境照度。当作为照明控制时, 若环境较明亮, CDS1的电阻值会降低, 使9脚的输入保持为低电平, 从而封锁触发信号Vs。JP1是工作方式选择开关, 当JP1跳线帽跳2、3口时, 与1端连通, 芯片处于不可重复触发工作方式, 这种工作方式下即使检测区域有人活动模块也会自动停止输出一段时间 (封锁延时) 然后再检测, 这种工作方式一般习惯称为脉冲输出;当JP1跳线帽跳1、2口时, 与2端连通, 芯片则处于可重复触发工作方式, 只要检测区域有人模块就一直有输出, 这种模式一般称为电平输出。另外, 输出延迟时间T x由外部的R33和CY2的大小调整, 触发封锁时间Ti由外部的R13和CY1的大小调整。模块采用低功耗稳压器件7133A-1, 可以保证在很宽的输入电压下稳定提供3.3V的工作电压, 确保模块能正常工作。
2.4 电源
电源模块分两部分:单片机供电模块和GSM供电模块。单片机电源采用典型的电源设计方案, 如图5所示。其中C9和C10是旁路电容, 起到抑制干扰的作用, 而C11和C12是电解电容, 起到滤波的作用;一般大电容旁边并联一个小电容的目的是降低高频内阻, 因为大的电解电容一般采用卷绕工艺制造, 所以等效电感较大;小电容可以提供一个小内阻的高频通道, 降低电源全频带内阻。这个电路在实际中比较常见。
而SIM900A模块电源采用VBAT为3.4V到4.5V的单电源供电, 由于和单片机工作电压不同, 由单独电源模块供电, 如图6所示。VBAT端输出电压4.2V给GSM模块使用。
2.5 扬声器
扬声器部分主要包括一个继电器, 当单片机相应端口置为高电平时, 驱动继电器, 使得扬声器电路接通, 发出声响以起到报警作用。
3 系统软件设计
3.1 AT指令
AT指令集是从TEC (Terminal Equipment) 或DTE (DataTerminal Equipment) 向TA (Terminal Adapter) 或DCE (Data Circuit Terminating Equipment发送的通过TATE发送AT命令来控制MS (Mobile Station) 的功能与GSM网络业务进行交互, 用户可以通过AT命令进行呼叫短信电话本数据业务补充业务传真等方面的控制。下面是一些短消息相关的常用AT指令:
目前, 发送短消息常用Text和PDU (Protocol Data Unit, 协议数据单元) 模式。使用Text模式收发短信代码简单, 实现起来十分容易, 但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信, 也能发送英文短信。所以此处使用PDU模式来收发短信。PDU模式收发短信可以使用3种编码:7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符, 8-bit编码通常用于发送数据消息, UCS2编码用于发送Unicode字符。该模块集射频电路和基带于一体, 提供标准的AT命令接口, 为数据、语音、短消息和传真提供快速、可靠、安全的传输。
首先使用命令“AT+CMGF=0
3.2 系统程序主流程图
系统程序主流程图如图7所示, 系统先初始化, 然后检测是否设防。因为单片机利用AT指令控制GSM模块, 将数据传送出去。AT指令按照GSM模块支持的AT指令格式书写, 通过单片机的串口发送出去。所以此模块的“设防”, “撤防”则可以通过以下方式:如果模块被命令“AT+CFUN=0”设置成最小功能模式, 则关闭射频功能和SIM卡的功能, 在这种情况下, 串口仍然可以继续使用, 但是和射频功能及SIM卡功能相关的AT命令不能使用。此时为撤防状态。当模块通过“AT+CFUN=0”设置为最小功能, 模块可以通过“AT+CFUN=1”命令返回全功能模式。此时为设防状态。一旦“设防”之后, 系统正常工作。如果单片机通过热释电模块检测到有人进入, 马上通过串口发送一个高电平到GSM模块, 使模块发送 (下转第24页) (上接第3页) 短信给主人, 同时扬声器发声报警。
4 结束语
该系统有以下特色:由于该系统设置了具有“设防”和“撤防”功能, 可以避免误报;同时系统中扬声器和软件配合, 能迅速而有效地起到报警作用;另外, 借助先进稳定、成熟高效的GSM移动网络, 使得该报警系统更具智能化和集成化, 报警方式更显直观性和可靠性;最后可针对家庭的实际需要开发其他功能, 如添加摄像头等, 使系统更加完善。总之, 由于系统结构设计合理, STM32单片机与GSM模块技术应用到位, 功能电路实现较好, 系统性能良好、稳定, 较好地达到了家庭防盗要求的各项指标。而且该系统成本低、实用性和可操作性强, 有着一定的应用价值, 能得到广泛的应用和发展。
参考文献
[1]求是科技.单片机典型模块设计实例导航[M].北京:人民邮电出版社, 2004.
[2]刘军.例说STM32[M].北京:北京航空航天大学出版社, 2011.
[3]吴晓庆.单片机控制GSM模块通信[J].内蒙古:内蒙古科技与经济, 2010, (3) :87-88.
【CORTEX-M4】推荐阅读:
Cortex-M307-30