嵌入式驱动程序设计课程研究

时间:2022-10-07 11:21:54

嵌入式驱动程序设计课程研究

[摘要]随着嵌入式技术及物联网技术时代飞速发展,嵌入式系列课程的教学也在各大院校中开展起来,嵌入式驱动程序设计属于软硬件结合设计的一门学科。介绍了嵌入式驱动程序设计概念,对驱动程序设计课程进行了设置。设置了串行口通讯、键盘驱动原理、I/O接口电路、A/D接口电路、LCD的驱动控制、触摸屏程序设计的内容,对培养适应社会需求的嵌入式技术人才有着重要意义。

[关键词]嵌入式驱动程序 嵌入式技术 课程研究

[中图分类号]G434 [文献标识码]A

一、引言

嵌入式系统的硬件组成除了包括中心控制部件嵌入式系统处理器外,还有输入输出装置以及一些扩充装置开关、按键、传感器、模数转换器、LCD显示器、触摸屏及LED(发光二极管)等嵌入式硬件设备。嵌入式硬件环境是整个嵌入式操作系统和应用程序运行的硬件平台,不同的应用通常有不同的硬件环境[1]。硬件平台的多样性是嵌入式系统的一个主要特点。如何让这些设备工作起来,是嵌入式驱动程序的任务。由于I/O设备种类繁多,工作模式各不相同,驱动程序是整个嵌入式软件设计中最复杂、代码量最大、最繁琐的部分。

二、嵌入式驱动程序概述

外设驱动程序可以对系统提供访问设备的接口,把操作系统(软件)和设备(硬件)分离开来。当设备改变的时候,只需要更换相应的驱动程序,不必修改操作系统的内核以及运行在操作系统中的软件。系统的驱动程序要受控于相应的操作系统的多任务之间的同步机制。在操作系统中使用信号量、邮箱等机制进行协调。操作系统只和特定的驱动抽象层通讯,无论在抽象层下面对应的是什么类型的设备,对操作系统和用户的应用程序来说都是统一的接口[2]。驱动抽象层位置图如图1所示。

图1:驱动抽象层位置图

该部分包括基于ARM架构的串行口通讯、键盘驱动原理、I/O接口电路、A/D接口电路、LCD的驱动控制、触摸屏程序设计的内容。

三、嵌入式驱动程序设计研究

1.串行口通讯

通过监视串行口,把我们在程序中插入的想要反馈程序运行情况的串行口语句输出到显示器中的超级终端中。这样便可以实时监控程序的运行情况,方便调试程序。串行口组件设计是将接收到的字符再发送给串口(计算机与开发板是通过超级终端通讯的),即按PC键盘通过超级终端发送数据,开发板将接收到的数据再返送给PC,在超级终端上显示[3]。

要想设计好串行口驱动程序,需要做如下几步:

(1)熟悉串口通讯原理;

(2)查阅ARM串口寄存器文档,包括S3C2410控制、状态和数据寄存器;

(3)查阅电平转换芯片资料(max3232);

(4)设计硬件电路图;

(5)设计串口驱动(包括串口寄存器初始化,发送接收函数等)。

异步通信必须遵循的3项规定为:

(1)字符的格式

(2)波特率

(3)校验位

初始化时需要设置波特率、停止位、奇偶校验、数据位等参数。异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各不同位可以分时使用同一传输通道,因此串行I/O可以减少信号连线。如图2给出了异步串行通信中一个字符的传送格式。

图2:串行通信字符格式

开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。最后是表示停止位的“1”信号,这个停止位可以约定持续1位、1.5位或2位的时间宽度。至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送才又发出起始位。

2.键盘驱动原理

键盘的设计是将一个瞬时接触开关放置在每一行与每一列的交叉点。矩阵所需的键的数目显然根据应用程序而不同。每一行由一个输出端口的一位驱动,而每一列由一个电阻器上拉且供给输入端口一位。键盘扫描过程就是让微处理器按有规律的时间间隔查看键盘矩阵,以确定是否有键被按下。一旦处理器判定有一个键按下,键盘扫描软件将过滤掉抖动并且判定哪个键被按下。每个键被分配一个称为扫描码的唯一标识符。应用程序利用该扫描码,根据按下的键来判定应该采取什么行动。如图3所示为逐行扫描法工作原理:逐根行线输出0电平,而其他行线保持高电平;同时检测列,列全1就没有键按下,0有键按下。行线和列线状态组合在一起就确定了是哪个键按下,如110 1110是0键按下,1010111是7键按下。

图3:逐行扫描法原理图

3.I/O接口电路

I/O系统的目标是对RTOS和应用程序员隐藏设备特定的信息,并且对系统的I/O设备提供一个统一的访问方法。下面是从不同角度看I/O系统:

(1)从系统软件开发者角度看,I/O操作意味着与设备的通信、对设备编程初始化和请示执行设备与系统之间的实际数据传输以及操作完成后通知请求者。系统软件工程师必须理解设备的物理特性,如寄存器的定义和设备的访问方法。

(2)从RTOS的角度看,I/O操作意味着对I/O请求定位正确的设备,对设备定位正确的设备驱动程序,并解决对设备驱动程序的请求。有时要求RTOS保证对设备的同步访问。RTOS必须进行抽象,对应用程序员隐含设备的特性。

(3)从应用程序员角度看,目标是找到一个简单、统一和精练的方法与系统中出现的所有类型的设备。

I/O接口的编址方式分为两种:

(1)I/O接口独立编址――端口映射方式

这种编址方式是将存储器地址空间和I/O接口地址空间分开设置,互不影响。设有专门的输入指令(IN)和输出指令(OUT)来完成I/O操作。

(2)I/O接口与存储器统一编址方式――内存映射这种编址方式不区分存储器地址空间和I/O接口地址空间,把所有的I/O接口的端口都当作是存储器的一个单元对待,每个接口芯片都安排一个或几个与存储器统一编号的地址号。也不设专门的输入/输出指令,所有传送和访问存储器的指令都可用来对I/O接口操作。

4.A/D接口电路

A/D转换器能将模拟量转换为数字量的电路;D/A转换器能将数字量转换为模拟量的电路。A/D转换器和D/A转换器是沟通模拟电路和数字电路的桥梁,也可称之为两者之间的接口。A/D 转换器是模拟信号源和CPU 之间联系的接口,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机和数字系统进行处理、存储、控制和显示。一般A/D转换过程要经过采样、保持、量化和编码四个步骤。前两步在取样―保持电路中完成,后两步则在A/D转换器中完成。D/A转换器的基本原理是将输入的每一位二进制代码按其权的大小转换成相应的模拟量,然后将代表各位的模拟量相加,所得的总模拟量就与数字量成正比,这样便实现了从数字量到模拟量的转换。

A/D转换器较常用的是逐次逼近型,如图4所示。转换前,先将SAR寄存器各位清零。转换开始时,控制逻辑电路先设定SAR寄存器的最高位为“1”,其余位为“0”,此试探值经D/A转换成电压Vc,然后将Vc与模拟输入电压Vx比较。如果Vx≥Vc,说明SAR最高位的“1”应予保留;如果Vx

图4:逐次逼近式A/D转换原理图

5.LCD的驱动控制

LCD显示器的基本原理就是通过给不同的液晶单元供电,控制其光线的通过与否,从而达到显示的目的。因此,LCD的驱动控制归于对每个液晶单元的通断电的控制,每个液晶单元都对应着一个电极,对其通电,便可使光线通过。

液晶模块有两种工作模式:图形方式和文本方式。在图形方式下,模块上的缓冲区映射的是液晶屏上显示的图形点阵;在文本方式下,模块上的缓冲区对应的是液晶屏上显示的文本字符,包括英文字符和英文标点符号。因为汉字字库没有包含在液晶模块之中,所以液晶屏在文本方式下只能显示英文,不能显示汉字。液晶屏的操作主要包括:初始化、设置液晶屏的工作模式(文本或者图形)、更新显示、开启(或者关闭)背光等。

6.触摸屏程序设计

触摸屏是专门处理是否有笔或手指等物体按下触摸屏,平常相互绝缘的两层导电层就在触摸点位置有了一个接触,并在按下时分别给两组电极通电。因其中一面导电层(顶层)接通X轴方向的5V均匀电压场,使得检测层(底层)的电压由零变为非零,控制器侦测到这个接通后,其对应位置的模拟电压信号经过A/D转换送回处理器。经过坐标转换后,得到触摸点的x/y坐标。

触摸屏接口专用芯片ADS7843是Burr-Brown公司生产的,能够完成电极电压的切换及采集接触点处的电压值,并进行A/D转换。在完成一次x/y坐标采样的过程中需要一次模式转换即在点击触摸屏之前是等待中断模式,当有触摸动作产生触摸屏中断以后,在x/y的坐标采集驱动中设置成自动的x/y位置转换模式,在完成采集以后再转换回等待中断模式,准备下一次的触摸采样。

四、总结

嵌入式驱动程序设计渗透在掌上电脑、笔记本电脑和手机等各个领域,这些设备要想正确工作,必须借助相应硬件及其驱动程序。随着嵌入式系统在工业控制领域、智能机器人、移动通讯以及智能家电、网络家电的应用,驱动程序设计方面的开发人员需求量也会越来越多。

基金项目:北京信息科技大学《嵌入式系统安全》课程建设项目

[参考文献]

[1]王小妮、魏桂英、杨根兴. 嵌入式组件设计[M].北京航空航天大学出版社,2012

[2]王小妮.基于嵌入式系列课程的教学改革与探索[J].教育理论与教学研究,2013.5

[3]王田苗.嵌入式系统设计与实例开发(第3版)[M].北京:清华大学出版社,2008

(作者单位:北京信息科技大学 理学院 北京)

上一篇:多元文化背景下大学生思想政治教育的创新思考 下一篇:体育教学中教师情感对教学效果的影响