嵌入式数字存储示波器
扫描二维码
随时随地手机看文章
介绍基于嵌入式uCLinux操作系统,使用SamsungS3C 44BOXCPU,设计并实现的一种数字存储示波器。在uCLinux平台上实现多任务程序运行,用 中断方式实现触摸屏控制。系统具有采集、存储、显示和分析的功能。
关键词:嵌入式系统;uCLinux;数字存储示波器;FIFO;多任 务 A Embedded Digital Storage Oscilloscope LV Xiangyang (College of Information Science & Engineering, Central South Universi ty,
Changsha 410083, China) Keywords: embedded system; uCLinux; digital storage oscilloscop e; FIFO; multitasking 1数字存储示波器的总体系统设计 1.1S3C44BOX微处理器简介
Samsung S3C44BOX是三星公司专为手持设备和一般应用提供的高性价比和高性能的微处理器 ,它使用ARM7TDMI核,工作在66MHz。为了降低系统总成本和减少外围器件,这款芯片中还 集成了下列部件:8KB Cache、外部存储器控制器、LCD控制器、4个DMA通道、2通道UART、1 个多主IIC总线控制器、1个IIS(Inter?IC Sound)总线控制器,5通道PWM定时器及1个内部 定时器、71个通用I/O口、8个外部中断源、实时时钟、8通道12位ADC等。
1.2A/D转换采集系统
由于数字存储示波器工作在40MHz,而S3C44BOX处理器内带ADC的工作频率最高只能达到50kH z,所以必须单独设计一个A/D转换采集系统,其组成如图2所示。
1.3系统接口设计
根据数字存储示波器的随机采样原理得知:示波器每次触发以后,A/D转换器完成一组采样 序列,并将其存入高速RAM中;稍后,由微处理器进行处理,显示在液晶屏幕上,这就是一 次数据获得过程。系统接口具体方案如图3所示。使用微处理器S3C44BOX的I/O端口来读取数 据并发出控制信号。其中“FIFO RAM”为先进先出存储器,采用IDT公司的IDT72V02型号, 最高转换速率为15ns,1024×9bit存储空间。
系统利用S3C44BOX微处理器I/O端口中的F端口实现数据的输入输出,利用D端口和G端口来进 行控制。采集的信号经过A/D变换后首先进入FIFO存储器,当从FIFO中每读出一个数据后需 要再向其发送一个读数脉冲信号,这样才能保证读出下一个单元内存储的数据,读数脉冲由 G端口的第四位PG4给出。数据从FIFO存储器中被读出后经过数字锁存器进入端口F的数据寄 存器PFDATA中,数字锁存信号由D端口的第四位PD4给出。当处理器读周期到来时,数据由端 口被读入内存。每当数据采满1K时,FIFO存储器会产生一个中断信号,该中断信号由D端口 的PD6输入给微处理器。 基于嵌入式数字存储示波器系统软件主要分为数据采集和存储模块、波形显示和刷新模块以 及触摸屏控制模块3个部分。系统软件由uCLinux下的C语言编程实现。
2.1数据采集和存储模块
数据采集存储模块的流程如图4所示。采集系统开始采集数据。采集到的数据经过FIFO存储器,由F口读入内存并存入指 定 数据缓冲区之中。在存储过程中,采用了双缓冲区机制,数据按1K大小分块,相邻的两块数 据交替存放在内存的不同的区域中,在每读入1K个数据之后,内存中都存有连续的2K个采样 数据,这样有助于以后对数据的处理和显示。
2.2波形显示和刷新模块
系统使用一块大小为240×320像素的256彩色液晶显示屏,其平面尺寸为93mm×75mm(长 ×宽)。微处理器S3C44BOX为LCD的控制提供了良好的支持,其实现主要通过微处理器中的LC D控制器来完成。波形的显示主要通过将数字量转换成液晶显示屏上点的坐标来实现,存放 在内存中的数据经过坐标变换就可以在LCD上进行显示。因为LCD的坐标系与显示波形 时所用的坐标系y轴方向相反,且需要将波形显示在屏幕的特定区域内,所以在显示之前要 对数据进行归一化处理。从端口读入数据的范围为0~0xff,0点对应于LCD上y轴坐标的190 ,0xff对应于LCD上y轴坐标的50,则0x7f对应于LCD上坐标为120的点,即屏幕显示的零点, 相应的转化公式为:Y=120-(data-0x7f)×0x7f,其中:data为从端口读 入的数据;Y是data在LCD上显示的y坐标。LCD一屏可以显示300个数据点 ,点与点之间用矢量法直线相连。
2.3触摸屏控制模块
触摸屏是附着在LCD表面的一层透明薄膜,它将压力转换成模拟电信号,再经过模 数转换送给系统。本系统触摸屏使用FM7843芯片控制。FM7843是4线电阻触摸屏转换接口芯 片。它是一款具有同步串行接口的12位取样模数转换器。在125kHz吞吐速率和2.7V电 压下的功耗为750μW,而在关闭模式下的功耗仅为0.5μW。图5为触摸屏工作流程示 意图。触摸屏通过中断方式完成其功能,从执行流程上来说,首先在Touch Panel?init() 中完成两件事:注册驱动程序和注册中断。对于触摸屏设备,主设备号为58,设备名为“FM 7843”,驱动程序子函数集为Touch Panel?fops。Touch Panel?fops中指定了read,sele ct,open,telease四个操作子函数的地址,依次为:Read Touch Panel,Touch Panel Sel ect,Open Touch Panel和Close Touch?Panel。当用户进程调用open()打开/dev/FM7843时 ,内核调用Open Touch Panel();用户进程调用read()读该设备时,内核调用Read Touch P anel()。request?irq()注册中断处理,中断为TOUCHPANEL?IRQ?NUM,中断处理程序为To uch Panel Interrupt(),说明为“Touch?Panel”。当触摸屏被触摸有数据来到时,中断 被触发,调用中断处理程序,准备处理数据。
该系统中触摸屏主要用于获取用户的控制信息, 在LCD的上方显示有若干个触摸屏按钮,例 如其中有幅值增加、幅值减小、频率增加和频率减小等。幅值和频率的选定值存放在指定内 存单元中,当检测到触摸点的坐标在相应区域中后,系统就会根据程序预先设定来设定采样 频率和幅值,这些在前、后台任务之间进行同步和通信。任务之间的通信是通过共享指定的 物理内存单元来实现的,不同任务之间对共享内存单元的访问是互斥的。uCLinux的设计针 对没有MMU(内存管理单元模块)的处理器,不能使用虚拟内存管理技术。uCLinux系统对于内 存的访问是直接的,所有程序中访问的地址都是实际的物理地址,操作系统对内存空间没有 保护。当触摸屏检测到有改变幅值或频率的信号发生时,就去修改指定单元中存储的数据, 这样的内存单元对于两个任务来说属于临界资源,在触摸屏修改内存期间需要禁止其他程序 对该内存进行任何操作。同样,采集程序每次在发送幅值和频率信号之前要对该内存单元进 行读操作,若在此时有触摸屏信号对内存提出写操作要求,程序就应该进行等待,直到采集 部分的读操作执行完毕,释放内存的访问权。? 基于嵌入式的数字存储示波器可以稳定、清晰地显示频率为0~40MHz的信号波形,便于捕获 和显示那些可能只发生一次的事件。利用存储示波器本身和外部计算机可以方便地进行分析 、存档和其他处理,为工业现场应用和科学实验提供了很大的方便。?