资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,4.3.1,通用IO接口技术,嵌入式系统的GPIO接口引脚数量较多,例如,,S3C44BO有71个,,,S3C2410有117个,,PXA255有,84个GPIO管脚,PXA270有,120个GPIO管脚,。它们与处理器之间的连接一般不使用系统总线,而是直接连接在处理器的引脚上。每个I/O引脚可被编程设置成为普通的输入或输出状态。如被作为输入端时,该GPIO管脚可被设置工作在中断方式或查询方式。但当系统被复位后,所有的GPIO管脚的默认值为输入状态。有些GPIO管脚还通过设置具有第二功能。,每个处理器内的GPIO又分成若干个组(端口),每组称为一个I/O接口。每个接口含有10-20多个引脚不等。,1,1、I/O系统工作过程,I/O系统的初始化,设备打开,设备关闭,设备读,设备写,设备控制,设备管理初始化,驱动逻辑初始化,硬件抽象初始化,完成设备管理相关信息的初始化,如创建驱动程序地址表、设备名表、文件记录表等,实现系统中各驱动程序的注册,即把系统中各驱动程序注册到设备管理中,主要完成设备注册,2,I/O系统工作过程,关闭设备,系统调用close()关闭一个不再使用的设备,关闭一个设备时,I/O系统的内部运作过程和写一个设备大致相同,不同的是I/O系统根据设备名表中的主设备号在驱动程序地址表中定位并调用驱动程序的xxx_close()函数,然后释放文件表中的记录,返回。在此之后对该文件描述符的任何引用都将返回错误。但是随后的open()系统调用将仍然返回该文件描述符。,3,2)GPIO的,设计要求,在并行信号传输线中,一般有数据线、控制线和电源线。由于每条数据导线传输一个数据位,这时要求数据总线长度必须较短,否则长的导线会导致有较高的寄生电容值,影响数据的传输速度。此外,并行总线中各导线长度上的小差异,也可能导致所接受的数据字各位的抵达时间不同,影响数据的准确性。,基于ARM的处理器内核和处理器核一般都没有I/O总线部件,需要通过先进微控制总线架构AMBA来扩展宏单元和总线I/O部件,为微处理器提供32位地址信号、32位数据信号和读/写、时钟、外围复位、选通等控制信号。,6,3)编址形式,ARM采用存储器与I/O统一编址的方式,即把I/O端口当作为特殊的存储器地址来对待处理。,比如S3C44B0X微处理器芯片,芯片内部具有71个通用多功能输入输出引脚,分别包含在如下7组端口中:,1个10位输出端口(端口A);,1个11位输出端口(端口B);,1个16位输入输出端口(端口C);,2个8位输入输出端口(端口D和G);,2个9位输入输出端口(端口E和F)。,7,举例,PXA27X处理器提供了120个的GPIO,其分组如下:,端口A通用目地的I/O;,端口B可选输入功能;,端口C可选输入功能;,端口D可选输入功能;,端口E可选输出功能;,端口F可选输出功能;,端口G可选输出功能。,8,2、S3C2410处理器GPIO设计与应用,S3C2410X有8个端口,117个输入/输出引脚,。这些端口是:,A口(GPA):23个输出口,B口(GPB):11个输入/输出口,C口(GPC):16个输入/输出口,D口(GPD):16个输入/输出口,E口(GPE):16个输入/输出口,F口(GPF):8个输入/输出口,G口(GPG):16个输入/输出口,H口(GPH):11个输入/输出口,这些端口都具有多功能,通过引脚配置寄存器,可以将其设置为所需要的功能,如:I/O功能、中断功能等等。,9,1)端口寄存器及引脚配置,每一个端口都有4个寄存器,它们是:引脚配置寄存器、数据寄存器、引脚上拉寄存器等。,Register,Address,R/W,Description,Reset Value,GPXCON,0 x560000 x0,R/W,端口X配置寄存器,X,GPXDAT,0 x560000 x4,R/W,端口X数据寄存器,X,GPXUP,0 x560000 x8,R/W,端口X上拉寄存器,X,RESERVED,0 x560000 xC,R/W,端口X保留寄存器,-,10,GPADAT寄存器为准备输出的数据,其值为23位22:0,注意,:(1),当A口引脚配置为非输出功能时,其输出无意义;(2)从引脚输入没有意义。,(1)端口A寄存器及引脚配置,Register,Address,R/W,Description,Reset Value,GPACON,0 x56000000,R/W,端口A引脚配置寄存器,0 x7FFFFF,GPADAT,0 x56000004,R/W,端口A数据寄存器,-,RESERVED,0 x56000008,-,端口A保留寄存器,-,RESERVED,0 x5600000C,-,端口A保留寄存器,-,11,端口A寄存器及引脚配置,位号,位 名,位值:0 1,位号,位 名,位值:0 1,22,GPA22,输出,nFCE,10,GPA10,输出,ADDR25,21,GPA21,输出,nRSTOUT,9,GPA9,输出,ADDR24,20,GPA20,输出,nFRE,8,GPA8,输出,ADDR23,19,GPA19,输出,nFWE,7,GPA7,输出,ADDR22,18,GPA18,输出,ALE,6,GPA6,输出,ADDR21,17,GPA17,输出,CLE,5,GPA5,输出,ADDR20,16,GPA16,输出,nGCS5,4,GPA4,输出,ADDR19,15,GPA15,输出,nGCS4,3,GPA3,输出,ADDR18,14,GPA14,输出,nGCS3,2,GPA2,输出,ADDR17,13,GPA13,输出,nGCS2,1,GPA1,输出,ADDR16,12,GPA12,输出,nGCS1,0,GPA0,输出,ADDR0,11,GPA11,输出,ADDR26,FCE:,Flash片选,12,GPBDAT-为准备输出或输入的数据,其值为11位10:0,GPBUP-端口B上拉寄存器,位10:0有意义。,0:对应引脚设置为上拉1:无上拉功能,注意,:,当B口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,(2)端口B寄存器及引脚配置,Register,Address,R/W,Description,Reset Value,GPBCON,0 x56000010,R/W,端口B引脚配置寄存器,0 x0,GPBDAT,0 x56000014,R/W,端口B数据寄存器,-,GPBUP,0 x56000018,R/W,端口B上拉寄存器,0 x0,RESERVED,0 x5600001C,-,端口B保留寄存器,-,13,端口B引脚配置寄存器,位号,位 名,位值:00 01 10 11,21,20,GPB10,输入,输出,nXDREQ0,Reserved,19,18,GPB9,输入,输出,nXDACK0,Reserved,17,16,GPB8,输入,输出,nXDREQ1,Reserved,15,14,GPB7,输入,输出,nXDACK1,Reserved,13,12,GPB6,输入,输出,nXBACK,Reserved,11,10,GPB5,输入,输出,nXBREQ,Reserved,9,8,GPB4,输入,输出,TCLK0,Reserved,7,6,GPB3,输入,输出,TOUT3,Reserved,5,4,GPB2,输入,输出,TOUT2,Reserved,3,2,GPB1,输入,输出,TOUT1,Reserved,1,0,GPB0,输入,输出,TOUT0,Reserved,14,GPCDAT-为准备输出或输入的数据,其值为16位15:0,GPCUP-端口C上拉寄存器,位15:0有意义。,0:对应引脚设置为上拉1:无上拉功能,注意,:,当C口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,(3)端口C寄存器及引脚配置,Register,Address,R/W,Description,Reset Value,GPCCON,0 x56000020,R/W,端口C引脚配置寄存器,0 x0,GPCDAT,0 x56000024,R/W,端口C数据寄存器,-,GPCUP,0 x56000028,R/W,端口C上拉寄存器,0 x0,RESERVED,0 x5600002C,-,端口C保留寄存器,-,15,端口C引脚配置寄存器,位号,位 名,位 值,位号,位名,位 值,00,01,10,11,00,01,10,11,31,30,GPC15,输入,输出,VD7,保留,15,14,GPC7,输入,输出,LCDVF2,保留,29,28,GPC14,输入,输出,VD6,保留,13,12,GPC6,输入,输出,LCDVF1,保留,27,26,GPC13,输入,输出,VD5,保留,11,10,GPC5,输入,输出,LCDVF0,保留,25,24,GPC12,输入,输出,VD4,保留,9,8,GPC4,输入,输出,VM,保留,23,22,GPC11,输入,输出,VD3,保留,7,6,GPC3,输入,输出,VFRAME,保留,21,20,GPC10,输入,输出,VD2,保留,5,4,GPC2,输入,输出,VLINE,保留,19,18,GPC9,输入,输出,VD1,保留,3,2,GPC1,输入,输出,VCLK,保留,17,16,GPC8,输入,输出,VD0,保留,1,0,GPC0,输入,输出,VEND,保留,16,GPDDAT-为准备输出或输入的数据,其值为16位15:0,GPDUP-端口D上拉寄存器,位15:0有意义。,0:对应引脚设置为上拉1:无上拉功能,初始化时,15:12无上拉功能,而11:0有上拉,注意,:,当D口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,(4)端口D寄存器及引脚配置,Register,Address,R/W,Description,Reset Value,GPDCON,0 x56000030,R/W,端口D引脚配置寄存器,0 x0,GPDDAT,0 x56000034,R/W,端口D数据寄存器,-,GPDUP,0 x56000038,R/W,端口D上拉寄存器,0 xF000,RESERVED,0 x5600003C,-,端口D保留寄存器,-,17,端口D引脚配置寄存器,位号,位 名,位 值,位号,位名,位 值,00,01,10,11,00,01,10,11,31,30,GPD15,输入,输出,VD23,nSS0,15,14,GPD7,输入,输出,VD15,保留,29,28,GPD14,输入,输出,VD22,nSS1,13,12,GPD6,输入,输出,VD14,保留,27,26,GPD13,输入,输出,VD21,保留,11,10,GPD5,输入,输出,VD13,保留,25,24,GPD12,输入,输出,VD20,保留,9,8,GPD4,输入,输出,VD12,保留,23,22,GPD11,输入,输出,VD19,保留,7,6,GPD3,输入,输出,VD11,保留,21,20,GPD10,输入,输出,VD18,保留,5,4,GPD2,输入,输出,VD10,保留,19,18,GPD9,输入,输出,VD17,保留,3,2,GPD1,输入,输出,VD9,保留,17,16,GPD8,输入,输出,VD16,保留,1,0,GPD0,输入,输出,VD8,保留,18,GPEDAT-为准备输出或输入的数据,其值为16位15:0,GPEUP-端口E上拉寄存器,位15:0有意义。,0:对应引脚设置为上拉1:无上拉功能,初始化时,各个引脚都有上拉功能。,注意,:,当E口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,(5)端口E寄存器及引脚配置,Register,Address,R/W,Description,Reset Value,GPECON,0 x56000040,R/W,端口E引脚配置寄存器,0 x0,GPEDAT,0 x56000044,R/W,端口E数据寄存器,-,GPEUP,0 x56000048,R/W,端口E上拉寄存器,0 x0,RESERVED,0 x5600004C,-,端口E保留寄存器,-,19,端口E引脚配置寄存器,位号,位 名,位 值,位号,位名,位 值,00,01,10,11,00,01,10,11,31,30,GPE15,输入,输出,IICSDA,保留,15,14,GPE7,输入,输出,SDDAT0,保留,29,28,GPE14,输入,输出,IICSCL,保留,13,12,GPE6,输入,输出,SDCMD,保留,27,26,GPE13,输入,输出,SPICLK0,保留,11,10,GPE5,输入,输出,SDCLK,保留,25,24,GPE12,输入,输出,SPISI0,保留,9,8,GPE4,输入,输出,IISSDO,保留,23,22,GPE11,输入,输出,SPISO0,保留,7,6,GPE3,输入,输出,IISSDI,保留,21,20,GPE10,输入,输出,SDDAT3,保留,5,4,GPE2,输入,输出,CDCLK,保留,19,18,GPE9,输入,输出,SDDAT2,保留,3,2,GPE1,输入,输出,IISSCLK,保留,17,16,GPE8,输入,输出,SDDAT1,保留,1,0,GPE0,输入,输出,IISLRCK,保留,20,GPFDAT-为准备输出或输入的数据,其值为8位7:0,GPFUP-端口F上拉寄存器,位7:0有意义。,0:对应引脚设置为上拉1:无上拉功能,初始化时,各个引脚都有上拉功能。,注意,:,当F口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,(6)端口F寄存器及引脚配置,Register,Address,R/W,Description,Reset Value,GPFCON,0 x56000050,R/W,端口F引脚配置寄存器,0 x0,GPFDAT,0 x56000054,R/W,端口F数据寄存器,-,GPFUP,0 x56000058,R/W,端口F上拉寄存器,0 x0,RESERVED,0 x5600005C,-,端口F保留寄存器,-,21,端口F引脚配置寄存器,位号,位 名,位 值,00,01,10,11,15,14,GPF7,输入,输出,EINT7,保留,13,12,GPF6,输入,输出,EINT6,保留,11,10,GPF5,输入,输出,EINT5,保留,9,8,GPF4,输入,输出,EINT4,保留,7,6,GPF3,输入,输出,EINT3,保留,5,4,GPF2,输入,输出,EINT2,保留,3,2,GPF1,输入,输出,EINT1,保留,1,0,GPF0,输入,输出,EINT0,保留,22,GPGDAT-为准备输出或输入的数据,其值为16位15:0,GPGUP-端口G上拉寄存器,位15:0有意义。,0:对应引脚设置为上拉1:无上拉功能,初始化时,15:11引脚无上拉功能,其它引脚有。,注意,:,当G口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,(7)端口G寄存器及引脚配置,Register,Address,R/W,Description,Reset Value,GPGCON,0 x56000060,R/W,端口G引脚配置寄存器,0 x0,GPGDAT,0 x56000064,R/W,端口G数据寄存器,-,GPGUP,0 x56000068,R/W,端口G上拉寄存器,0 xF800,RESERVED,0 x5600006C,-,端口G保留寄存器,-,23,端口G引脚配置寄存器,位号,位 名,位 值,位号,位名,位 值,00,01,10,11,00,01,10,11,31,30,GPG15,输入,输出,EINT23,nYPON,15,14,GPG7,输入,输出,EINT15,SPICLK1,29,28,GPG14,输入,输出,EINT22,YMON,13,12,GPG6,输入,输出,EINT14,SPISI1,27,26,GPG13,输入,输出,EINT21,nXPON,11,10,GPG5,输入,输出,EINT13,SPISO1,25,24,GPG12,输入,输出,EINT20,XMON,9,8,GPG4,输入,输出,EINT12,LCD-PEN,23,22,GPG11,输入,输出,EINT19,TCLK1,7,6,GPG3,输入,输出,EINT11,nSS1,21,20,GPG10,输入,输出,EINT18,保留,5,4,GPG2,输入,输出,EINT10,nSS0,19,18,GPG9,输入,输出,EINT17,保留,3,2,GPG1,输入,输出,EINT9,保留,17,16,GPG8,输入,输出,EINT16,保留,1,0,GPG0,输入,输出,EINT8,保留,LCD-PEN:POWER_ENABLE,nSS0:SPI0_SELECT,24,GPHDAT-为准备输出或输入的数据,其值为11位10:0,GPHUP-端口H上拉寄存器,位10:0有意义。,0:对应引脚设置为上拉1:无上拉功能,注意,:,当H口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,(8)端口H寄存器及引脚配置,Register,Address,R/W,Description,Reset Value,GPHCON,0 x56000070,R/W,端口H引脚配置寄存器,0 x0,GPHDAT,0 x56000074,R/W,端口H数据寄存器,-,GPHUP,0 x56000078,R/W,端口H上拉寄存器,0 x0,RESERVED,0 x5600007C,-,端口H保留寄存器,-,25,端口H引脚配置寄存器,位号,位 名,位值:00 01 10 11,21,20,GPH10,输入,输出,CLKOUT1,Reserved,19,18,GPH9,输入,输出,CLKOUT0,Reserved,17,16,GPH8,输入,输出,UCLK,Reserved,15,14,GPH7,输入,输出,RXD2,nCTS1,13,12,GPH6,输入,输出,TXD2,nRTS1,11,10,GPH5,输入,输出,RXD1,Reserved,9,8,GPH4,输入,输出,TXD1,Reserved,7,6,GPH3,输入,输出,RXD0,Reserved,5,4,GPH2,输入,输出,TXD0,Reserved,3,2,GPH1,输入,输出,nRTS0,Reserved,1,0,GPH0,输入,输出,nCTS0,Reserved,UCLK为USB的,26,(9)端口其它控制寄存器,Register,Address,R/W,Description,Reset Value,MISCCR,0 x56000080,R/W,混合控制寄存器,0 x10330,DCLKCON,0 x56000084,R/W,D时钟控制寄存器,0 x0,27,nEN_SCKE-SCLK使能位。在电源关闭模式下对SDRAM做保护,0:正常状态 1:低电平,nEN_SCLKx-SCLKx使能位。在电源关闭模式下对SDRAM做保护,0:SCLKx=SCLK 1:低电平,nRSTCON-对nRSTOUT软件复位控制位,0:使nRSTOUT为低,0;1:使nRSTOUT为高,1,15,14,13,12,11,10,9,8,7,保留,USBSUSPND1,USBSUSPND0,保留,CLKSEL1,保留,MISCCR-混合控制寄存器,31,20,19,18,17,16,保留(为0),nEN_SCKE,nEN_SCLK1,nEN_SCLK0,nRSTCON,6,5,4,3,2,1,0,CLKSEL0,USBPAD,MEM_HZ_CON,SPUCR_L,SPUCR_H,28,USBSUSPND1-USB端口1模式,0:正常1:浮空,USBSUSPND0-USB端口0模式,0:正常1:浮空,CLKSEL1-CLKOUT1引脚输出信号源选择,000:MPLL CLK001:UPLL CLK,010:FCLK011:HCLK100:PCLK 101:DCLK111x:保留,CLKSEL0-CLKOUT0引脚输出信号源选择,000:MPLL CLK001:UPLL CLK,010:FCLK011:HCLK100:PCLK 101:DCLK011x:保留,15,14,13,12,11,10,9,8,7,保留,USBSUSPND1,USBSUSPND0,保留,CLKSEL1,保留,29,USBPAD-与USB连接选择,0:与USB设备连接1:与USB主机连接,MEM_HZ_CON-MEM高阻控制位,0:Hi-Z 1:前一状态,SPUCR_L-数据口低16位15:0上拉控制位,0:上拉1:无上拉,SPUCR_H-数据口高16位31:16上拉控制位,0:上拉1:无上拉,6,5,4,3,2,1,0,CLKSEL0,USBPAD,MEM_HZ_CON,SPUCR_L,SPUCR_H,30,15,12,11,10,9,8,7,6,5,4,3,2,1,0,保留,DCLK0CMP,DCLK0DIV,保留,DCLK0SelCK,DCLK0EN,DCLKCON-D时钟控制寄存器,31,28,27,26,25,24,23,22,21,20,19,18,17,16,保留,DCLK1CMP,DCLK1DIV,保留,DCLK1SEL,DCLK1EN,DCLK1(0)CMP-DCLK1(0)低电平时间所占的比例数,。,设该位值为m,m0,-,108,3)UART应用举例,编写一程序,使用S3C2410X的UART2进行串行数据收发,要求用脉冲请求中断的方式、使用收/发FIFO,8个数据位、1个停止位、不校验,波特率为125kb/s。设Pclk为50MHz。(提示:主程序对UART2初始化、引脚配置、中断初始化等,并进行一次发送;中断服务程序进行数据收发,标签清除中断请求标志和中断服务标志),解:,(1)计算波特率除数:,由公式:,UBRDIVn=(int)(CLK/(,f,B,*16)1,这里:Pclk=50MHz,,f,B,=125kb/s,计算得:UBRDIVn=25-1=24,(2)UART2控制寄存器:,线路控制寄存器:ULCON2=0b 0 000 0 11=0 x03,含义:非红外、不校验、,1个停止位、8个数据位,109,控制寄存器:UCON2=0b 0 0 0 0 0 0 0 01 01=0 x05,含义:,选Pclk、发/收中断脉冲请求、关闭接收超时中断、允许接收错误中断,、不回送、不发送暂停信号、,发/收用中断方式。,FIFO控制寄存器:UFCON2=0b 10 01 0 0 0 1=0 x91,含义:,发/收FIFO选8字节触发、保留位为0、不复位发/收FIFO、使能FIFO。,(3)引脚配置,需要设置TxD2、RxD2,它们对应GPH6、GPH7,在GPH配置寄存器GPHCON中的位置为:,0b,1 0 1 0,方法:GPHCON=GPHCON&(0 xF12)|(0 xA12),110,(4)中断寄存器设置,中断模式寄存器:INTMOD&=(115),INT_UART2位于第15位,将UART2设置为IRQ中断,中断屏蔽寄存器:INTMSK&=(115),中断优先级寄存器PRIORITY:,不设置,,使用固定优先级。,子中断屏蔽寄存器:INTSUBMSK&=(76),INT_ERR2、INT_TXD2、INT_RXD2位于子中断屏蔽寄存器中的8、7、6位。,(5)在中断服务程序中对寄存器的操作,清除中断标志寄存器相应位:,SRCPND&=(115),清除中断服务寄存器相应位:,INTPND&=(115),111,2、RS-232-C串行接口,RS-232-C标准是一种硬件协议,用于连接DTE(数据终端设备)和DCE(数据通信设备)两种设备。规定包括以下三个方面:,机械特性:一般为9针,D型插件;,电气信号特性:负载电容不超过2500P,负载电阻在3K7K欧姆之间,电压在-3V-15V和+3V+15V之间;,交换特性:允许全双工方式。,在实际的应用中,通信距离一般在几十米内,通信速率较低。,112,(1)串行通信概述,串行数据传送模式:单工;半双工;全双工,串行通信方式:同步通信;异步通信,检错是接收端检测在数据字或包传输过程中可能发生的错误的能力。接收端出现的错误一般有奇偶错、帧格式错(总位数不对)、溢出错(先接收的字符尚未被读取,后面的字符又传送过来)。纠错就是通过接收器、发送器合作以进行更正错误的能力。检错和纠错能力通常是总线协议的一部分。,113,(2)检测与校验,校验和是一种更强的检错方式,用于数据包的检查。当使用奇偶校验时,每个字要增加一位,以帮助检错。使用校验和时,每个包要增加一个字,目的也是帮助检错。例如,可以计算数据包中所有数据字的异或和,并将该值与数据包一起发送;接收器在接收到数据包字和检查字后,计算所接收到的所有数据字的异或和,如果所计算的校验和字等于所接受到的校验和字,则认为所接收到的数据包是正确的,否则认为是错误的。同样地,不是所有的错误组合都可以用这种方式检测到。当然,也可以同时使用奇偶校验与校验和两种检错方式,以得到更强的检错能力。,114,如果要将UART连接成为RS-232接口,就需要使用nRTS、nCTS、nDSR、nDTR、nDCD和Nri信号。,在一般的微处理器中都集成了3.3V TTL 电平的串行接口,可以直接使用,为了和标准RS-232-C串行设备通信,采用了一块SP3243或MAX3223芯片用于电平的转换。将微处理器中的逻辑1信号变成-3V-15V,将微处理器中的逻辑0信号变成+3V+15V电平进行通信。,(3)RS-232串行接口电路设计,115,RS232 串口电路的设计(9线方式),116,RS232 串口电路的设计(3线方式),117,(4)嵌入式开发板与PC机的串行通讯,嵌入式开发板和PC机的通讯电缆可以按照如图所示的方式连接。,118,嵌入式开发板与PC机的串行通讯,由于RS232标准所定的高低电平与嵌入式系统所用的LVTTL定义的高低信号完全不同,LVTTL的标准所定义逻辑1对应2V3.3V电平,逻辑0对应0V0.4V电平,而RS232C标准采用负逻辑方式,逻辑1对应-3V-15V电平,逻辑0对应+3V+15V电平,显然两者之间要进行通信必须经过信号电平的转换,常使用的电平转换电路为MAX3223。,119,4.3.3 A/D转换接口,模数转换器(ADC或A/D)将模拟信号转为数字信号,而数模转换器(DAC或D/A)正好相反。这些转换对嵌入式系统而言是必要的,因为嵌入式系统要处理数字值,而系统所处环境中一般有很多模拟信号。模拟信号是具有连续值的信号,例如温度或速度,其可能值有无限多;数字信号是具有离散值的信号,例如整数,在计算系统中,数字信号可以用二进制编码表示。有了模拟信号和数字信号之间的转换,就可以将数字处理器用于模拟环境中。,120,逐次逼近型的A/D转换器,主要由逐次逼近寄存器SAR、D/A转换器、比较器以及时序和控制逻辑等部分组成。它的实质是逐次把设定的SAR寄存器中的数字量经D/A转换后得到电压Vc,与待转换模拟电压Vx进行比较。比较时,先从SAR的最高位开始,逐次确定各位的数码应是“1”还是“0”,其工作过程如下:转换前,先将SAR寄存器各位清零。转换开始时,控制逻辑电路先设定SAR寄存器的最高位为“1”,其余位为“0”,此试探值经D/A转换成电压Vc,然后将Vc与模拟输入电压Vx比较。,1、逐次逼近型的A/D转换器工作原理,121,逐次比较式A/D内部结构图,V,A,D/A,122,A/D转换的工作原理,如果VxVc,说明SAR最高位的“1”应予保留;如果VxVc,应予清零。然后再对SAR寄存器的次高位置“1”,依上述方法进行D/A转换和比较。如此重复上述过程,直至确定SAR寄存器的最低位为止。此过程结束后,状态线改变状态,表明已完成一次转换。,最后,逐次逼近寄存器SAR中的内容就是与输入模拟量V相对应的二进制数字量。显然A/D转换器的位数N决定于SAR的位数和D/A的位数。转换结果能否准确逼近模拟信号,主要取决于SAR和D/A的位数。位数越多,越能准确逼近模拟量,但转换所需的时间也越长。,123,2、,S3C440BX的,A/D转换接口,例如 S3C440BX芯片内部就自带一个路A/D转换器,其内部由8通道多路复用模拟输入端、自动调零比较器、时钟发生器、10位连续寄存器和输出寄存器组成。该转换器是属于逐次逼近SAR型的,可以通过软件设置为Sleep摸式,可以节电减少功率损失。最大转换率为100Ksps;输入电压范围0-2.5V;分辨率10位;输入带宽0-100HZ(无采样/保持电路)。ARM芯片与A/D功能有关的引脚:AIN7:0为8路摸拟采集通道,ADC的模拟输入;AREFT为参考正电压,AREFB为参考负电压,AVCOM为摸拟公共参考电压。,124,3、S3C2410X的A/D 转换器,S3C2410X中集成了一个通道10 位A/D 转换器,A/D 转换器自身具有采样保持功能。并且S3C2410X的A/D 转换器支持触摸屏接口。,A/D转换器的主要特性:,分辨率:10位;精度:1LSB,线性度误差:1.5-2.0LSB;,最大转换速率:500KSPS;,输入电压范围:03.3v;,系统具有采样保持功能;,常规转换和低能源消耗功能;,独立/自动的X/Y 坐标转换模式。,125,1)A/D转换器结构与工作原理,下图为S3C2410 A/D 转换器和触摸屏接口的功能块图。,(1)结构,主要由6部分构成:,信号输入通道,8转1切换开关,A/D转换器,控制逻辑,中断信号发生器,触摸屏接口,126,(2)工作原理,(1)A/D 转换时间计算和分辨率,当PCLK 频率为50MHz,预分频值是49,10 位数字量的转换时间如下:,A/D 转换频率=50MHz/(49+1)=1MHz,转换时间=1/(1MHz/5 个周期)=1/200KHz=5us,A/D 转换器最大可以工作在2.5MHz 时钟下,所以转换,速率可以达到500KSPS,。,(2)触摸屏的结构及工作原理,原理:,对于电阻式触摸屏,由3层透明薄膜构成,有一层是电阻层,还有一层是导电层,它们中间有一隔离层,当某一点被按压时,在按压点电阻层与导电层接触,如果在电阻层的一边接电源,另一边接地,便可测量出按压点的电压,从而可算出其坐标。,实现方法:,127,测量X坐标:,从XP输出电压给X+端,从XM输出地电位给X-端;从YP脚输入按压点电压。,控制信号:nYPON=1;nYMON=0,nXPON=0;nXMON=1,测Y,测X,128,测量Y坐标:,从YP输出电压给Y+端,从YM输出地电位给Y-端;从XP脚输入按压点电压。,控制信号:nYPON=0;nYMON=1,nXPON=1;nXMON=0,测Y,测X,129,2)S3C24120X A/D转换器的工作模式,有5种:普通转换模式、分离的X/Y坐标转换模式、连续的X/Y坐标转换模式、等待中断模式、静态模式。第2-4种是用于触摸屏。,(1)普通转换模式,用于一般A/D转换,不是用于触摸屏。转换结束后,其数据在ADCDAT0中的XPDATA域。,(2)分离的X/Y坐标转换模式,分两步进行X/Y坐标转换,其转换结果分别存于ADCDAT0中的XPDATA域中和ADCDAT1中的YPDATA域中,并且均会产生INT_ADC中断请求。,(3)自动(连续)的X/Y坐标转换模式,X坐标转换结束启动Y坐标转换,其转换结果分别存于ADCDAT0中的XPDATA域中和ADCDAT1中的YPDATA域中,然后产生INT_ADC中断请求。,130,(4)等待中断转换模式,在该模式下,转换器等待使用者按压触摸屏,一旦触摸屏被按压,则产生INT_TC触摸屏中断请求。,中断后,在中断处理程序中再将转换器设置为分离的X/Y坐标转换模式、或者连续的X/Y坐标转换模式进行处理。,触摸屏接口信号:,XP=上拉XM=高阻,YP=AIN5YM=接地,(5)静态模式,当ADCCON中的STDBM设为1时,转换器进入静态模式,停止A/D转换。其数据域的数据保持不变。,131,3)ADC和触摸屏专用寄存器,有5个专用寄存器,Register,Address,R/W,Description,Reset Value,ADCCON,0 x58000000,R/W,ADC控制寄存器,0 x3FC4,ADCTSC,0 x58000004,R/W,触摸屏控制寄存器,0 x058,ADCDLY,0 x58000008,R/W,ADC起始延迟寄存器,0 x00FF,ADCDAT0,0 x5800000C,R,ADC转换数据0寄存器,-,ADCDAT1,0 x58000010,R,ADC转换数据1寄存器,-,132,ECFLG-转换结束标志,(只读),0:转换操作中;1:转换结束,PRSCEN-转换器预分频器使能,0:停止预分频器;1:使能预分频器,PRSCVL-转换器预分频器数值,数值N范围:1-255,注意,:(1)实际除数值为N+1,(2)对N数值的要求:转换速率应该PCLK/5,(1)ADCCON-ADC控制,寄存器,15,14,13 6,ECFLG,PRSCEN,PRSCVL,5,4,3,2,1,0,SEL_MUX,STDBM,READ_START,ENABLE_START,133,SEL_MUX-模拟输入通道选择,000:AIN0;001:AIN1010:AIN2,011:AIN3111:AIN7,STDBM-备用模式设置,0:正常工作模式;1:备用模式,不做A/D转换,READ_START-通过读取启动转换,0:停止通过读取启动转换;1:使能通过读取启动转换,ENABLE_START-通过设置该位启动转换,0:无效;1:启动A/D转换(启动后被清0),注意,:如果,READ_START为,1,则该位无效,5,4,3,2,1,0,SEL_MUX,STDBM,READ_START,ENABLE_START,134,YM_SEN-选择YMON的输出值,0:输出0(YM=高阻);1:输出1(YM=GND),YP_SEN-选择nYPON的输出值,0:输出0(YP=外部电压);1:输出1(YP连接AIN5),XM_SEN-选择XMON的输出值,0:输出0(,XM=高阻);1:输出1(XM=GND),XP_SEN-选择nXP的输出值,0:输出0(XP=外部电压);1:输出1(XP连接AIN7),(2)ADCTSC-ADC,触摸屏控制寄存器,8,7,6,5,4,3,2,1,0,保留0,YM_SEN,YP_SEN,XM_SEN,XP_SEN,PULL_UP,AUTO_PST,XY_PST,135,PULL-上拉切换使能,0:XP上拉使能;1:XP上拉禁止,AUTO_PST-自动连续转换X轴和Y轴坐标模式选择,0:普通A/D转换;1:连续X/Y轴转换模式,XY_PST-手动测量X轴和Y轴坐标模式选择,00:无操作模式;01:对X坐标测量;,10:对X坐标测量;11:等待中断模式,8,7,6,5,4,3,2,1,0,保留0,YM_SEN,YP_SEN,XM_SEN,XP_SEN,PULL_UP,AUTO_PST,XY_PST,136,31 16,15,14,13,12,11,10,9,8,8,7,6,5,4,3,2,1,0,保留为0,起始延迟数值-分两种情况,第一情况:,对普通转换模式、分离的X/Y轴坐标转换模式、连续的X/Y轴坐标转换模式,,为转换延时数值,。,第二种情况:,对中断转换模式,,为按压触摸屏后到产生中断请求的延迟时间数值,,其时间单位为ms,。,(3)ADCDLY-ADC,起始延迟寄存器,137,UPDOWN-等待中断模式的按压状态,0:触笔点击;1:触笔提起,AUTO_PST-自动X/Y轴转换模式指示,0:普通转换模式;1:X/Y轴
展开阅读全文