陈宇珂,郑理华,张兴安,袁 凯,窦建洪,覃健全
ATMEL AVR单片机SPI大容量Flash Rom扩展的实现
陈宇珂,郑理华,张兴安,袁 凯,窦建洪,覃健全
目的:通过适合小型嵌入式智能化医疗设备的大容量Flash Rom扩展,实现运行过程数据的实时记录和汉字点阵库扩展。方法:利用具备SPI接口的ATmega128单片机和AT45DB161大容量Flash Rom,设计根据静脉麻醉目标浓度实时计算给药注射速率的智能化静脉麻醉控制系统,完成大容量Flash Rom的硬件扩展和基于C语言的模块式Flash Rom读写程序编写。结果:利用单片机SPI接口外接大容量存储芯片,完成了各种实时数据的快速可靠传输和存储,同时该系统可实现全中文人机交互界面。结论:Flash Rom扩展系统在大屏幕静脉麻醉控制系统中的应用表明,整个系统在复杂电磁环境下运行稳定,满足了智能医疗系统可靠性高、抗干扰能力强、体积小、故障率低的要求,具有较好的读写性能和实用价值。
静脉麻醉;目标控制注射;嵌入式系统;药代动力学
随着单片机微电子生产工艺的进步以及大容量数据存储和网络连接功能的高度集成,嵌入式系统已经广泛渗透到移动通信、网络工程、军事装备、医疗设备以及信息家电等涉及人们日常生活的方方面面。将现有设备通过嵌入式技术升级改造可以使之具备更多的智能化功能[1]。由AT89LV52扩展的AT45DB041B,在海洋表面气象参数存储中保证了大容量数据的安全[2]。另外,在便携式心电仪、血糖仪[3]、胎心监测[4]、网络化平战心电信息系统[5]、中药熬药机[6]等多种医疗设备中引入微处理器和大容量存储芯片,特别是基于串行外围设备接口(serial peripheral interface,SPI)的存储芯片,可以减小设备体积,提高抗干扰能力和信号检测灵敏度,有效降低整机功耗。
目前,临床静脉麻醉具有方法简单,不需要大型麻醉机、专用挥发器,不依靠肺来运送麻醉药,患者术后恶心、呕吐发生率低,麻醉患者血流动力学稳定性好等优点。但静脉麻醉药物有效安全范围窄,给药速率的精确控制对于合理用药、减少毒副作用、提高用药的安全性至关重要。为此,基于临床提高静脉麻醉控制水平的需求,结合最新嵌入式系统技术,开发了以ATmega128为控制核心、以临床药代动力学研究成果为基础的智能化三通道静脉麻醉输注系统。系统通过调节血浆或效应室目标药物浓度控制麻醉深度,实现静脉麻醉科学给药[7]。
结合三通道静脉麻醉控制系统的设计要求,为给临床提供更好的人机交互界面,采用320点阵× 240点阵大屏幕液晶显示屏。但是在LCD显示系统中涉及到各种点阵字母、符号、汉字和图像的显示,而ATmega128内带128 KB Flash,系统程序仅可写入英文字符及少量汉字。由于静脉麻醉控制系统人机交互界面欲采用全中文,为临床麻醉医师提供更多信息,同时系统运行时各种信息的存储也需要较大空间,而单片机ATmega128内带Flash空间无法满足存储需要,为此,通过ATmega128的SPI扩展大容量外部Flash Rom——AT45DB161D,解决中文字模库和实时数据存储容量不足的问题。
1.1 ATmega128 AVR单片机的结构特点
美国ATMEL公司推出的ATmega128单片机是一款基于精简指令集(reduced instruction set computer,RISC)结构的低功耗CMOS 8 bit单片机,通过局部寄存器和单体高速输入、输出方案实现在一个时钟周期内执行一条指令,性能达到了1 Mips/MHz。AVR单片机内核有32个工作寄存器,这些工作寄存器都同算术逻辑单元(arithmetic and logic unit,ALU)直接连接在一起,同时通过丰富的优化指令集,允许在一个时钟周期内执行的单条指令同时访问内核中2个独立的寄存器,这样独特的硬件结构可以有效地提高代码效率,相比普通复杂指令集(complex instruction set computer,CISC)单片机,可以提高将近10倍的机器性能。ATmega128单片机内部嵌有可串行下载和自我编程的Flash程序存储器、E2PROM,为系统软件的不断升级提供了方便;ATmega128单片机的53个通用I/O口都具有真实的读、写和修改功能,各管脚的输入、输出方向都可以根据实际需要独立地选择。根据外部扩展的需要,ATmega128单片机的A、C口既可以作为通用输入、输出口,又可以组合起来作为外部存储器的高8 bit(C口)和低8 bit(A口)地址线,这样组成的16 bit地址使得可以寻址的片外存储器达到64 KB。而且AVR单片机具有降低功耗抗干扰的Idle Power-Save和Power-Down等休眠运行模式,为设计高性能、低功耗、小体积的应用系统提供了硬件保证。
同时,ATMEL公司为AVR单片机软件开发提供一个免费的汇编级集成环境AVR STUDIO,在该集成开发环境中可实现汇编语言的编辑、纯软件仿真、目标代码生成等功能。同时该开发环境还集成有AVRGCC编译器,方便程序员运用C语言编程。运用这一开发软件,程序员可以随时进行程序的修改、编译、仿真、调试。结合ATMEL公司推出的JTAG接口仿真器——JTAG ICE,将JTAG ICE和AVR STUDIO构成集成调试系统,除了实现AVR STUDIO的原有功能外,还可实现对目标硬件系统的片上仿真调试以及对芯片的快速擦写。因此,由于ATmega128单片机功能可靠、片上资源丰富和开发环境友好的优点,选择其作为智能静脉麻醉控制系统的主控芯片。
1.2 ATmega128串行外围接口SPI的特点
ATmega128单片机具有丰富的外部接口,其中片内集成有SPI,这种串行外围接口采用硬件的方式实现了面向字节的全双工三线同步通信。根据SPI相关协议和标准,ATmega128支持主机、从机2种模式以及2种不同极性的SPI时序,串行数据通信速率可以有7种不同的选择,作为主机方式时的最高速率可为1/2系统时钟,作为从机方式时最高速率可为1/4系统时钟。ATmega128的SPI具有相应硬件接口管脚和传输完成硬件中断申请,在进行SPI模块软件设计时可以采用高效的中断、数据缓存模式,提高数据传输、处理效率和准确性。在SPI驱动软件模块设计中对SPI初始化时一定要注意正确选择、设置主机或从机模式,确定工作模式时序极性,设置好数据传输率;同时注意数据传输时传送字节的顺序是低位优先(LSB First)还是高位优先(MSB First);硬件初始化时在软件对硬件接口的设置上,要正确设置MOSI和MISO接口的输入、输出方向;同时尽量设置使用芯片内部的输入引脚上拉电阻,以节省总线上的上拉电阻[8]。
1.3 AT45DB161D芯片特点
AT45DB系列闪存芯片供电电压可以为2.5~2.7 V,具有较低功耗,并具备SPI,在数据语音、图像、程序代码数据存储中得到广泛应用[9]。AT45DB161D芯片包含有17、301、504个数据位,被组织成4096页,每页含512B或528B。AT45DB161D芯片中除了包含主存储器外,还包括2个静态随机存储器(static random access memory,SRAM)作为数据缓冲区,这2个缓冲区每个为512或528 B。这样主存储器正在编程读写数据时,缓冲区可以同时接收数据,实现数据的不间断流式写入。采用SPI的闪存芯片与并行Flash储存器不同,不需要大量的外部地址线,减少了外部引脚数量,同时也提高了整个系统的可靠性,降低了开关噪声,缩小了整个系统的体积,特别适合医疗、工业等需要高密度、低引脚数、低电压与低功耗的应用场合。
ATmega128通过AT45DB161D芯片#CS片选接口使能选中相关存储芯片,然后通过三线接口(SI、SO、SCK)进行高速数据通信。芯片的读写操作通过单片机中软件模块相关读写指令完成,一个有效的指令由#CS的下降沿指示开始,紧随其后的数据是一个有意义的8 bit操作码和缓存区或主存储器的地址。当#CS保持低电平时,由时钟SCK引脚控制数据输入,SI引脚写入操作码和缓存区或主存储区地址。在程序编写中要注意,所有的指令、地址与数据在传输时都是高位在前。
1.4 硬件设计
ATmega128内部包含SPI电路,直接使用其SPI接口与AT45DB161相应管脚连接,其电路如图1所示。
图1AT45DB161外围电路
1.5 软件设计
系统软件采用C语言编写,AT45DB161操作程序模块主要包括初始化、SPI的读写等。
(1)AT45DB161的初始化程序:
void df_init(void)
{
//MISO设置为输入,上拉电阻关闭,其他默认为1
DDRB&=~BIT(FLASH_MISO);
PORTB|=BIT(FLASH_MISO);
PORTB|=BIT(FLASH_SCK)|BIT(FLASH_MOSI)| BIT(FLASH_CS);
//SCK,MOSI和CS端口对应脚设置为输出
DDRB|=BIT(FLASH_SCK)|BIT(FLASH_MOSI)| BIT(FLASH_CS);
//SPI中断禁止,SPI使能
SPCR=BIT(SPE)|BIT(MSTR)|BIT(CPHA)|BIT (CPOL);
}
(2)AT45DB161的字节输出子程序:
//从SPI输出一字节数据
static INT8U spi_write(INT8U data)
{
SPDR=data;
while(!(SPSR&BIT(SPIF)));
return SPDR;
}
(3)检测并等待器件忙状态子程序:
static void df_wait_busy(void)
{
SEL_FLASH=0;
spi_write(STATUS_REGISTER);
while(1)
{
if(spi_write(0)&0x80)//读取的最高位0时器件忙
break;
}
SEL_FLASH=1;
}
根据AT45DB161数据手册,其操作指令分为三大类:一是从主存储器和缓存读取数据;二是向主存储器和缓存写入数据;三是主存储器和缓存之间的数据传输和比较。根据实际编程和应用发现需要注意以下2点:
(1)ATmega128在通过SI、SO引脚与AT45DB161通信期间,必须保持#CS片选信号为低电平,但涉及到芯片内部主存与缓存之间的数据传输和比较、页的擦除和块擦除等操作时,则是在芯片内部自带时序电路控制下自动完成,不需要单片机额外控制。同时考虑到由于这些相关操作需要相对较长的时间,在程序设计时有必要加入一定的延时,以防止数据丢失。
(2)ATmega128单片机可直接从AT45DB161主存页面的某个存储单元读取数据,但是不能够直接向某个存储单元写入数据。这个时候如果需要向主存储器写入数据可以采取以下方法:①先将数据写入缓存,然后采用芯片自带擦除方式将缓存中的数据写入主存储器;②直接通过缓存将数据写入主存储器。
利用ATmega128单片机SPI接口扩展外部存储器2 MB AT45DB161后,智能化三通道静脉麻醉输注系统所采用的图形液晶显示器可以展示出丰富的内容。首先根据系统运行中需要用到的汉字、数字、字母和图形,设定其点阵数目为16×16、24×24、48× 48,通过取模工具取出相应点阵的数据,在确定片外存储器存储起始地址后,按顺序分组通过写入子程序将字模库存入AT45DB161对应存储空间。程序在需要显示这些汉字、数字和图形信息时,直接通过读取子程序从对应存储位置调用字模数据,放入液晶控制器的显示内存中,随即在LCD上显示出来。LCD显示的内容有注射药物名、注射时间、注射剂量、清醒时间、目标药物浓度设定值、血浆药物浓度计算值、效应室药物浓度计算值,在系统探测到各种报警信息时显示报警内容和处理方法。
针对智能医疗系统要求可靠性高、抗干扰能力强、体积小、故障率低、人机界面友好、便于调试的特点,本文基于国人静脉麻醉药代动力学模型,通过
(▶▶▶▶)(◀◀◀◀)ATmega128的SPI接口扩展大容量外部FlashRom——AT45DB161D,解决中文字模库存储容量不足的问题,并成功实现了根据静脉麻醉目标浓度实时计算给药注射速率的智能化静脉麻醉控制系统。实验表明,该系统在复杂电磁环境下运行稳定,具有较好的读写性能和实用价值。
[1] 楼智翔,沈浩,孙杰.基于ARM的振动及温湿度监测系统的设计[J].工业控制计算机,2011,24(4):41-44.
[2] 张光宇,吴敏波,刘剑豪.基于AT45DB041B存储器的手持数据接收系统设计[J].信息化纵横,2009(17):8-11.
[3] 潘佚,邱蕾.国产便携式血糖仪功能改进及低功耗设计[J].现代仪器与医疗,2013,19(1):38-40.
[4] 孟倩,郑利星,郭红蕊,等.胎心声音存储回放系统设计[J].生物医学工程与临床,2013,17(2):184-186.
[5] 吴北江,王洋,孙文桥,等.网络化平战两用数字心电信息系统的设计与实现[J].医疗卫生装备,2010,31(6):48-50.
[6] 向逾,张潇潇,朱彬,等.基于AVR单片机的家用中药熬药机的设计与开发[J].医疗卫生装备,2013,34(1):22-24.
[7] 侯芝绮,张兴安.异丙酚药动学与其靶控输注系统的准确性评估[J].中国药房,2011,22(10):924-927.
[8] 耿德根,宋建国,马潮,等.AVR高速嵌入式单片机原理与应用[M].北京:北京航空航天大学出版社,2003.
[9] 翟瑞永,张文栋,周兆英,等.SPI串行Data Flash在MEMS姿态测量系统中的应用[J].电子技术应用,2013,39(8):37-39.
(收稿:2014-05-15 修回:2014-08-20)
Realization of high-capacity Flash Rom extension for ATMEL AVR MICU SPI
CHEN Yu-ke1,ZHENG Li-hua1,ZHANG Xing-an1,YUAN Kai2,DOU Jian-hong1,QIN Jian-quan3
(1.General Hospital of Guangzhou Military Area Command,Guangzhou 510010,China; 2.Guangzhou Infumedi Medical Instrument Co.,LTD.,Guangzhou 510643,China; 3.Shenzhen Sino Mdt Medical Instrument Co.,LTD.,Shenzhen 518053,Guangdong Province,China)
ObjectiveTo realize real-time recording and running operational process data and extension of Chinese character library by high-capacity Flash Rom extension fit for miniature embedded intelligent medical equipment. MethodsATmega128 MICU with SPI interface and AT45DB161 high-capacity Flash Rom were used to develop an intelligent control system for intravenous anesthesia,which could regulate administration velocity based on target concentration.Hardware extension was completed for high-capacity Flash Rom,and modular Flash Rom R/W program was developed based on C language.ResultsMICU SPI interface with external high-capacity memory chip made the system implement rapid transmission and storage of real-time data as well as man-machine interaction in Chinese. ConclusionLarge-screen intravenous anesthesia control system involving Flash Rom extension system runs stably in complex electromagnetic environment,with high reliability,high anti-interference ability,low failure rate,high R/W performance and practical values.[Chinese Medical Equipment Journal,2015,36(4):19-21,68]
intravenous anesthesia;target-controlled infusion;embedded system;pharmacokinetics
R318;R197.39;TP311.13
A
1003-8868(2015)04-0019-04
10.7687/J.ISSN1003-8868.2015.04.019
广东省科技计划项目(2012A032200023);广州经济技术开发区科技项目(2010Q-P306)
陈宇珂(1971—),男,博士,副主任,主要从事嵌入式设备在医疗仪器中的应用方面的研究工作,E-mail:yukechen@qq.com。
510010广州,广州军区广州总医院(陈宇珂,郑理华,张兴安,窦建洪);510643广州,广州市亿福迪医疗器械有限公司(袁 凯);518053广东深圳,深圳圣诺医疗设备有限公司(覃健全)