基于S3C2410X处理器的嵌入式应用系统设计ppt课件_第1页
基于S3C2410X处理器的嵌入式应用系统设计ppt课件_第2页
基于S3C2410X处理器的嵌入式应用系统设计ppt课件_第3页
基于S3C2410X处理器的嵌入式应用系统设计ppt课件_第4页
基于S3C2410X处理器的嵌入式应用系统设计ppt课件_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章基于S3C2410X处理器的嵌入式应用系统设计,3.1基本电路设计3.2存储器系统设计3.3S3C2410X的串行通信设计3.4S3C2410X的键盘及LED驱动设计3.5S3C2410X的D/A功能应用开发,3.1基本电路设计3.1.1电源电路设计S3C2410X需要3.3V和1.8V两种供电电压,是由5V电源电压经LM1085-3.3V和AS1117-1.8V分别得到3.3V和1.8V的工作电压。开发板上的芯片多数使用了3.3V电压,而1.8V是供给S3C2410内核使用的。5V电压供给音频功放芯片、LCD、电机、硬盘、CAN总线等电路使用。具体如图3.1所示。,RTC电路的电压是1.8V,实际是将电池电压或3.3V电压经过两个BAV99(等价于4个二极管串联)降压后得到的。如图3.2所示。,图3.2RTC电路的电压原理图,3.1.2复位电路设计硬件复位电路实现对电源电压的监控和手动复位操作。IMP811T的复位电平可以使CPUJTAG(nTRST)和板级系统(nRESET)全部复位;RESET反相后得到nRESET信号。,图3.3系统的复位电路,3.1.3晶振电路设计S3C2410X微处理器的主时钟可以由外部时钟源提供,也可以由外部振荡器提供,通过引脚OM3:2来进行选择。OM3:2=00时,MPLL和UPLL的时钟均选择外部振荡器;OM3:2=01时,MPLL的时钟选择外部振荡器;UPLL选择外部时钟源;OM3:2=10时,MPLL的时钟选择外部时钟源;UPLL选择外部振荡器;OM3:2=11时,MPLL和UPLL的时钟均选择外部时钟源。,该系统中选择OM3:2均接地的方式,即采用外部振荡器提供系统时钟。外部振荡器由12MHz晶振和2个15pF的微调电容组成。如图3.4所示,,图3.4晶振电路原理图,图3.5所示的是S3C2410X应用系统所需的RTC时钟电路图,电路由12MHz晶振和2个15pF的电容组成,振荡电路的输出接到S3C2410X微处理器的XTlpll脚,输入由XTOpll提供。12MHz的晶振频率经S3C2410X内部PLL电路的倍频后可达203MHz。,图3.5系统时钟的选择,3.2存储器系统设计在嵌入式应用系统中,通常使用3种存储器接口电路,NorFlash接口、NandFlash接口和SDRAM接口电路。引导程序既可存储在NorFlash中,也可存储在NandFlash中。而SDRAM中存储的是执行中的程序和产生的数据。存储在NorFlash中的程序可直接执行,与在SDRAM执行相比速度较慢。存储在NandFlash中的程序,需要拷贝到RAM中去执行。,3.2.18位存储器接口设计,由于ARM微处理器的体系结构支持8位/16位/32位的存储器系统,相应地可以构建8位的存储器系统、16位的存储器系统或32位的存储器系统,在采用8位存储器构成8位/16位/32位的存储器系统时,除数据总线的连接不同之处,其它的信号线的连接方法基本相同。,1构建8位的存储器系统采用8位存储器构成8位的存储器系统如图3.6所示。此时,在初始化程序中还必须通过BWSCON寄存器中的DWn设置为00,选择8位的总线方式。存储器的nOE端接S3C2410X的nOE引脚;存储器的nWE端接S3C2410X的nWE引脚;存储器的nCE端接S3C2410X的nGCSn引脚;存储器的地址总线A15A0与S3C2410X的地址总线ADDR15ADDR0相连;存储器的8位数据总线DQ7DQ0与S3C2410X的数据总线DATA7DATA0相连。,2构建16位的存储器系统采用两片8位存储器芯片以并联方式可构成16位的存储器系统,如图3.7所示,此时,在初始化程序中将BWSCON寄存器中的DWn设置为01,选择16位的总线方式。存储器的nOE端接S3C2410X的nOE引脚;低8位的存储器的nWE端接S3C2410X的nWBE0引脚,高8位的存储器的nWE端接S3C2410X的nWBE1引脚;存储器的nCE端接S3C2410X的nGCSn引脚;存储器的地址总线A15A0与S3C2410X的地址总线ADDR16ADDR1相连;低8位的存储器的8位数据总线DQ7DQ0与S3C2410X的数据总线DATA7DATA0相连,高8位的存储器的8位数据总线DQ7DQ0与S3C2410X的数据总线DATA15DATA8相连。,3构建32位的存储器系统采用四片8位存储器芯片以并联方式可构成32位的存储器系统,如图3.8所示,此时,在初始化程序中将BWSCON寄存器中的DWn设置为10,选择32位的总线方式。存储器的nOE端接S3C2410X的nOE引脚;低8位的存储器的nWE端接S3C2410X的nWBE0引脚,次低8位的存储器的nWE端接S3C2410X的nWBE1引脚,次高8位的存储器的nWE端接S3C2410X的nWBE2引脚,高8位的存储器的nWE端接S3C2410X的nWBE3引脚;存储器的nCE端接S3C2410X的nGCSn引脚;存储器的地址总线A15A0与S3C2410X的地址总线ADDR17ADDR2相连。,图3.832位存储器系统,3.2.2SDRAM接口电路设计在ARM嵌入式应用系统中,SDRAM主要用于程序的运行空间、数据及堆栈区。当系统启动时,CPU首先从复位地址0 x0处读取启动程序代码,完成系统的初始化后,为提高系统的运行的速度,程序代码通常装入到SDRAM中运行。在S3C2410X片内具有独立的SDRAM刷新控制逻辑电路,可方便地与SDRAM接口。目前常用的SDRAM芯片有8位和16位的数据宽度、工作电压一般为3.3V。主要生产厂商有HYUNDAI、Winbond等,下面以K4S561632C-TC75为例说明其与S3C2410X的接口方法,构成16Mx32位的存储系统。,K4S561632C-TC75存储器是4组4M16位的动态存储器,工作电压为3.3V,其封装形式为54脚TSOP,兼容LVTTL接口,数据宽度为16位,支持自动刷新(Auto-Refresh)和自刷新(Self-Refresh)。其引脚如图3.9所示,引脚功能如表3.1所示。,图3.9K4S561632C-TC75引脚图,表3.1K4S561632C-TC75引脚功能表,采用两片K4S561632C-TC75存储器芯片可组成16M32位SDRAN存储器系统,其片选信号CS*接S3C2410X的nGCS6引脚,具体连线如图3.10所示。,图3.10K4S561632C-TC75组成的32位SDRAM存储器系统,3.2.3Flash接口电路设计Flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。目前所做用的Flash芯片主要有NorFlash和NandFlash两种。但这两种Flash芯片在某些方面存在一定的差异,如:Nand器件执行擦除操作简单,而Nor则要求在进行写入前先将目标块内所有的位都写为0;Nor的读速度比Nand稍快一些;Nand的写入速度比Nor快很多,Nand需4ms擦除,而Nor需要5s快。NandFlash的单元尺寸几乎是Nor器件的一半,由于生产过程更为简单,其价格低。在Nand闪存中每个块的最大擦写次数是一百万次,而Nor的擦写次数是十万次。,Nor具有XIP(eXecuteInPlace,芯片内执行)特性,应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。Nor的传输效率很高,在14MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。Nand结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。在接口方面,NorFlash和NandFlash也存在着差别。NorFlash带有SRAM接口,Nand器件使用复杂的I/O口来串行存取数据。,1NorFlash与S3C2410X微处理器接口设计SST39LF/VF160是1MX16位的CMOS芯片,SST39LF160工作电压为3.03.6V,SST39VF160工作电压为2.73.6V,采用48脚TSOP封装或TFBGA封装,16位数据宽度,以字模式(16位数据宽度)的方式工作。SST39VF160的在系统编程和编程操作仅需3.3V电压,通过命令可以对芯片进行编程(烧写)、擦除(整片擦除和按扇区擦除)以及其他操作。SST39LF/VF160的引脚图如图3.11所示,引脚功能如表3.2所示。,图3.11SST39LF/VF160的引脚图,表3.2SST39LF160/SST39VF160引脚功能表,表3.2SST39LF160/SST39VF160引脚功能表,嵌入式应用系统中,常见的NorFlash存储器芯片单片容量有1MB、2MB、4MB、8MB、16MB等。下面以SST39VF160为例,简述其与S3C2410X微处理器的连线,构成1MX16位的存储器系统。SST39VF160的OE*与S3C2410X的nOE相连;WE*与S3C2410X的nWE相连;地址总线A19A0与S3C2410X的地址总线ADDR20ADDR1相连(注:因为是16位的存储器系统,半字对齐,所以S3C2410X的A0不用连线);16位的数据总线DQ15DQ0与S3C2410X的低16位数据总线XDATA15XDATA0相连,如图3.12所示。,图3.12SST39LF/VF160的存储系统电路图,2NandFlash与S3C2410X微处理器接口电路设计NandFlash相对于NorFlash接口复杂得多,但对于S3C2410X微处器提供了NandFlash的接口,使其在嵌入式应用系统中的接口大大简便。例:K9F1208UDM-YCB0/K9F1208UDM-YIB0存储器与S3C2410X微处理器接口。K9F1208UDM-YCB0/K9F1208UDM-YIB0存储器是64M8位的NANDFlash存储器,数据总线宽度为8位,工作电压为2.7V-3.6V,采作48脚TSOP封装,系统的编程和擦除电压仅需3.3V,其引脚如图3.13所示,引脚功能如表3.3所,表3.3U-K9F1208UDM引脚功能表,图3.13U-K9F1208UDM引脚图,K9F1208UDM与S3C2410X微处理器接口如图3.14所示。K9F1208UDM的ALE和CLE引脚分别与S3C2410X的ALE和CLE引脚相连;K9F1208UDM的WE*、RE*、CE*和R/B引脚分别与S3C2410X的Nfwe、Nfre、CLE和R/nB引脚相连;K9F1208UDM的数据输入输出线IO7IO0分别与S3C2410X的DATA7DATA0引脚相连。其操作模式如表3.4所示。,图3.14NandFlash存储系统电路,3.3S3C2410X的串行通信设计3.3.1串行口原理及接口技术1异步串行IO异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各不同位可以分时使用同一传输通道,因此串行IO可以减少信号连线,最少用一对线即可进行。,图3.15串行通信字符格式,S3C2410X串行接口,S3C2410X提供了3个通道的UART,要使其与PC机通信,必须将其信号电平转换为RS232C的电平。RS232C规定了双极性的信号逻辑电平:-3V到-25V之间的电平表示逻辑“1”。+3V到+25V之间的电平表示逻辑“0”。因此这是一套负逻辑定义,以上标准称为EIA电平。,图3.16S3C2410X与PC机的异步通信接口图,3.3.2S3C2410X的UART模块S3C2410X与UART有关的寄存器主要有以下几个:(1)UART线控制寄存器包括ULCON0,ULCON1和ULCON2,主要用来选择每帧数据位数、停止位数,奇偶校验模式及是否使用红外模式,如表3.5和表3.6所示。,表3.5UART寄存器设置,表3.6UART寄存器位描述,(2)UART控制寄存器包括UCON0,UCON1andUCON2,主要用来选择时钟,接收和发送中断类型(即电平还是脉冲触发类型),接收超时使能,接收错误状态中断使能,回环模式,发送接收模式等。如表3.7和表3.8所示。,图3.7UART控制寄存器设置,图3.8UART控制寄存器器位设置,(3)UART错误状态寄存器包括UERSTAT0,UERSTAT1andUERSTAT2,此状态寄存器的相关位表明是否有帧错误或溢出错误发生。如表3.9和表3.10所示。,表3.9UART错误状态寄存器,表3.10UART错误状态寄存器位描述,(4)在UART模块中有三个接收/发送状态寄存器,包括:UTRSTAT0UTRSTAT1UTRSTAT2如表3.11和表3.12所示。,表3.11UART接收/发送寄存器设置,表3.12UART接收/发送寄存器位描述,(2)在UART模块中有3个UART发送缓冲寄存器,包括:UTXH0,UTXH1和UTXH2,UTXHn有8位发送数据。如表3.13所示。,表3.13UART发送缓冲寄存器,表3.14UART发送缓冲寄存器功能,(3)在UART模块中有3个UART接收缓冲寄存器,包括URXH0,URXH1和URXH2,URXHn有8位接收数据。如表3.15所示。,表3.15UART接收缓冲寄存器,表3.16UART接收缓冲寄存器功能,(4)UART波特率因子寄存器,表3.17UART波特率因子寄存器,表3.18UART波特率因子寄存器功能,UART包括三个波特率因子寄存器UBRDIV0,UBRDIV1andUBRDIV2,存储在波特率因子寄存器(UBRDIVn)中的值决定串口发送和接收的时钟数率(波特率),计算公式如下:UBRDIVn=(int)(PCLK/(bpsx16)1或UBRDIVn=(int)(UCLK/(bpsx16)1例如:如果波特率是115200,PCLKor或UCLKis是40MHz,那么UBRDIVn:UBRDIVn=(int)(40000000/(115200 x16)-1=(int)(21.7)-1=21-1=20,3.3.3S3C2410X的UART模块软件设计1编写串口驱动函数基于上述的寄存器描述,即可编写出驱动程序,其流程如图3.17和图3.18所示,其源程序代码详见本书所带光盘,在ADS1.2下编译调试通过。,图3.19主函数框图,2在主函数中实现将从串口0接收到的数据发送到串口0(main.c),图3.19所示。,/main.c函数/说明:Cmain函数,ucos-ii初始化等定义#defineU8unsignedchar#include#include#defineTRUE1#defineFALSE0#pragmaimport(_use_no_semihosting_swi)/ensurenofunctionsthatusesemihosting#definerUTRSTAT0(*(volatileunsigned*)0 x50000010)#definerUTRSTAT1(*(volatileunsigned*)0 x50004010)#defineWrUTXH0(ch)(*(volatileunsignedchar*)0 x50000020)=(unsignedchar)(ch)#defineWrUTXH1(ch)(*(volatileunsignedchar*)0 x50004020)=(unsignedchar)(ch)#defineRdURXH0()(*(volatileunsignedchar*)0 x50000024)#defineRdURXH1()(*(volatileunsignedchar*)0 x50004024),voidUart_SendByten(int,U8);charUart_Getchn(char*Revdata,intUartnum,inttimeout);voidARMTargetInit(void);voidhudelay(inttime);intmain(void)charc11;charerr;ARMTargetInit();/dotarget(uHALbasedARMsystem)initialisation/while(1)Uart_SendByten(0,0 xa);/换行Uart_SendByten(0,0 xd);/回车err=Uart_Getchn(c1,0,0);/从串口采集数据Uart_SendByten(0,c10);/显示采集的数据,voidUart_SendByten(intUartnum,U8data)/okericrongif(Uartnum=0)while(!(rUTRSTAT0,charUart_Getchn(char*Revdata,intUartnum,inttimeout)if(Uartnum=0)while(!(rUTRSTAT0,3.4S3C2410X的键盘及LED驱动设计S3C2410X的键盘采用AVR单片机mega8实现,较为简单,LED驱动采用ZLG7290进行设计,本节将针对ZLG7290进行详细描述。3.4.1LED驱动原理及功能ZLG7290是一片具有串行接口的,可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示键盘接口的全部功能。,其特点如下:I2C串行接口提供键盘中断信号方便与处理器接口可驱动8位共阴数码管或64只独立LED和64个按键可控扫描位数可控任一数码管闪烁提供数据译码和循环移位段寻址等控制8个功能键可检测任一键的连击次数无需外接元件即直接驱LED可扩展驱动电流和驱动电压提供工业级器件多种封装形式PDIP24SO24ZLG7290引脚功能如表3.19所示。,表3.19引脚说明,1键盘部分ZLG7290可采样64个按键或传感器可检测每个按键的连击次数,其基本功能如下:(1)键盘去抖动处理当键被按下和放开时可能会出现电平状态反复变化称作键盘抖动若不作处理会引起按键盘命令错误所以要进行去抖动处理以读取稳定的键盘状态为准。(2)双键互锁处理当有两个以上按键被同时按下时ZLG7290只采样优先级高的按键优先顺序为S1S2S64如同时按下S2和S18时采样到S2。,(3)连击键处理当某个按键按下时输出一次键值后如果该按键还未释放该键值连续有效就像连续压按该键一样这种功能称为连击连击次数计数器RepeatCnt可区别出单击某些功能不允许连击如开关或连击判断连击次数可以检测被按时间以防止某些功能误操作如连续按5秒经入参数设置状态。(4)功能键处理功能键能实现2个以上按键同时按下来扩展按键数目或实现特殊功能。,2显示部分在每个显示刷新周期ZLG7290按照扫描位数寄存器ScanNum指定的显示位数N把显示缓存DpRam0DpRamN的内容按先后循序送入LED驱动器实现动态显示减少N值可提高每位显示扫描时间的占空比以提高LED亮度显示缓存中的内容不受影响修改闪烁控制寄器。FlashOnOff可改变闪烁频率和占空比亮和灭的时间ZLG7290提供两种控制方式寄存器映象控制和命令解释控制如上述对显示部分的控制寄存器映象控制是指直接访问底层寄存器实现基本控制功能这些寄存器须字节操作命令解释控制是指通过解释命令缓冲区CmdBuf0CmdBuf1中的指令间接访问底层寄存器实现扩展控制功能如实现寄存器的位操作对显示缓存循环移位对操作数译码等操作请参考指令详解部分。,3寄存器详解系统状态部分(1)系统寄存器(SystemReg):地址00H复位值11110000B系统寄存器保存ZLG7290系统状态并可对系统运行状态进行配置其功能分位描述如下:KeyAvi(SystemReg.0)置1时表示有效的按键动作普通键的单击连击和功能键状态变化/INT引脚信号有效变为低电平清0表示无按键动作/INT引脚信号无效变为高阻态有效的按键动作消失后或读Key后KeyAvi位自动清0。,键盘部分(2)键值寄存器(Key):地址01H复位值00HKey表示被压按键的键值当Key=0时表示没有键被压按。(3)连击次数计数器(RepeatCnt):地址02H复位值00HRepeatCnt=0时表示单击键RepeatCnt大于0时表示键的连击次数用于区别出单击键或连击键判断连击次数可以检测被按时间。(4)功能键寄存器(FunctionKey):地址03H复位值0FFHFunctionKey对应位的值=0表示对应功能键被压按FunctionKey.7FunctionKey.0对应S64S57。命令接口部分(5)命令缓冲区CmdBuf0CmdBuf1地址07H08H复位值00H00H用于传输指令。,显示部分(6)闪烁控制寄存器(FlashOnOff):地址0CH,复位值0111B/0111B,高4位表示闪烁时亮的时间,低4位表示闪烁时灭的时间,改变其值同时也改变了闪烁频率,也能改变亮和灭的占空比,FlashOnOff的1个单位相当于150250ms(亮和灭的时间范围为1160000B相当1个时间)单位,所有象素的闪烁频率和占空比相同。(7)扫描位数寄存器(ScanNum):地址0DH复位值7用于控制最大的扫描显示位数有效范围为07对应的显示位数为18减少扫描位数可提高每位显示扫描时间的占空比以提高LED亮度不扫描显示的显示缓存寄存器则保持不变如ScanNum3时只显示DpRam0DpRam3的内容。,(8)显示缓存寄存器(DpRam0DpRam7):地址10H17H,复位值00H00H,缓存中一位置1表示该像素亮DpRam7DpRam0的显示内容对应Dig7Dig0引脚。,4指令详解ZLG7290提供两种控制方式:寄存器映象控制和命令解释控制。寄存器映象控制是指直接访问底层寄存器(除通信缓冲区外的寄存器),实现基本控制功能。请参考寄存器详解部分。命令解释控制是指通过解释命令缓冲区(CmdBuf0CmdBuf1)中的指令,间接访问底层寄存器,实现扩展控制功能。如实现寄存器的位操作,对显示缓存循环移位、对操作数译码等操作。一个有效的指令由一字节操作码和数个操作数组成,只有操作码的指令称为纯指令,带操作数的指令称为复合指令,一个完整的指令须在一个I2C帧中(起始信号和结束信号间)连续传输到命令(CmdBuf0CmdBuf1)中。否则会引起错误,ZLG7290的控制指令分为二大类:纯指令和带有数据的指令。,纯指令(1)左移指令,该指令使与ScanNum相对应的显示数据和显示属性(闪烁)自右向左移动N位(N3N0)+1),移动后右边N位无显示,而与ScanNum不相关的显示数据和显示属性则不受影响。例DpRamBDpRam0=“87654321”,其中4闪烁,ScanNum=5(“87”不显示)。执行指令00010001B后DpRamBDpRam0=“4321”。”4”闪烁高两位和低两位无显示。,(2)右移指令,与左移指令类似,只是移动方向为自左向右,移动后左边N位(N3N0)+1)无显示。例DpRamBDpRam0=“87654321”。其中“3”闪烁ScanNum=5(“87”不显示),执行指令00100001B后DpRamBDpRam0=“6543”。“3”闪烁,高四位无显示。,(3)循环左移指令,与左移指令类似,不同的是在每移动一位后,原最左位的显示数据和属性转移到最右位。例DpRamBDpRam0=“87654321”,其中“4”闪烁,ScanNum=5(“87”不显示),执行指令00110001B后DpRamBDpRam0=“432165”。“4”闪烁,高两位无显示。,(4)循环右移指令,与循环左移指令类似,只是移动方向相反。例DpRamBDpRam0=“87654321”,其中”3”闪烁,ScanNum=5(”87”不显示)。执行指令01000001B后DpRamBDpRam0=“216543”。”3”闪烁。(5)SystemReg寄存器位寻址指令,当On=1时第S(S2S0)位置1;当On=0时第S位清0。,复合指令(1)显示像素寻址指令,表3.20显示像素寻址指令,当On=1时第S(S5S0)点像素亮(置1),当On=0时第S点像素灭(清0),该指令用于点亮关闭数码管中某一段或LED矩阵中某一特定的LED,该指令受ScanNum的内容影响,S6S0为像素地址有效范围从00H3FH,无效的地址不会产生任何作用,像素位地址映象如下:,复合指令(1)显示像素寻址指令,表3.20显示像素寻址指令,表3.21像素位地址映像,(2)按位下载数据且译码指令,表3.22译码指令,其中A3A0为显示缓存编号(范围为:0000B0111B对应DpRam0DpRam7,无效的编号不会产生任何作用),DP=1时点亮该位小数点,Flash=1时该位闪烁显示,Flash=0时该位正常显示,D4D0为要显示的数据,按以下表规则进行译码。,表3.23译码,(3)闪烁控制指令,表3.24闪烁控制指令,当Fn=1时,该位闪烁(n的范围为:07,对应07位),当Fn=0,时该位不闪烁,该指令会改变所有像素的闪烁属性。例执行指令01110000B,00000000B后所有数码管不闪烁。,5通信接口ZLG7290的I2C接口传输速率可达32kbit/s,容易与处理器接口,并提供键盘中断信号,提高主处理器时间效率,ZLG7290的从地址slaveaddress为70H(01110000B)有效的按键动作,普通键的单击连击和功能键状态变化都会令系统寄存器SystemReg的KeyAvi位置1,/INT引脚信号有效变为低电平,用户的键盘处理程序可由/INT引脚低电平中断触发,以提高程序效率,也可以不采样/INT引脚信号,节省系统的I/O数而轮询系统寄存器的KeyAvi位,要注意读键值寄存器会令KeyAvi位清0,并会令/INT引脚信号无效。为确保某个有效的按键动作,所有参数寄存器的同步性,建议利用I2C通信的自动增址功能连续读RepeatCntFunctionKey和Key寄存器。,但用户无需担心寄存器的同步性问题,应为键参数寄存器变化速度较缓慢,典型为250ms,最快9ms。ZLG7290内可通过I2C总线访问的寄存器地址范围为00H17H,任一寄存器都可按字节直接读写,也可以通过命令接口间接读写或按位读写,请参考指令详解部分,支持自动增址功能,访问一寄存器后,寄存器子地址subaddress自动加一和地址翻转功能,访问最后一寄存器子地址17H后,寄存器子地址翻转为00HZLG7290的控制和状态查询全部都是通过读/写寄存器实现的,用户只需象读写24C02内的单元一样,即可实现对ZLG7290的控制,关于I2C总线访问的细节请参考I2C总线规范。,3.4.2键盘驱动键盘驱动程序详见本书所附光盘,键盘扫描码是通过中断的方式获得的,当设置好上位机的IIC地址以后,单片机(MEGA8)检测到键盘变化时,会主动发送键盘扫描码。这时ARM将产生IIC中断,在中断服务程序中获得键盘扫描码,键盘按下时发送0 x80|scancode,抬起时发送scancode,scancode即为键盘扫描码,再通过GetKey()函数映射成可以在led上显示的数据.关于单片机(MEGA8)的使用有文档说明,下面主要说明键盘中断的流程.本实验在中断前进行了两步初始化:,首先是对中断中用到一个结构体的设置,结构体中各成员变量的意义见结构体的定义,这一步是在函数ISR_Init()中完成的,这个函数在ISR.C中,主要是对中断中用到的寄存器进行初始化,这些寄存器包括:INTMOD,INTMSK,INTSUBMSK,SRCPND,INTPND。其次是在主函数中完成对键盘中断服务函数和中断偏移量(INTOFFSET)的关联及对单片机(MEGA8)工作方式的设置,其中包括对IIC总线的初始化,这是在函数Key_init()中完成的,此函数在KeyBoard.c中。中断服务函数和中断偏移量(INTOFFSET)的关联是通过函数SetISR_Interrupt(IRQ_KBD,Key_ISR,NU

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论