基于I2C的射频激励器人机交互系统设计

2014-09-12 11:04赵梦谍曾志斌
关键词:液晶屏控制板字节

赵梦谍,曾志斌

(中国传媒大学理工部,北京 100024)

1 引言

随着ARM技术的广泛应用,在嵌入式系统中基于ARM微核的嵌入式处理器已经成为市场主流。而嵌入式Linux操作系统则以其开源免费,内核可裁剪,功能多等优点而得到广泛应用。目前,面向ARM架构的嵌入式Linux系统已成为了产品控制系统的主流选择[1]。出于性能、体积、效果多方面考虑,本文采用基于ARM为核心,并在处理器上构建嵌入式Linux操作系统,然后在此基础上进行系统控制和人机交互。

2 系统结构和工作原理

本设计的基于I2C的射频激励器人机交互系统框架如图1所示。由ARM主控板,基带编码模块,射频输出模块,射频处理4个部分构成[2]。

控制人员通过点击控制板外接的独立按键板来操控上层应用程序,实现设备参数的修改。这套设备内部模块采用了I2C作为内部通信协议,完成设备内模块参数的相互传递;通过中断机制和FrameBuffer机制实现了按键的控制和LCD液晶屏的显示,完成人机交互。

图1 控制板整体结构

3 控制板实现分析

3.1 I2C通信原理简介

I2C(Inter-IntegratedCircuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线是有数据线SDA和时钟SCL构成的串行总线,可发送和接收数据[3]。在控制板和其它三块受控板之间、IC与IC之间进行双向传递,最高传送速率可达100kbps。各种被控电路均并联在这条总线上,每个电路都有唯一的地址。每个电路既是主控器(或被空器),又是发送器(或接收器)。

I2C总线在传送数据过程中共有三类信号,它们分别是:开始信号、结束信号和应答信号。

开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送信号。

结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送信号。

应答信号:接受数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平,表示已经收到数据。控制板向受控板发出一个信号后,等待受控板发出一个应答信号,控制板收到应答信号后,根据实际情况做出是否继续传递信号的判断。若未收到应答信号,则判断为受控板出现故障。

3.2 FrameBuffer原理简介

基于FrameBuffer的LCD液晶显示。FrameBuffer译作帧缓冲,是一个标准的字符型设备,主设备号是29。FrameBuffer机制模仿显卡功能,将显卡硬件结构抽象成为一系列的数据结构,可以通过FrameBuffer的读写直接对显卡进行操作。用户可以将FrameBuffer看成是显示内存的一个映射,将其映射到进程地址空间之后,就可以直接进行读写操作,并立即显示在LCD液晶屏上。

FrameBuffer的显示缓冲区位于Linux的内核动态地址空间中。而在Linux中,每个应用程序都有自己的虚拟地址空间,应用程序是不能直接访问物理缓冲区地址的[4]。为此,帧缓冲设备,通过映射操作,将FrameBuffer的物理地址映射到用户空间的一段虚拟地址中,然后用户就可以通过读写这段虚拟地址访问屏幕缓冲区在屏幕上显示。FrameBuffer与应用程序的交互如图2所示。

图2 FrameBuffer与应用程序的交互

4 系统的设计与实现

4.1 控制板硬件设计实现

控制系统是整套设备的核心,在设计控制板的过程中,必须考虑到所有需要接口和芯片,如图3所示.

图3 控制板的结构设计

网卡芯片是为用户在后期提供远程控制使用,以便用户远程观测激励器的运行情况。I2C接口是控制板与其他模块通信的手段,以实现控制板对其他模块的控制。R232接口是在调试过程中的重要接口。OTG接口可以让用户通过PC的USB接口快速方便的为控制板系统进行升级使用[5]。SD读卡器则为了给控制板提供多途径的启动方式和快速烧录整套系统程序提供方便。LCD接口和按键接口是为了用于外接LCD屏幕和独立按键板实现的人机交互。

4.2 基于I2C协议的内部通信实现

控制板与其余3块模块的交互实现如下图4所示。

图4 IIC实现机制

控制板首先发送的8位数据,其中前7位表示模块的地址,第8位表示数据传送方向。若是0,这是控制板给通信发送数据;若是1,则是通信模块给控制板传递数据。激励器中每个模块都有唯一的地址。三个模块同时接收到这8位数据进行比对,若不是本模块地址即忽略;若是本模块地址,则回应一个ACK信号。在接收数据结束后,控制板向通信模块发送结束信号P,完成本次数据通信,即对激励器参数的修改。

4.3 LCD液晶屏的驱动实现

LCD液晶屏是设备与人交互的重要工具。本文采用基于FrameBuffer的LCD显示方式,具体实现如图5所示。大多传统的LCD液晶显示屏都采用设定刷新时间作为屏幕更新的途径,就是即设定一个刷新周期,计数器一旦计数到达刷新周期,即刻将实际内存中的数据全部写入LCD映射的虚拟内存,不管用户是否对内存进行了操作。这样做的缺点是,必须设定较小的刷新周期,才能使获得用户获得的实时性感受。并且,由于用户对整个LCD液晶屏的写操作往往只是针对一部分点阵的修改而并全部内容的更替,又必须在非常短的时间内进行反复操作,这造成了导致了对CPU资源的浪费不必要的开销[6]。本文采用了实时逐字对比的方式进行屏幕的刷新,一旦用户有所操作,便会对实际内存造成修改,而后,对产生改变的字节进行单独的修改和更替,大大提高了用户体验。

图5 LCD驱动实现逻辑图

首先,LCD是有256*64个像素点构成,每个像素点由黑色和白色两色组成,所以分配一块大小为16384字节的内存作为显存。其次,LCD初始化操作,注册一个主设备号为29,次设备号为4的设备给系统,让系统可以检测到一个容量为16384字节的存储空间。再次,配置寄存器,即将控制LCD显示的I/O通过readl和writel操作配置成对应的输出,然后将实际内存的数据读给LCD所映射的虚拟内存。最后逐个字节对比LCD映射的虚拟内存和实际的数据内存,若是该字节相同,则不操作;若该字节不相同,则用实际内存中的数据替代LCD映射的虚拟内存数据,从而LCD屏幕可实时显示,同时远远降低了对CPU的占用率。

5 结束语

通过对激励器的整体调试,发现激励器可以按照预期的效果进行工作。控制板与其余3块板可以做到完整通信。控制板基本完成所需要的控制操作,按键板可以通过用户对按键的点击实现数据的修改功能,同时LCD液晶屏可以完全显示激励器的实时工作状态,从而实现人机交互。

[1]张绮文,谢建雄,谢劲心.ARM嵌入式模块与综合系统设计实例精讲[M].北京:电子工业出版社,2007.

[2]顾海军,赵晓晖,王洪革.用DSP主机端口实现虚拟I2C总线主控器[J].吉林大学学报,2004,22(1):13-17.

[3]王佳斌,戴在平.模拟I2C总线从器件的一种方法[J].华侨大学学报(自然科学版),2004,25(2):206-209.

[4]刘云鑫,张耀雪.一个基于ARM & Linux的嵌入式实时操作系统[J].计算机工程与应用,2013,(23):167-173.

[5]刘云鑫,张耀雪.一个基于ARM & Linux的嵌入式实时操作系统[J].计算机工程与应用,2013,(23):167-173.

[6]冯明亮.基于ARM & Linux的嵌入式网络控制系统的研究与设计[J].西南科技大学学报,2012,(04):110-123.

猜你喜欢
液晶屏控制板字节
No.8 字节跳动将推出独立出口电商APP
No.10 “字节跳动手机”要来了?
轨道交通AFC导向标识控制板设计
轻量级分组密码Midori64的积分攻击
基于FPGA的车内环境监测系统设计
一种消除液晶屏高温MURA的工艺研究
一种集成脚本控制单元的设计与实现
一种全隔离的无刷直流电机的反馈制动控制板的研究
基于单片机的点餐系统硬件设计
基于机器视觉的液晶屏字符缺陷检测系统设计