为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

如何选购集成环保灶灶

2018-09-13 2页 doc 11KB 18阅读

用户头像

is_597436

暂无简介

举报
如何选购集成环保灶灶第3章基于S3C2410X处理器的嵌入式应用系统设计第3章基于S3C2410X处理器的嵌入式应用系统设计3.1基本电路设计3.2存储器系统设计3.3S3C2410X的串行通信设计3.4S3C2410X的键盘及LED驱动设计3.5S3C2410X的D/A功能应用开发第3章基于S3C2410X处理器的嵌入式应用系统设计3.1基本电路设计3.1.1电源电路设计S3C2410X需要3.3V和1.8V两种供电电压,是由5V电源电压经LM1085-3.3V和AS1117-1.8V分别得到3.3V和1.8V的工作电压。开发板上的芯片多数使用...
如何选购集成环保灶灶
第3章基于S3C2410X处理器的嵌入式应用系统设计第3章基于S3C2410X处理器的嵌入式应用系统设计3.1基本电路设计3.2存储器系统设计3.3S3C2410X的串行通信设计3.4S3C2410X的键盘及LED驱动设计3.5S3C2410X的D/A功能应用开发第3章基于S3C2410X处理器的嵌入式应用系统设计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所示。第3章基于S3C2410X处理器的嵌入式应用系统设计第3章基于S3C2410X处理器的嵌入式应用系统设计RTC电路的电压是1.8V,实际是将电池电压或3.3V电压经过两个BAV99(等价于4个二极管串联)降压后得到的。如图3.2所示。图3.2RTC电路的电压原理图 第3章基于S3C2410X处理器的嵌入式应用系统设计3.1.2复位电路设计硬件复位电路实现对电源电压的监控和手动复位操作。IMP811T的复位电平可以使CPUJTAG(nTRST)和板级系统(nRESET)全部复位;RESET反相后得到nRESET信号。图3.3系统的复位电路第3章基于S3C2410X处理器的嵌入式应用系统设计3.1.3晶振电路设计S3C2410X微处理器的主时钟可以由外部时钟源提供,也可以由外部振荡器提供,通过引脚OM[3:2]来进行选择。OM[3:2]=00时,MPLL和UPLL的时钟均选择外部振荡器;OM[3:2]=01时,MPLL的时钟选择外部振荡器;UPLL选择外部时钟源;OM[3:2]=10时,MPLL的时钟选择外部时钟源;UPLL选择外部振荡器;OM[3:2]=11时,MPLL和UPLL的时钟均选择外部时钟源。第3章基于S3C2410X处理器的嵌入式应用系统设计该系统中选择OM[3:2]均接地的方式,即采用外部振荡器提供系统时钟。外部振荡器由12MHz晶振和2个15pF的微调电容组成。如图3.4所示,图3.4晶振电路原理图第3章基于S3C2410X处理器的嵌入式应用系统设计图3.5所示的是S3C2410X应用系统所需的RTC时钟电路图,电路由12MHz晶振和2个15pF的电容组成,振荡电路的输出接到S3C2410X微处理器的XTlpll脚,输入由XTOpll提供。12MHz的晶振频率经S3C2410X内部PLL电路的倍频后可达203MHz。图3.5系统时钟的选择第3章基于S3C2410X处理器的嵌入式应用系统设计3.2存储器系统设计在嵌入式应用系统中,通常使用3种存储器接口电路,NorFlash接口、NandFlash接口和SDRAM接口电路。引导程序既可存储在NorFlash中,也可存储在NandFlash中。而SDRAM中存储的是执行中的程序和产生的数据。存储在NorFlash中的程序可直接执行,与在SDRAM执行相比速度较慢。存储在NandFlash中的程序,需要拷贝到RAM中去执行。第3章基于S3C2410X处理器的嵌入式应用系统设计3.2.18位存储器接口设计由于ARM微处理器的体系结构支持8位/16位/32位的存储器系统,相应地可以构建8位的存储器系统、16位的存储器系统或32位的存储器系统,在采用8位存储器构成8位/16位/32位的存储器系统时,除数据总线的连接不同之处,其它的信号线的连接方法基本相同。第3章基于S3C2410X处理器的嵌入式应用系统设计1.构建8位的存储器系统采用8位存储器构成8位的存储器系统如图3.6所示。此时,在初始化程序中还必须通过BWSCON寄存器中的DWn设置为00,选择8位的总线方式。●存储器的nOE端接S3C2410X的nOE引脚;●存储器的nWE端接S3C2410X的nWE引脚;●存储器的nCE端接S3C2410X的nGCSn引脚;●存储器的地址总线[A15~A0]与S3C2410X的地址总线[ADDR15~ADDR0]相连;●存储器的8位数据总线[DQ7~DQ0]与S3C2410X的数据总线[DATA7~DATA0]相连。第3章基于S3C2410X处理器的嵌入式应用系统设计2.构建16位的存储器系统采用两片8位存储器芯片以并联方式可构成16位的存储器系统,如图3.7所示,此时,在初始化程序中将BWSCON寄存器中的DWn设置为01,选择16位的总线方式。●存储器的nOE端接S3C2410X的nOE引脚;●低8位的存储器的nWE端接S3C2410X的nWBE0引脚,高8位的存储器的nWE端接S3C2410X的nWBE1引脚;●存储器的nCE端接S3C2410X的nGCSn引脚;●存储器的地址总线[A15~A0]与S3C2410X的地址总线[ADDR16~ADDR1]相连;●低8位的存储器的8位数据总线[DQ7~DQ0]与S3C2410X的数据总线[DATA7~DATA0]相连,高8位的存储器的8位数据总线[DQ7~DQ0]与S3C2410X的数据总线[DATA15~DATA8]相连。第3章基于S3C2410X处理器的嵌入式应用系统设计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引脚;●存储器的地址总线[A15~A0]与S3C2410X的地址总线[ADDR17~ADDR2]相连。第3章基于S3C2410X处理器的嵌入式应用系统设计图3.832位存储器系统第3章基于S3C2410X处理器的嵌入式应用系统设计3.2.2SDRAM接口电路设计在ARM嵌入式应用系统中,SDRAM主要用于程序的运行空间、数据及堆栈区。当系统启动时,CPU首先从复位地址0x0处读取启动程序代码,完成系统的初始化后,为提高系统的运行的速度,程序代码通常装入到SDRAM中运行。在S3C2410X片内具有独立的SDRAM刷新控制逻辑电路,可方便地与SDRAM接口。目前常用的SDRAM芯片有8位和16位的数据宽度、工作电压一般为3.3V。主要生产厂商有HYUNDAI、Winbond等,下面以K4S561632C-TC75为例说明其与S3C2410X的接口方法,构成16Mx32位的存储系统。第3章基于S3C2410X处理器的嵌入式应用系统设计K4S561632C-TC75存储器是4组×4M×16位的动态存储器,工作电压为3.3V,其封装形式为54脚TSOP,兼容LVTTL接口,数据宽度为16位,支持自动刷新(Auto-Refresh)和自刷新(Self-Refresh)。其引脚如图3.9所示,引脚功能如3.1所示。图3.9K4S561632C-TC75引脚图第3章基于S3C2410X处理器的嵌入式应用系统设计表3.1K4S561632C-TC75引脚功能表第3章基于S3C2410X处理器的嵌入式应用系统设计采用两片K4S561632C-TC75存储器芯片可组成16M×32位SDRAN存储器系统,其片选信号CS*接S3C2410X的nGCS6引脚,具体连线如图3.10所示。图3.10K4S561632C-TC75组成的32位SDRAM存储器系统第3章基于S3C2410X处理器的嵌入式应用系统设计3.2.3Flash接口电路设计Flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。目前所做用的Flash芯片主要有NorFlash和NandFlash两种。但这两种Flash芯片在某些方面存在一定的差异,如:Nand器件执行擦除操作简单,而Nor则要求在进行写入前先将目标块内所有的位都写为0;Nor的读速度比Nand稍快一些;Nand的写入速度比Nor快很多,Nand需4ms擦除,而Nor需要5s快。NandFlash的单元尺寸几乎是Nor器件的一半,由于生产过程更为简单,其价格低。在Nand闪存中每个块的最大擦写次数是一百万次,而Nor的擦写次数是十万次。第3章基于S3C2410X处理器的嵌入式应用系统设计Nor具有XIP(eXecuteInPlace,芯片内执行)特性,应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。Nor的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。Nand结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。在接口方面,NorFlash和NandFlash也存在着差别。NorFlash带有SRAM接口,Nand器件使用复杂的I/O口来串行存取数据。第3章基于S3C2410X处理器的嵌入式应用系统设计1.NorFlash与S3C2410X微处理器接口设计SST39LF/VF160是1MX16位的CMOS芯片,SST39LF160工作电压为3.0~3.6V,SST39VF160工作电压为2.7~3.6V,采用48脚TSOP封装或TFBGA封装,16位数据宽度,以字模式(16位数据宽度)的方式工作。SST39VF160的在系统编程和编程操作仅需3.3V电压,通过命令可以对芯片进行编程(烧写)、擦除(整片擦除和按扇区擦除)以及其他操作。SST39LF/VF160的引脚图如图3.11所示,引脚功能如表3.2所示。第3章基于S3C2410X处理器的嵌入式应用系统设计图3.11SST39LF/VF160的引脚图第3章基于S3C2410X处理器的嵌入式应用系统设计表3.2SST39LF160/SST39VF160引脚功能表 表3.2SST39LF160/SST39VF160引脚功能表第3章基于S3C2410X处理器的嵌入式应用系统设计嵌入式应用系统中,常见的NorFlash存储器芯片单片容量有1MB、2MB、4MB、8MB、16MB等。下面以SST39VF160为例,简述其与S3C2410X微处理器的连线,构成1MX16位的存储器系统。SST39VF160的OE*与S3C2410X的nOE相连;WE*与S3C2410X的nWE相连;地址总线[A19~A0]与S3C2410X的地址总线[ADDR20~ADDR1]相连(注:因为是16位的存储器系统,半字对齐,所以S3C2410X的A0不用连线);16位的数据总线[DQ15~DQ0]与S3C2410X的低16位数据总线[XDATA15~XDATA0]相连,如图3.12所示。第3章基于S3C2410X处理器的嵌入式应用系统设计图3.12SST39LF/VF160的存储系统电路图第3章基于S3C2410X处理器的嵌入式应用系统设计2.NandFlash与S3C2410X微处理器接口电路设计NandFlash相对于NorFlash接口复杂得多,但对于S3C2410X微处器提供了NandFlash的接口,使其在嵌入式应用系统中的接口大大简便。例:K9F1208UDM-YCB0/K9F1208UDM-YIB0存储器与S3C2410X微处理器接口。K9F1208UDM-YCB0/K9F1208UDM-YIB0存储器是64M×8位的NANDFlash存储器,数据总线宽度为8位,工作电压为2.7V-3.6V,采作48脚TSOP封装,系统的编程和擦除电压仅需3.3V,其引脚如图3.13所示,引脚功能如表3.3所第3章基于S3C2410X处理器的嵌入式应用系统设计表3.3U-K9F1208UDM引脚功能表图3.13U-K9F1208UDM引脚图第3章基于S3C2410X处理器的嵌入式应用系统设计K9F1208UDM与S3C2410X微处理器接口如图3.14所示。①K9F1208UDM的ALE和CLE引脚分别与S3C2410X的ALE和CLE引脚相连;②K9F1208UDM的WE*、RE*、CE*和R/B引脚分别与S3C2410X的Nfwe、Nfre、CLE和R/nB引脚相连;③K9F1208UDM的数据输入输出线[IO7~IO0]分别与S3C2410X的[DATA7~DATA0]引脚相连。其操作模式如表3.4所示。第3章基于S3C2410X处理器的嵌入式应用系统设计第3章基于S3C2410X处理器的嵌入式应用系统设计图3.14NandFlash存储系统电路第3章基于S3C2410X处理器的嵌入式应用系统设计3.3S3C2410X的串行通信设计3.3.1串行口原理及接口技术1.异步串行I/O异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各不同位可以分时使用同一传输通道,因此串行I/O可以减少信号连线,最少用一对线即可进行。图3.15串行通信字符格式第3章基于S3C2410X处理器的嵌入式应用系统设计2.S3C2410X串行接口S3C2410X提供了3个通道的UART,要使其与PC机通信,必须将其信号电平转换为RS—232C的电平。RS—232C规定了双极性的信号逻辑电平:-3V到-25V之间的电平表示逻辑“1”。+3V到+25V之间的电平表示逻辑“0”。因此这是一套负逻辑定义,以上标准称为EIA电平。第3章基于S3C2410X处理器的嵌入式应用系统设计图3.16S3C2410X与PC机的异步通信接口图第3章基于S3C2410X处理器的嵌入式应用系统设计3.3.2S3C2410X的UART模块S3C2410X与UART有关的寄存器主要有以下几个:(1)UART线控制寄存器包括ULCON0,ULCON1和ULCON2,主要用来选择每帧数据位数、停止位数,奇偶校验模式及是否使用红外模式,如表3.5和表3.6所示。第3章基于S3C2410X处理器的嵌入式应用系统设计表3.5UART寄存器设置表3.6UART寄存器位描述 寄存器 地址 读/写 描述 复位后值 ULCON0 0x50000000 R/W UART通道0线控制寄存器 0x00 ULCON1 0x50004000 R/W UART通道1线控制寄存器 0x00 ULCON2 0x50008000 R/W UART通道2线控制寄存器 0x00 ULCONn 位 描述 复位后值 保留 [7] 0 红外模式 [6] 确定是否用红外模式:0=正常模式、1=红外收/发模式 0 奇偶校验 [5:3] 收/发过程中的奇偶校验:0XX=无校验、100=奇校验、101=偶校验110=强制奇偶校验为1、110=强制奇偶校验为0 000 停止位 [2] 收/发每帧数据的停止位:0=1位停止位、1=2位停止位 0 字长度 [1:0] 收/发数据长度:00=5位、01=6位、10=7位、11=8位 00第3章基于S3C2410X处理器的嵌入式应用系统设计(2)UART控制寄存器包括UCON0,UCON1andUCON2,主要用来选择时钟,接收和发送中断类型(即电平还是脉冲触发类型),接收超时使能,接收错误状态中断使能,回环模式,发送接收模式等。如表3.7和表3.8所示。图3.7UART控制寄存器设置第3章基于S3C2410X处理器的嵌入式应用系统设计图3.8UART控制寄存器器位设置第3章基于S3C2410X处理器的嵌入式应用系统设计(3)UART错误状态寄存器包括UERSTAT0,UERSTAT1andUERSTAT2,此状态寄存器的相关位表明是否有帧错误或溢出错误发生。如表3.9和表3.10所示。第3章基于S3C2410X处理器的嵌入式应用系统设计表3.9UART错误状态寄存器表3.10UART错误状态寄存器位描述 寄存器 地址 读/写 描述 复位后值 UERSTAT0 0x50000014 R 通道0接收错误状态寄存器 0x00 UERSTAT1 0x50004014 R 通道1接收错误状态寄存器 0x00 UERSTAT2 0x50008014 R 通道2接收错误状态寄存器 0x00 UERSTATn 位 描述 复位后值 保留 [3] 在接收时,0=无帧错误、1=有帧错误 0 帧错误 [2] 在接收数据时若发生帧错误,该位自动置1、否则该位为0 0 保留 [1] 在接收时,0=无帧错误、1=有帧错误 0 溢出错误 [0] 在接收数据时若发生溢出错误,该位自动置1、否则该位为0 0第3章基于S3C2410X处理器的嵌入式应用系统设计(4)在UART模块中有三个接收/发送状态寄存器,包括:UTRSTAT0UTRSTAT1UTRSTAT2如表3.11和表3.12所示。第3章基于S3C2410X处理器的嵌入式应用系统设计表3.11UART接收/发送寄存器设置表3.12UART接收/发送寄存器位描述 寄存器 地址 读/写 描述 复位后值 UTRSTAT0 0x50000010 R 通道0收/发状态寄存器 0x00 UTRSTAT1 0x50004010 R 通道1收/发状态寄存器 0x00 UTRSTAT2 0x50008010 R 通道2收/发状态寄存器 0x00 UTRSTATn 位 描述 复位后值 发送器空 [2] 当发送缓冲器无有效数据发送时,该位自动置1、否则该位为0 0 发送缓冲寄存器空 [1] 当发送缓冲寄存器空时,该位自动置1、否则该位为0 0 接收缓冲寄存器数据准备就绪 [0] 当接收缓冲寄存器数据准备就绪时,该位自动置1、否则该位为0 0第3章基于S3C2410X处理器的嵌入式应用系统设计(2)在UART模块中有3个UART发送缓冲寄存器,包括:UTXH0,UTXH1和UTXH2,UTXHn有8位发送数据。如表3.13所示。第3章基于S3C2410X处理器的嵌入式应用系统设计表3.13UART发送缓冲寄存器表3.14UART发送缓冲寄存器功能 寄存器 地址 读/写 描述 复位后值 UTXH0 0x50000020(L)0x50000023(B) 写(字节) UART0传输缓冲寄存器 UTXH1 0x50004020(L)0x50004023(B) 写(字节) UART1传输缓冲寄存器 UTXH2 0x50008020(L)0x50008023(B) 写(字节) UART2传输缓冲寄存器 UTXHn 位 描述 复位后值 UTDATAn [7:0] 从UARTn发送数据第3章基于S3C2410X处理器的嵌入式应用系统设计(3)在UART模块中有3个UART接收缓冲寄存器,包括URXH0,URXH1和URXH2,URXHn有8位接收数据。如表3.15所示。表3.15UART接收缓冲寄存器表3.16UART接收缓冲寄存器功能 寄存器 地址 读/写 描述 复位值 URXH0 0x50000024(L)0x50000027(B) 读(字节) UART0接收缓冲寄存器 URXH1 0x50004024(L)0x50004027(B) 读(字节) UART1传输缓冲寄存器 URXH2 0x50008024(L)0x50008027(B) 读(字节) UART2传输缓冲寄存器 URXHn 位 描述 复位后值 RXDATAn [7:0] 从UARTn接收数据第3章基于S3C2410X处理器的嵌入式应用系统设计(4)UART波特率因子寄存器表3.17UART波特率因子寄存器表3.18UART波特率因子寄存器功能 寄存器 地址 读/写 描述 复位值 UBRDIV0 0x50000028 读/写 波特率约数寄存器0 UBRDIV1 0x50004028 读/写 波特率约数寄存器1 UBRDIV2 0x50008028 读/写 波特率约数寄存器2 UBRDIVn 位 描述 复位后值 UBRDIV [15:0] 波特率因子值UBRDIVn>0第3章基于S3C2410X处理器的嵌入式应用系统设计UART包括三个波特率因子寄存器UBRDIV0,UBRDIV1andUBRDIV2,存储在波特率因子寄存器(UBRDIVn)中的值决定串口发送和接收的时钟数率(波特率),计算公式如下:UBRDIVn=(int)(PCLK/(bpsx16))–1或UBRDIVn=(int)(UCLK/(bpsx16))–1例如:如果波特率是115200,PCLKor或UCLKis是40MHz,那么UBRDIVn:UBRDIVn=(int)(40000000/(115200x16))-1=(int)(21.7)-1=21-1=20第3章基于S3C2410X处理器的嵌入式应用系统设计3.3.3S3C2410X的UART模块软件设计1.编写串口驱动函数基于上述的寄存器描述,即可编写出驱动程序,其流程如图3.17和图3.18所示,其源程序代码详见本书所带光盘,在ADS1.2下编译调试通过。第3章基于S3C2410X处理器的嵌入式应用系统设计第3章基于S3C2410X处理器的嵌入式应用系统设计图3.19主函数框图2.在主函数中实现将从串口0接收到的数据发送到串口0(main.c),图3.19所示。第3章基于S3C2410X处理器的嵌入式应用系统设计//main.c函数//说明:Cmain函数,ucos-ii初始化等定义#defineU8unsignedchar#include<string.h>#include<stdio.h>#defineTRUE 1#defineFALSE 0#pragmaimport(__use_no_semihosting_swi)//ensurenofunctionsthatusesemihosting#definerUTRSTAT0 (*(volatileunsigned*)0x50000010)#definerUTRSTAT1 (*(volatileunsigned*)0x50004010)#defineWrUTXH0(ch) (*(volatileunsignedchar*)0x50000020)=(unsignedchar)(ch)#defineWrUTXH1(ch) (*(volatileunsignedchar*)0x50004020)=(unsignedchar)(ch)#defineRdURXH0() (*(volatileunsignedchar*)0x50000024)#defineRdURXH1() (*(volatileunsignedchar*)0x50004024)第3章基于S3C2410X处理器的嵌入式应用系统设计voidUart_SendByten(int,U8);charUart_Getchn(char*Revdata,intUartnum,inttimeout);voidARMTargetInit(void);voidhudelay(inttime);intmain(void){charc1[1];charerr; ARMTargetInit();//dotarget(uHALbasedARMsystem)initialisation// while(1) {Uart_SendByten(0,0xa);//换行 Uart_SendByten(0,0xd);//回车 err=Uart_Getchn(c1,0,0); //从串口采集数据 Uart_SendByten(0,c1[0]); //显示采集的数据 } }第3章基于S3C2410X处理器的嵌入式应用系统设计voidUart_SendByten(intUartnum,U8data)//okericrong{ if(Uartnum==0){ while(!(rUTRSTAT0&0x4));//WaituntilTHRisempty. hudelay(10); WrUTXH0(data); } else{ while(!(rUTRSTAT1&0x4));//WaituntilTHRisempty. hudelay(10); WrUTXH1(data);} } 第3章基于S3C2410X处理器的嵌入式应用系统设计charUart_Getchn(char*Revdata,intUartnum,inttimeout){ if(Uartnum==0){ while(!(rUTRSTAT0&0x1));//Receivedataread *Revdata=RdURXH0(); returnTRUE; } else{ while(!(rUTRSTAT1&0x1));//Receivedataread *Revdata=RdURXH1(); returnTRUE; }} 第3章基于S3C2410X处理器的嵌入式应用系统设计3.4S3C2410X的键盘及LED驱动设计S3C2410X的键盘采用AVR单片机mega8实现,较为简单,LED驱动采用ZLG7290进行设计,本节将针对ZLG7290进行详细描述。3.4.1LED驱动原理及功能ZLG7290是一片具有串行接口的,可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示﹑键盘接口的全部功能。第3章基于S3C2410X处理器的嵌入式应用系统设计其特点如下:●I2C串行接口提供键盘中断信号方便与处理器接口●可驱动8位共阴数码管或64只独立LED和64个按键●可控扫描位数可控任一数码管闪烁●提供数据译码和循环移位段寻址等控制●8个功能键可检测任一键的连击次数●无需外接元件即直接驱LED可扩展驱动电流和驱动电压●提供工业级器件多种封装形式PDIP24SO24ZLG7290引脚功能如表3.19所示。第3章基于S3C2410X处理器的嵌入式应用系统设计表3.19引脚说明 引脚号 引脚名称 引脚属性 引脚描述 13、12、21、22、3~6 Dig7~Dig0 输入/输出 LED显示位驱动及键盘扫描线 10~7、2、1、24、23 segH~segA 输入/输出 LED显示位驱动及键盘扫描线 20 SDA 输入/输出 I2C总线接口数据/地址线 19 SCL 输入/输出 I2C总线接口时钟线 14 INT* 输出 中断输出线,低电平有效 15 RES* 输入 复位输入线,低电平有效 17 OSC1 输入 连接晶体以产生内部时钟 18 OSC2 输出 16 VCC 电源 电源正(3.5V~5.5V) 11 GND 地 电源地第3章基于S3C2410X处理器的嵌入式应用系统设计1.键盘部分ZLG7290可采样64个按键或传感器可检测每个按键的连击次数,其基本功能如下:(1)键盘去抖动处理当键被按下和放开时可能会出现电平状态反复变化称作键盘抖动若不作处理会引起按键盘命令错误所以要进行去抖动处理以读取稳定的键盘状态为准。(2)双键互锁处理当有两个以上按键被同时按下时ZLG7290只采样优先级高的按键优先顺序为S1>S2>…>S64如同时按下S2和S18时采样到S2。第3章基于S3C2410X处理器的嵌入式应用系统设计(3)连击键处理当某个按键按下时输出一次键值后如果该按键还未释放该键值连续有效就像连续压按该键一样这种功能称为连击连击次数计数器RepeatCnt可区别出单击某些功能不允许连击如开关或连击判断连击次数可以检测被按时间以防止某些功能误操作如连续按5秒经入参数设置状态。(4)功能键处理功能键能实现2个以上按键同时按下来扩展按键数目或实现特殊功能。第3章基于S3C2410X处理器的嵌入式应用系统设计2.显示部分在每个显示刷新周期ZLG7290按照扫描位数寄存器ScanNum指定的显示位数N把显示缓存DpRam0DpRamN的内容按先后循序送入LED驱动器实现动态显示减少N值可提高每位显示扫描时间的占空比以提高LED亮度显示缓存中的内容不受影响修改闪烁控制寄器。FlashOnOff可改变闪烁频率和占空比亮和灭的时间ZLG7290提供两种控制方式寄存器映象控制和命令解释控制如上述对显示部分的控制寄存器映象控制是指直接访问底层寄存器实现基本控制功能这些寄存器须字节操作命令解释控制是指通过解释命令缓冲区CmdBuf0~CmdBuf1中的指令间接访问底层寄存器实现扩展控制功能如实现寄存器的位操作对显示缓存循环移位对操作数译码等操作请参考指令详解部分。第3章基于S3C2410X处理器的嵌入式应用系统设计3.寄存器详解●系统状态部分(1)系统寄存器(SystemReg):地址00H复位值11110000B系统寄存器保存ZLG7290系统状态并可对系统运行状态进行配置其功能分位描述如下:KeyAvi(SystemReg.0)置1时表示有效的按键动作普通键的单击连击和功能键状态变化/INT引脚信号有效变为低电平清0表示无按键动作/INT引脚信号无效变为高阻态有效的按键动作消失后或读Key后KeyAvi位自动清0。第3章基于S3C2410X处理器的嵌入式应用系统设计●键盘部分(2)键值寄存器(Key):地址01H复位值00HKey表示被压按键的键值当Key=0时表示没有键被压按。(3)连击次数计数器(RepeatCnt):地址02H复位值00HRepeatCnt=0时表示单击键RepeatCnt大于0时表示键的连击次数用于区别出单击键或连击键判断连击次数可以检测被按时间。(4)功能键寄存器(FunctionKey):地址03H复位值0FFHFunctionKey对应位的值=0表示对应功能键被压按FunctionKey.7~FunctionKey.0对应S64~S57。●命令接口部分(5)命令缓冲区CmdBuf0~CmdBuf1地址07H~08H复位值00H~00H用于传输指令。第3章基于S3C2410X处理器的嵌入式应用系统设计●显示部分(6)闪烁控制寄存器(FlashOnOff):地址0CH,复位值0111B/0111B,高4位表示闪烁时亮的时间,低4位表示闪烁时灭的时间,改变其值同时也改变了闪烁频率,也能改变亮和灭的占空比,FlashOnOff的1个单位相当于150~250ms(亮和灭的时间范围为1~160000B相当1个时间)单位,所有象素的闪烁频率和占空比相同。(7)扫描位数寄存器(ScanNum):地址0DH复位值7用于控制最大的扫描显示位数有效范围为0~7对应的显示位数为1~8减少扫描位数可提高每位显示扫描时间的占空比以提高LED亮度不扫描显示的显示缓存寄存器则保持不变如ScanNum=3时只显示DpRam0~DpRam3的内容。第3章基于S3C2410X处理器的嵌入式应用系统设计(8)显示缓存寄存器(DpRam0~DpRam7):地址10H~17H,复位值00H~00H,缓存中一位置1表示该像素亮DpRam7~DpRam0的显示内容对应Dig7~Dig0引脚。第3章基于S3C2410X处理器的嵌入式应用系统设计4.指令详解ZLG7290提供两种控制方式:寄存器映象控制和命令解释控制。寄存器映象控制是指直接访问底层寄存器(除通信缓冲区外的寄存器),实现基本控制功能。请参考寄存器详解部分。命令解释控制是指通过解释命令缓冲区(CmdBuf0~CmdBuf1)中的指令,间接访问底层寄存器,实现扩展控制功能。如实现寄存器的位操作,对显示缓存循环移位、对操作数译码等操作。一个有效的指令由一字节操作码和数个操作数组成,只有操作码的指令称为纯指令,带操作数的指令称为复合指令,一个完整的指令须在一个I2C帧中(起始信号和结束信号间)连续传输到命令(CmdBuf0~CmdBuf1)中。否则会引起错误,ZLG7290的控制指令分为二大类:纯指令和带有数据的指令。第3章基于S3C2410X处理器的嵌入式应用系统设计●纯指令(1)左移指令该指令使与ScanNum相对应的显示数据和显示属性(闪烁)自右向左移动N位((N3~N0)+1),移动后右边N位无显示,而与ScanNum不相关的显示数据和显示属性则不受影响。例DpRamB~DpRam0=“87654321”,其中4闪烁,ScanNum=5(“87”不显示)。执行指令00010001B后DpRamB~DpRam0=“4321”。”4”闪烁高两位和低两位无显示。 命令缓冲区 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 CmdBuf0 0 0 0 1 N3 N2 N1 N0第3章基于S3C2410X处理器的嵌入式应用系统设计(2)右移指令与左移指令类似,只是移动方向为自左向右,移动后左边N位((N3~N0)+1)无显示。例DpRamBDpRam0=“87654321”。其中“3”闪烁ScanNum=5(“87”不显示),执行指令00100001B后DpRamB~DpRam0=“6543”。“3”闪烁,高四位无显示。 通信缓冲区 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 ComBuf0 0 0 1 0 N3 N2 N1 N0第3章基于S3C2410X处理器的嵌入式应用系统设计(3)循环左移指令与左移指令类似,不同的是在每移动一位后,原最左位的显示数据和属性转移到最右位。例DpRamB~DpRam0=“87654321”,其中“4”闪烁,ScanNum=5(“87”不显示),执行指令00110001B后DpRamB~DpRam0=“432165”。“4”闪烁,高两位无显示。 通信缓冲区 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 ComBuf0 0 0 1 1 N3 N2 N1 N0第3章基于S3C2410X处理器的嵌入式应用系统设计(4)循环右移指令与循环左移指令类似,只是移动方向相反。例DpRamB~DpRam0=“87654321”,其中”3”闪烁,ScanNum=5(”87”不显示)。执行指令01000001B后DpRamB~DpRam0=“216543”。”3”闪烁。(5)SystemReg寄存器位寻址指令当On=1时第S(S2~S0)位置1;当On=0时第S位清0。 通信缓冲区 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 ComBuf0 0 1 0 0 N3 N2 N1 N0 通信缓冲区 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 ComBuf0 0 1 0 1 On S2 S1 S0第3章基于S3C2410X处理器的嵌入式应用系统设计●复合指令(1)显示像素寻址指令表3.20显示像素寻址指令当On=1时第S(S5~S0)点像素亮(置1),当On=0时第S点像素灭(清0),该指令用于点亮关闭数码管中某一段或LED矩阵中某一特定的LED,该指令受ScanNum的内容影响,S6~S0为像素地址有效范围从00H~3FH,无效的地址不会产生任何作用,像素位地址映象如下:●复合指令(1)显示像素寻址指令表3.20显示像素寻址指令 通信缓冲区 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 ComBuf0 0 0 0 0 0 0 0 1 ComBuf1 On 0 S5 S4 S3 S2 S1 S0第3章基于S3C2410X处理器的嵌入式应用系统设计表3.21像素位地址映像(2)按位下载数据且译码指令表3.22译码指令 像素地址 Sa Sb Sc Sd Se Sf Sg Sh DpRam0 00H 01H 02H 03H 04H 05H 06H 07H DpRam1 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH … DpRam7 38H 39H 3AH 3BH 3CH 3DH 3EH 3FH 通信缓冲区 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 CmdBuf0 0 1 1 0 A3 A2 A1 A0 CmdBuf1 DP Flash 0 D4 D3 D2 D1 D0第3章基于S3C2410X处理器的嵌入式应用系统设计其中A3~A0为显示缓存编号(范围为:0000B~0111B对应DpRam0~DpRam7,无效的编号不会产生任何作用),DP=1时点亮该位小数点,Flash=1时该位闪烁显示,Flash=0时该位正常显示,D4~D0为要显示的数据,按以下表规则进行译码。第3章基于S3C2410X处理器的嵌入式应用系统设计表3.23译码第3章基于S3C2410X处理器的嵌入式应用系统设计(3)闪烁控制指令表3.24闪烁控制指令当Fn=1时,该位闪烁(n的范围为:0~7,对应0~7位),当Fn=0,时该位不闪烁,该指令会改变所有像素的闪烁属性。例执行指令01110000B,00000000B后所有数码管不闪烁。 通信缓冲区 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 CmdBuf0 0 1 1 1 × × × × CmdBuf1 F7 F6 F5 F4 F3 F2 F1 F0第3章基于S3C2410X处理器的嵌入式应用系统设计5.通信接口ZLG7290的I2C接口传输速率可达32kbit/s,容易与处理器接口,并提供键盘中断信号,提高主处理器时间效率,ZLG7290的从地址slaveaddress为70H(01110000B)有效的按键动作,普通键的单击连击和功能键状态变化都会令系统寄存器SystemReg的KeyAvi位置1,/INT引脚信号有效变为低电平,用户的键盘处理程序可由/INT引脚低电平中断触发,以提高程序效率,也可以不采样/INT引脚信号,节省系统的I/O数而轮询系统寄存器的KeyAvi位,要注意读键值寄存器会令KeyAvi位清0,并会令/INT引脚信号无效。为确保某个有效的按键动作,所有参数寄存器的同步性,建议利用I2C通信的自动增址功能连续读RepeatCntFunctionKey和Key寄存器。第3章基于S3C2410X处理器的嵌入式应用系统设计但用户无需担心寄存器的同步性问题,应为键参数寄存器变化速度较缓慢,典型为250ms,最快9ms。ZLG7290内可通过I2C总线访问的寄存器地址范围为00H17H,任一寄存器都可按字节直接读写,也可以通过命令接口间接读写或按位读写,请参考指令详解部分,支持自动增址功能,访问一寄存器后,寄存器子地址subaddress自动加一和地址翻转功能,访问最后一寄存器子地址17H后,寄存器子地址翻转为00HZLG7290的控制和状态查询全部都是通过读/写寄存器实现的,用户只需象读写24C02内的单元一样,即可实现对ZLG7290的控制,关于I2C总线访问的细节请参考I2C总线规范。第3章基于S3C2410X处理器的嵌入式应用系统设计3.4.2键盘驱动键盘驱动程序详见本书所附光盘,键盘扫描码是通过中断的方式获得的,当设置好上位机的IIC地址以后,单片机(MEGA8)检测到键盘变化时,会主动发送键盘扫描码。这时ARM将产生IIC中断,在中断服务程序中获得键盘扫描码,键盘按下时发送0x80|scancode,抬起时发送scancode,scancode即为键盘扫描码,再通过GetKey()函数映射成可以在led上显示的数据.关于单片机(MEGA8)的使用有文档说明,下面主要说明键盘中断的流程.本实验在中断前进行了两步初始化:第3章基于S3C2410X处理器的嵌入式应用系统设计首先是对中断中用到一个结构体的设置,结构体中各成员变量的意义见结构体的定义,这一步是在函数ISR_Init()中完成的,这个函数在ISR.C中,主要是对中断中用到的寄存器进行初始化,这些寄存器包括:INTMOD,INTMSK,INTSUBMSK,SRCPND,INTPND。其次是在主函数中完成对键盘中断服务函数和中断偏移量(INTOFFSET)的关联及对单片机(MEGA8)工作方式的设置,其中包括对IIC总线的初始化,这是在函数Key_init()中完成的,此函数在KeyBoard.c中。中断服务函数和中断偏移量(INTOFFSET)的关联是通过函数SetISR_Interrupt(IRQ_KBD,Key_ISR,NULL)来完成的。有了这一步的关联以后当查询到中断偏移量是IRQ_KBD时就会根据此偏移量调用键盘中断服务函数Key_ISR。第3章基于S3C2410X处理器的嵌入式应用系统设计有了上面两步的初始化工作以后,当有键盘按下时就会发生IRQ中断,过程是先跳转到startup.s中的bIRQ_Handler处,然后保存寄存器r0-r12,lr跳转到函数ISR_IrqHandler中,在这个函数中查询中断向量的偏移量,根据这个偏移量调用相应的中断服务函数。执行完中断服务函数后再跳转回startup.s中的LDMFDsp!,{r0-r12,lr}处,恢复执行中断服务函数之前的状态,继续执行发生中断服务前的下一条指令.至此中断过程结束,在中断服务函数中获得键盘的扫描码,再通过GetKey()函数映射成led可以显示的数据。其源程序代码详见本书所带光盘,在ADS1.2下编译调试通过。第3章基于S3C2410X处理器的嵌入式应用系统设计3.4.3键盘及LED驱动软件设计(KeyBoard.c)1.定义键盘映射表:#include"../inc/reg2410.h"#include"../inc/lib.h"#include"../inc/macro.h"#include"../inc/isr.h"#include"../inc/KeyBoard.h"#include"../inc/iic.h"#include"../inc/Uart.h"#include"inc/lcd.h"#include<stdio.h>#include<string.h>第3章基于S3C2410X处理器的嵌入式应用系统设计#defineKBDTYPE_ZLG7290 1#defineKBDTYPE_MCUIIC 2#defineKEYBOARD_TYPE KBDTYPE_MCUIIC#defineKEY_DOWN (1ul<<31)#include"../inc/i2c-tomega8.h"#defineIRQ_KBD IRQ_IIC#defineMCU_IICCON (IICCON_ACKEN|IICCON_INTR|IICCON_CLKPRE(7))unsignedshortmcukey,tempmcukey,up,count;第3章基于S3C2410X处理器的嵌入式应用系统设计staticvoidKey_ISR(intvector,void*data){staticintframecnt=0;U8status,kdata;status=rIICSTAT;if((status&IICSTAT_MODE_MSK)!=IICSTAT_MODE_SR)return;kdata=rIICDS;switch(framecnt){case0:if(status&IICSTAT_SLAVEADDR){ framecnt++;}break;第3章基于S3C2410X处理器的嵌入式应用系统设计case1:if(GetI2C_Devtype(kdata)!=DTYPE_MKEYB){ framecnt=0;} framecnt++; break; case2: mcukey=kdata; if(mcukey&0x80) {framecnt=0;break;} 第3章基于S3C2410X处理器的嵌入式应用系统设计elseif(!(mcukey&0x80)){up=1; count=1; tempmcukey=mcukey; }framecnt=0; break; }rIICCON&=~IICCON_INTPEND;}第3章基于S3C2410X处理器的嵌入式应用系统设计voidKey_init(void){ I2C_controli2c_ctrl; IIC_init(); Set_IIC_mode(MCU_IICCON,NULL); i2c_ctrl.cmd=CMD_MST_ADDR; i2c_ctrl.ctrl=I2COWNER_ADDRESS; IIC_Send(MEGA8_I2CADDRESS,(constchar*)&i2c_ctrl,sizeof(i2c_ctrl)); i2c_ctrl.cmd=CMD_CTRL; i2c_ctrl.ctrl=CTRL_MKEn; IIC_Send(MEGA8_I2CADDRESS,(constchar*)&i2c_ctrl,sizeof(i2c_ctrl));INTS_OFF(); SetISR_Interrupt(IRQ_KBD,Key_ISR,NULL);INTS_ON();}第3章基于S3C2410X处理器的嵌入式应用系统设计voidKey_init_restor(void){ IIC_init(); Set_IIC_mode(MCU_IICCON,NULL);}第3章基于S3C2410X处理器的嵌入式应用系统设计unsignedcharGetKey(){unsignedcharscankey; unsignedcharKeyBoard_Map[]={0,0,0x9e,0,0,0xe0,0x66,0x60,0,0,0x8e ,14,0,0xfe,0xb6,0xda,0xfc,0x1c,0x6e,0,0,0xf6,0xbe,0xf2,0x3e,0,0,0,0,0xce,0,0x7c,0,1,0,0,17,2,0,0,0,4,0,6,0,5,0,0,0,7,0,9,15,8,0,0,0,0,0,0,0,0,0,0};//64,键值映射表 第3章基于S3C2410X处理器的嵌入式应用系统设计while(1){ if((up==1)&&(count==1)){up=0;count=0;scankey=KeyBoard_Map[tempmcukey];break;}elsecontinue;}returnscankey;}第3章基于S3C2410X处理器的嵌入式应用系统设计2.主函数,将按键值在数码管上显示,流程图如图3.20所示。图3.20主函数第3章基于S3C2410X处理器的嵌入式应用系统设计//main()主函数#include"inc/macro.h"#include"inc/KeyBoard.h"#include<string.h>#include<stdio.h>#include"inc/Uart.h"#include"inc/lcd.h
/
本文档为【如何选购集成环保灶灶】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索