2 系统硬件设计
2.1 中央控制部分
系统使用三星公司的S3C2410处理器作为中央控制单元。该芯片以32位ARM920T为内核,最高处理速度达到203 MHz;支持5级流水线操作,包括存储器管理单元;具有低成本、低功耗、集成性高的特性[4]。系统外扩32 MB Flash空间,用于存储Linux内核、应用程序;系统外扩64 MB SDRAM,用于系统和程序的执行。
2.2 主要功能部分
肌电采集电路用于检测和采集患者的体表肌电信号,电路主要包括前置放大、高通滤波、低通滤波、隔离放大、工频陷波、增益控制电路。该部分电路将采集到的体表肌电根据系统要求放大1 250~10 000倍。增益控制电路由S3C2410的GPIO控制,系统利用S3C2410的SPI总线扩展12位串行A/D转换芯片AD7453采集肌电放大器输出的SEMG信号,然后经过滤波处理后传送到实时处理模块,并在LCD上显示出来。系统通过控制相关电路的工作来控制肌电采集的开始和停止等操作。
NMES电路产生一种低频可渐变的调制矩形波。S3C2410的PWM输出一路脉宽可调的矩型波到该电路,同时4通道12位串行D/A转换芯片MAX5742输出一路梯形调制波,两路波形经调幅电路、高压恒流源电路就能得到调制方波作为刺激波。MAX5742是SPI接口的串行D/A芯片,也接到S3C2410的SPI总线,与A/D芯片分时复用。该电路的刺激波形、刺激强度、频率、脉宽、时间等参数均通过系统软件来调节。
FNS电路输出调幅的无极性微分型指数脉冲的中频电刺激波形。系统向MAX5742输出一路随机波形生成调制波;同时,S3C2410的PWM输出一路频率为1 kHz的方波,方波由微分电路整形为微分型指数脉冲;最后,调制波与指数脉冲经波形合成电路、恒流源电路得到所需的刺激波形。
2.3 人机交互接口
系统采用了SHARP公司生产的一款9.4英寸TFT-LCD 640×480彩色液晶显示屏。S3C2410带有LCD控制器,支持STN型和TFT型LCD。支持彩色TFT时,可提供4/8/12/16位颜色模式。LCD控制器的功能是产生显示驱动信号,驱动LCD显示器。用户只需要通过读写一系列的寄存器,便可完成配置和显示控制。
本系统需要键盘来输入数据或者控制命令,实现设置参数和控制系统的目的。除了数字0~9外,再加上几个功能键即可满足系统需求,所以不需要使用专用的PC键盘,而是开发具有针对性的小键盘。本系统直接通过S3C2410的8个GPIO口来扩展4×4矩阵键盘。
2.4 扩展接口
S3C2410接口丰富,用户可根据需要方便地扩展各种接口。本系统通过S3C2410的USB控制器扩展USB HOST接口,为系统提供存储数据功能;利用S3C2410的URAT控制器扩展RS232,利用总线扩展网卡芯片DM9000给系统提供网络接口,方便系统调试和仪器数据的网络共享。
3 系统软件设计
康复仪通过软件界面实现视觉信号的反馈作用,为肌电生物反馈治疗提供技术支撑。该康复仪的软件系统主要由嵌入式Linux操作系统、驱动程序和应用程序三部分组成。
3.1 嵌入式操作系统
为了满足系统对实时性和安全性的要求,系统采用了嵌入式Linux操作系统。嵌入式Linux继承了Linux的稳定性优点,且其内核相当精简,因此在嵌入式领域得到广泛应用[5]。
本系统采用了Linux2.6.x内核,针对S3C2410的硬件情况,裁剪并编译了适合ARM 处理器的Linux内核,再借助于华恒公司的ppc bootloader将其传输至开发板的FLASH并启动内核,通过busybox制作文件系统。这里根据需要制作一款简单的只读文件系统,即cramfs文件系统。通过配置宿主机NFS(network filesystem)文件服务器的方式,可将该文件系统传输至FLASH,从而完成对开发板上操作系统的配置。
3.2 设备驱动程序
在完成操作系统裁剪后,需要对Linux下的各种设备进行驱动程序编程。由于模块方式要比静态编译链接方式更加方便灵活,因此本系统在Linux内核基础上二次开发的设备驱动程序是按照模块方式实现的。模块化驱动程序的设计和实现流程主要有编写模块化编程子程序、编写自动配置和初始化子程序、编写服务于I/O请求的子程序和编写中断服务子程序四个步骤。按照这四个基本步骤编写肌电增益控制驱动、A/D和D/A转换驱动、PWM调制波产生驱动、键盘驱动、LCD驱动以及网卡及串口驱动程序等。