




已阅读5页,还剩169页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,4.4 处理器接口电路、中断系统的设计,4.4.1 通用输入/输出接口GPIO设计 4.4.2 中断系统设计 4.4.3 串行接口设计 4.4.4 USB接口设计 4.4.5 JTAG接口设计 4.4.6 A/D转换接口设计,2,4.4.1 通用输入/输出接口GPIO,嵌入式系统的GPIO接口引脚数量较多,例如,S3C44BO有71个,S3C2410有117个,PXA255有84个GPIO管脚, PXA270有120个GPIO管脚。它们与处理器之间的连接一般不使用系统总线,而是直接连接在处理器的引脚上。每个I/O引脚可被编程设置成为普通的输入或输出状态。如被作为输入端时,该GPIO管脚可被设置工作在中断方式或查询方式。但当系统被复位后,所有的GPIO管脚的默认值为输入状态。有些GPIO管脚还通过设置具有第二功能。 每个处理器内的GPIO又分成若干个组(端口),每组称为一个I/O接口。每个接口含有10-20多个引脚不等。,1、I/O系统工作过程,I/O系统的初始化,设备打开,设备关闭,设备读,设备写,设备控制,设备管理初始化,驱动逻辑初始化,硬件抽象初始化,完成设备管理相关信息的初始化,如创建驱动程序地址表、设备名表、文件记录表等,实现系统中各驱动程序的注册,即把系统中各驱动程序注册到设备管理中,主要完成设备注册,4,I/O系统工作过程,关闭设备 系统调用close( )关闭一个不再使用的设备,关闭一个设备时,I/O系统的内部运作过程和写一个设备大致相同,不同的是I/O系统根据设备名表中的主设备号在驱动程序地址表中定位并调用驱动程序的xxx_close( )函数,然后释放文件表中的记录,返回。在此之后对该文件描述符的任何引用都将返回错误。但是随后的open( )系统调用将仍然返回该文件描述符。,5,1) GPIO的配置,GPIO接口的控制器通常集成在处理器芯片内部。在系统启动时应对它们进行正确设置,GPIO的设置需要用到三组特殊功能寄存器来定义I/O引脚的具体功能。第一组时端口配置寄存器组(PCONA-PCONG),第二组是端口数据寄存器组(PDATA-PDATG),第三组是端口上拉电阻设置寄存器(PUPA-PUOG),其中A-G为端口序号。如: GPDR(方向寄存器):负责设置GPIO的输入、输出功能。 GPSR(输出置位寄存器):在输出模式下,可以通过GPSR设置GPIO管脚上的高电平值。 GPCR (输出清零寄存器):在输出模式下,可以通过GPCR设置GPIO管脚为低电平值。,6,GPLR(引脚状态寄存器):当某管脚设置为输入模式时,读GPLR(引脚状态寄存器)的内容可以反映当前GPIO管脚的状态。 GPER是探测上升沿使能的专用寄存器; GFER是探测下降沿使能的专用寄存器; GEDR是探测上升下降沿使能的专用寄存器; GAFR是设置第二功能寄存器。,7,2)GPIO的设计要求,在并行信号传输线中,一般有数据线、控制线和电源线。由于每条数据导线传输一个数据位,这时要求数据总线长度必须较短,否则长的导线会导致有较高的寄生电容值,影响数据的传输速度。 此外,并行总线中各导线长度上的小差异,也可能导致所接受的数据字各位的抵达时间不同,影响数据的准确性。 基于ARM的处理器内核和处理器核一般都没有I/O总线部件,需要通过先进微控制总线架构AMBA来扩展宏单元和总线I/O部件,为微处理器提供32位地址信号、32位数据信号和读/写、时钟、外围复位、选通等控制信号。,8,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)。,9,举例,PXA27X处理器提供了120个的GPIO,其分组如下: 端口A通用目地的I/O; 端口B可选输入功能; 端口C可选输入功能; 端口D可选输入功能; 端口E可选输出功能; 端口F可选输出功能; 端口G可选输出功能。,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功能、中断功能等等。,1)端口寄存器及引脚配置 每一个端口都有4个寄存器,它们是:引脚配置寄存器、数据寄存器、引脚上拉寄存器等。,GPADAT寄存器为准备输出的数据 其值为23位22:0 注意: (1)当A口引脚配置为非输出功能时,其输出无意义; (2)从引脚输入没有意义。,(1)端口A寄存器及引脚配置,端口A寄存器及引脚配置,GPBDAT-为准备输出或输入的数据 其值为11位10:0 GPBUP-端口B上拉寄存器,位10:0有意义。 0:对应引脚设置为上拉 1:无上拉功能 注意: 当B口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,(2)端口B寄存器及引脚配置,端口B引脚配置寄存器,GPCDAT-为准备输出或输入的数据 其值为16位15:0 GPCUP-端口C上拉寄存器,位15:0有意义。 0:对应引脚设置为上拉 1:无上拉功能 注意: 当C口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,(3)端口C寄存器及引脚配置,端口C引脚配置寄存器,GPDDAT-为准备输出或输入的数据 其值为16位15:0 GPDUP-端口D上拉寄存器,位15:0有意义。 0:对应引脚设置为上拉 1:无上拉功能 初始化时,15:12无上拉功能,而11:0有上拉 注意: 当D口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,(4)端口D寄存器及引脚配置,端口D引脚配置寄存器,GPEDAT-为准备输出或输入的数据 其值为16位15:0 GPEUP-端口E上拉寄存器,位15:0有意义。 0:对应引脚设置为上拉 1:无上拉功能 初始化时,各个引脚都有上拉功能。 注意: 当E口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,(5)端口E寄存器及引脚配置,端口E引脚配置寄存器,GPFDAT-为准备输出或输入的数据 其值为8位7:0 GPFUP-端口F上拉寄存器,位7:0有意义。 0:对应引脚设置为上拉 1:无上拉功能 初始化时,各个引脚都有上拉功能。 注意: 当F口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,(6)端口F寄存器及引脚配置,端口F引脚配置寄存器,GPGDAT-为准备输出或输入的数据 其值为16位15:0 GPGUP-端口G上拉寄存器,位15:0有意义。 0:对应引脚设置为上拉 1:无上拉功能 初始化时,15:11引脚无上拉功能,其它引脚有。 注意: 当G口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,(7)端口G寄存器及引脚配置,端口G引脚配置寄存器,LCD-PEN:POWER_ENABLE,nSS0:SPI0_SELECT,GPHDAT-为准备输出或输入的数据 其值为11位10:0 GPHUP-端口H上拉寄存器,位10:0有意义。 0:对应引脚设置为上拉 1:无上拉功能 注意: 当H口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,(8)端口H寄存器及引脚配置,端口H引脚配置寄存器,UCLK为USB的,(9)端口其它控制寄存器,nEN_SCKE-SCLK使能位。在电源关闭模式下对SDRAM做保护 0: 正常状态 1:低电平 nEN_SCLKx-SCLKx使能位。在电源关闭模式下对SDRAM做保护 0:SCLKx= SCLK 1:低电平 nRSTCON-对nRSTOUT软件复位控制位 0:使nRSTOUT为低,0;1:使nRSTOUT为高,1,MISCCR-混合控制寄存器,USBSUSPND1-USB端口1模式 0:正常 1:浮空 USBSUSPND0-USB端口0模式 0:正常 1:浮空 CLKSEL1 - CLKOUT1引脚输出信号源选择 000:MPLL CLK 001:UPLL CLK 010:FCLK 011:HCLK 100:PCLK 101:DCLK1 11x:保留 CLKSEL0 - CLKOUT0引脚输出信号源选择 000:MPLL CLK 001:UPLL CLK 010:FCLK 011:HCLK 100:PCLK 101:DCLK0 11x:保留,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:无上拉,DCLKCON-D时钟控制寄存器,DCLK1(0)CMP-DCLK1(0)低电平时间所占的比例数。 设该位值为m,m DCLK1(0)DIV。 则低、高电平持续时间的源周期数分别为: m+1、DCLK1(0)DIV-m DCLK1(0)DIV-DCLK1(0)分频值 DCLK1(0) frequency = source clock / ( DCLK1(0)DIV + 1 ),DCLKCON-D时钟控制寄存器(续),DCLK1(0)SelCK-DCLK1(0) source clock 选择 0 : 源时钟选择PCLK 1:源时钟选择UCLK ( USB ) DCLK1(0)EN-DCLK1(0) Enable 0:禁止 1:允许,主要设置各个外中断源的触发方式、滤波,(10)外中断控制寄存器,EINT07-中断请求信号触发方式选择 000:低电平触发 001:高电平触发 01x:下降沿触发 10x:上升沿触发 11x:双边沿触发 第3、7、11、15、19、23、27、31位-保留,EXTINT0-外中断触发方式控制寄存器0,EINT815-中断请求信号触发方式选择 000:低电平触发 001:高电平触发 01x:下降沿触发 10x:上升沿触发 11x:双边沿触发 第3、7、11、15、19、23、27、31位-保留,EXTINT1-外中断触发方式控制寄存器1,EINT1623-外中断请求信号触发方式选择 000:低电平触发 001:高电平触发 01x:下降沿触发 10x:上升沿触发 11x:双边沿触发 第3、7、11、15、19、23、27、31位-为FILTEN 各引脚滤波控制位 0:禁止滤波 1:使能滤波,EXTINT2-外中断控制寄存器2,主要设置各个外中断源的滤波器设置,(11)外中断滤波控制寄存器,FLTCLK1619-外中断1619滤波器时钟选择 0:PCLK 1:外部/振荡时钟(由OM引脚选择) EINTFLT1619-外中断1619滤波器宽度(频带宽度),EINTFLT2-外中断滤波控制寄存器2,FLTCLK2023-外中断2023滤波器时钟选择 0:PCLK 1:外部/振荡时钟(由OM引脚选择) EINTFLT2023-外中断2023滤波器宽度(频带宽度),EINTFLT3-外中断滤波控制寄存器3,(12)外中断屏蔽、标志寄存器,外中断屏蔽寄存器,各位: 0:允许中断 1:禁止中断 注意: EINT0- EINT3不能在此被屏蔽,在SRCPND中屏蔽。,外中断标志寄存器,各位: 0:无中断请求 1:有中断请求 注意:对某位写1,则清除相应标志,即清为0.,GSTATUS3、4: 复位时被清0,其它情况下其数据不变。 用户可以用于保存数据。,(13)外中断状态寄存器,nWEIT-引脚nWEIT状态 nCON-引脚nCON状态 RnB-引脚R/nB状态 nBATT_FLT-引脚nBATT_FLT状态 注意:各位的数值0、1,随着对应引脚变化。,GSTATUS0-外部引脚状态寄存器,WDTRST-上电复位控制状态 1:出现了上电复位 对该位写,则将该位清0 OFFRST-掉电模式复位状态。 1:系统出现了从掉电模式唤醒复位 对该位写,则将该位清0 PWRST-看门狗复位状态 1:系统出现了看门狗定时器复位 对该位写,则将该位清0,GSTATUS2-复位状态寄存器,第13讲到此,外中断举例 static void _irq Eint0Int(void) ClearPending(BIT_EINT0); Uart_Printf(“EINT0 interrupt is occurred.n“); static void _irq Eint1Int(void) ClearPending(BIT_EINT1); Uart_Printf(“EINT1 interrupt is occurred.n“); #define ClearPending(bit) rSRCPND = bit; rINTPND = bit; rINTPND; ,void Test_Eint(void) int i; int extintMode; /选择外中断触发方式变量 Uart_Printf(“External Interrupt Testn“); Uart_Printf(“1.L-LEVEL 2.H-LEVEL 3.F-EDGE 4.R-EDGE 5.B-EDGEn“); Uart_Printf(“Select the external interrupt type.n“); extintMode=Uart_Getch(); /extintMode=3; rGPFCON = (rGPFCON / 设置引脚配置,F0、F1配置为EINT0/1,switch(extintMode) case 1: rEXTINT0 = (rEXTINT0 ,case 4: rEXTINT0 = (rEXTINT0 ,Uart_Printf(“Press the EINT0/1 buttons or Press any key to exit.n”); /设置中断向量 pISR_EINT0=(U32)Eint0Int; /将中断处理程序的开始 pISR_EINT1=(U32)Eint1Int; /地址送到中断向量表 rEINTPEND = 0xffffff; /清除EINTPND需要向其中写入数 据。因此这句代码的含义是清除EINTPND。 rSRCPND = BIT_EINT0|BIT_EINT1; /to clear the previous pending states rINTPND = BIT_EINT0|BIT_EINT1; rINTMSK=(BIT_EINT0|BIT_EINT1); Uart_Getch(); rEINTMASK=0xffffff; rINTMSK=BIT_ALLMSK; ( void Test_Eint(void)函数结束) 注释:#define BIT_ALLMSK (0xffffffff),52,4.4.2 中断异常方式的设计,嵌入式系统中一般具有与硬件、软件相关的中断源、软件错误相关的中断源、为调试程序而设置的中断源和系统分时所用的中断源。还有具有快速中断源FIQ和一般I/O中断源IRQ。执行中断要经过三个环节:中断响应、中断处理和中断返回。 注意:在使用I/O中断处理事件比较频繁的场合时,会很明显地影响嵌入式系统的性能。因此,微处理器内部包含有直接存储控制通道DMA。这样使用DMA方式,I/O的数据块传送至存储器的缓冲器区域就不需要微处理器介入,提高了微处理器的工作效率。,53,1、 中断方式处理过程,在系统对外部事件做出反应的过程中,中断响应是第一个环节,主要的任务是确定中断源。然后根据中断源指引CPU进入具体的中断处理程序。由于芯片的引线数量受到的限制,因此很难为CPU芯片带足够多的中断请求线。这样一来,为了确定中断源的来源,就需要采用如下的辅助的手段,来实现这个功能。,辅助手段有以下二种形式:,(1) CPU在响应中断时,进入一个特殊的中断响应周期,并向外发一个“中断响应(ACK)”信号,同时要求中断源通过数据总线提供 一个“中断向量”。为了防止多个外设同时发出中断向量而形成冲突的情况,还需要把所有可能成为中断源的设备连接成一条“中断链”,在“中断链”的不同位置应具有不同的优先级。 (2)在外部提供一个“集线器”,称为“中断控制器”。它为外设提供多条中断请求线,但是将这些中断请求线(相或)合并成一条。与此同时,在中断控制器中还要提供一个寄存器,记录当前的(综合)中断请求来自哪条外部中断请求线,而CPU则可以像访问外设一样读出这个寄存器的内容,以确定中断请求的来源。,55,1) GPIO中断接口分类,GPIO是一个通用的可编程的I/O接口,其接口寄存器中的每一位都可以分别在程序的控制下设置成用于输入或者输出。而且,当用于输入的时候,还可以让每一位的状态变化都引发一个中断请求。 例如S3C44BOX具有30个中断源,包括1个看门狗定时器,6个定时器,6个UART,8个外部,4个DMA,2个RTC,1个ADC,1个IIC和1个SIO中断源。,56,S3C44B0X中断系统举例,S3C44B0X支持的中断处理模式称为矢量中断模式。中断控制器的角色,就是响应来自FIQ或IRQ的中断,并请求内核对中断进行处理。 多个中断请求发生时,由硬件优先级逻辑确定应该有哪个中断源得到服务,同时硬件逻辑使中断向量表该中断矢量被自动加载到该中断源的入口地址(如0X18或0X1C)位置,在该位置执行跳转指令使程序跳到相应的中断服务线程。,57,2)控制中断的寄存器,(1)中断控制寄存器 (2)中断请求寄存器 (3)中断模式寄存器 (4)中断屏蔽寄存器 (5)IRQ矢量模式寄存器 (6)IRQ/FIQ中断服务寄存器 (7)外部中断控制寄存器 (8)外部中断请求寄存器,58,3)系统异常中断种类,复位中断(reset) 未定义的指令中断 软件中断 指令预取中止 数据访问中止 外部中断请求 快速中断请求 异常是由内部或外部源产生的,需要处理器处理的一个事件。,59,中断向量表,当一个中断发生以后,ARM 处理器便强制把PC 指针置为向量表中对应中断源的地址值。因为每个中断只占据向量表中一个字的存储器空间,只能放置一条ARM指令,所以通常在向量表中放的是跳转指令,使程序能从向量表里跳转到存储器的其他地方,再执行中断处理。 ARM要求中断向量表必须放置在从0地址开始,连续84 字节的空间内。各个中断矢量在向量表中的位置分配如下图所示。,中断向量表,中断矢量地址表,每个中断源对应的矢量地址,62,4)外部中断的应用,(1) I/O口设置 首先对PG口的工作模式进行设置,要让PG47工作在外部中断输入状态。因此,要将PG口设置在功能3模式下,采用语句: rPCONG= 11 11 11 11 xx xxxxxxB; 如果希望采用内部上拉,则语句为: rPUPG= 0000xxxxB。 (2)外部中断触发模式设置利用外部中断控制寄存器来设置外部中断的触发模式。由于采用电平触发容易引起重复触发,因此建议采用下降沿或上升沿触发,不同触发方式的语句如下:,63,外部中断的应用,采用下降沿触发时: rEXTINT= 01x 01x 01x 01x xxx xxxxxxxxxB; 采用上升沿触发时: rEXTINT=10x 10x 10x 10x xxx xxxxxxxxxB; 采用边沿触发时: rEXTINT=11x 11x 11x 11x xxx xxxxxxxxxB; 采用低电平触发时: rEXTINT=000 000 000 000 xxx xxxxxxxxxB;,64,S3C2410X中断控制器有56个中断源,对外提供24个外中断输入引脚,内部所有设备都有中断请求信号,例如DMA控制器、UART、IIC等等。 S3C2410X的ARM920T内核有两个中断,IRQ中断和快速中断FIQ。 中断仲裁:当中断控制器接收到多个中断请求时,其内的优先级仲裁器裁决后向CPU发出优先级最高的中断请求信号或快速中断请求信号。,2、S3C2410中断系统简介,(1)S3C2410X中断系统结构 主要由中断源和控制寄存器两大部分构成,其寄存器主要有4种:模式、屏蔽、优先级、挂起(标志)寄存器等。,(2)中断优先级仲裁器及工作原理,中断系统有6个分仲裁器和1个总仲裁器,每一个仲裁器可以处理6路中断。,(3)中断控制器专用寄存器 有8个专用寄存器,主要使用前5个寄存器,该寄存器也就是中断标志寄存器 各位: 1:对应中断源有中断请求 0:对应中断源无中断请求 注意:必须在中断处理程序中对其标志位清0。其方法为写1.,SRCPND-中断源挂起(标志)寄存器,该寄存器是设置各中断源是FIQ中断还是IRQ中断 各位: 1:对应中断源设为FIQ中断模式 0:对应中断源设为IRQ中断模式,INTMOD-中断模式寄存器,各位: 1:屏蔽对应中断源 0:开放对应中断源,INTMSK-中断屏蔽寄存器,PRIORITY-中断优先级寄存器,ARB_SELn-n组优先级顺序控制位 00:REQ0, 1, 2, 3, 4, 5 01:REQ0, 2, 3, 4, 1, 5 10:REQ0, 3, 4, 1, 2, 5 11:REQ0, 4, 1, 2, 3, 5 ARB_MODEn-n组优先级循环控制位 0:优先顺序固定不变 1:优先顺序循环,每响应一次中断,其顺序循环改变一次,但REQ0、REQ5位置不变。,各位: 1:对应的中断源被响应,且正在执行中断服务 0:对应中断源未被响应 注意:必须在中断处理程序中对其服务标志位清0。方法为对某位写1便清除为0。 即在清除SRCPND中相应位后,要清除该寄存器相应位。,INTPND-中断服务(挂起)寄存器,该寄存器的偏移值指示在INTPND中显示的中断源 各位: 1:对应的中断源,在INTPND中被置位 说明:当在中断服务程序中对SRCPND、INTPND中的标志位清0时,该寄存器的对应位自动清0。,INTOFFSET-中断偏移寄存器,SUBSRCPND-子中断源请求标志寄存器,对有多个中断源的外设,显示其具体的中断请求 各位: 1:对应的子中断源有请求 0:对应的子中断源无请求 注意:在中断服务程序中,需要对其置1的标志位清0。,INTSUBMSK-子中断源屏蔽寄存器,对有多个中断源的外设,对具体的中断源进行屏蔽 各位: 1:屏蔽对应的子中断源 0:开放对应的子中断源,在2410init.s文件中与的中断初始化部分 程序开始及中断入口 b ResetHandler b HandlerUndef ;handler for Undefined mode b HandlerSWI ;handler for SWI interrupt b HandlerPabort ;handler for PAbort b HandlerDabort ;handler for DAbort b . ;reserved b HandlerIRQ ;handler for IRQ interrupt b HandlerFIQ ;handler for FIQ interrupt 本段意义:利用后面定义的宏来展开上面各行,使其进入它们所对应的中断服务子程序。,中断举例,77,LTORG ;声明一个数据缓冲池的开始 HandlerFIQ HANDLER HandleFIQ HandlerIRQ HANDLER HandleIRQ HandlerUndef HANDLER HandleUndef HandlerSWI HANDLER HandleSWI HandlerDabort HANDLER HandleDabort HandlerPabort HANDLER HandlePabort 本段意义:利用后面定义的宏来展开上面各行,使其进入它们所对应的中断服务子程序,;本宏意义:转到相应中断服务子程序去执行 MACRO $HandlerLabel HANDLER $HandleLabel ;如Label=IRQ , ( HandlerIRQ ) $HandlerLabel sub sp,sp,#4 stmfd sp!,r0 ldr r0,=$HandleLabel ldr r0,r0 str r0,sp,#4 ldmfd sp!,r0,pc MEND,IRQ中断服务程序 IsrIRQ sub sp,sp,#4 ;reserved for PC stmfd sp!,r8-r9 ldr r9,=INTOFFSET ;中断偏移寄存器 ldr r9,r9 ldr r8,=HandleEINT0 ;中断向量表首地址 add r8,r8,r9,lsl #2 ldr r8,r8 str r8,sp,#8 ldmfd sp!,r8-r9,pc 本段意义:根据中断服务号,转去执行相应的中断处理程序段。,;中断向量表IntVectorTable HandleEINT0 # 4 HandleEINT1 # 4 HandleEINT2 # 4 HandleEINT3 # 4 HandleEINT4_7 # 4 HandleEINT8_23 # 4 HandleRSV6 # 4 HandleBATFLT # 4 HandleTICK # 4 HandleWDT # 4 HandleTIMER0 # 4 HandleTIMER1 # 4 ,81,4.4.3 嵌入式微处理器串行接口,串行接口的本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。串口是系统资源的一部分,应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。,1、通用异步接收、发送器UART,UART的基本任务有: 实现数据格式化。异步方式下接口自动生成起、止位的帧数据格式。在面向字符的同步方式下,接口要在待发送的数据块前加上同步字符。 进行串并转换。 控制数据传输速度。即对波特率进行选择控制。 进行错误检测。在发送时自动生成奇偶校验或其他校验码。在接收时,检查字符的奇偶校验或其他校验码,确定是否发生传输错误。 UART输出的是TTL电平信号,经过专用转换电路,可以方便的实现RS-232通信方式。,83,例如1:S3C44BOX内部集成的UART,S3C44B0X UART单元提供了两个通用异步串口,每个串口可以操作在中断模式或DMA模式,支持波特率最大为115.2kbps, 每个通道包含都有一个16字节的接收与发送FIFO缓冲区。 每个UART模块包含以下几个部件:波特率发生器,发送器,接收器和控制单元。,例如2、 S3C2410处理器内部UART设计 S3C2410 的UART(通用异步串行口)有三个独立的异步串行I/O 端口:UART0、UART1、UART2,每个串口都可以在中断和DMA 两种模式下进行收发。UART支持的最高波特率达230.4kbps。 每个UART 包含:波特率发生器、接收器、发送器和控制单元。波特率发生器以PCLK或UCLK为时钟源。发送器和接收器各包含1个16 字节的FIFO 寄存器和移位寄存器。 S3C2410 的3个UART都有遵从1.0规范的红外传输功能, UART0、UART1有完整的握手信号,可以连接MODEM。 当发送数据的时候,数据先写到FIFO 然后拷贝到发送移位寄存器,然后从数据输出端口(TxDn)依次被移位输出。被接收的数据也同样从接收端口(RxDn)移位输入到移位寄存器,然后拷贝到FIFO 中。,1)结构和工作原理 (1)结构,主要有4部分构成:接收器、发送器、波特率发生器、控制逻辑等。,接收器/发送器的结构,(2)工作原理 串行口的操作 数据帧格式:可编程,包含1个开始位、5 到8 个数据位、1个可选的奇偶校验位、1个或2个停止位,通过线路控制器(ULCONn)来设置。 发送中止信号:迫使串口输出逻辑0 ,这种状态保持一个传输帧的时间长度。通常在一帧传输数据完整地传输完之后,再通过这个全0 状态将中止信号发送给对方。中止信号发送之后,传送数据连续放到FIFO 中(在不使用FIFO 模式下,将被放到输出保持寄存器)。 接收器具有错误检测功能:可以检测出溢出错误,奇偶校验错误,帧错误和中止状况,每种情况下都会将一个错误标志在接收状态寄存器置位。,串行口的波特率发生器 每个UART 的波特率发生器为传输提供了串行移位时钟。波特率产生器的时钟源可以从S3C2410 的内部系统时钟PCLK或UCLK 中来选择。波特率数值决定于波特率除数寄存器(UBRDIVn)的值,波特率数与UBRDIVn 的关系为: UBRDIVn=(int)(CLK/( f B*16) 1 其中CLK为所选择的时钟频率, f B为波特率。 f B= CLK/16/ ( UBRDIVn 1 ) 例如,如果波特率为115200bps 且PCLK 或UCLK 为40MHz,则UBRDIVn 为: UBRDIVn =(int)(40000000)(115200*16) 1 = (int)(21.7) 1 = 21 1 = 20,串行口波特率误差极限 在应用中,实际波特率往往与理想波特率有差别,其误差不能超过一定的范围,其极限为:UART传输10bit数据的时间误差应该小于1.87(3/160)。 t_true = (UBRDIVn + 1)1610 / PCLK 实际的传输10bit所需时间 t_ideal = 10 / baud_rate 理想情况下传输10位需要的时间 UART error( ( t_true t_ideal ) / t_ideal )100%,串行口的自动流控制功能 UART0和UART1不仅有完整的握手信号,而且有自动流控制功能,在寄存器UMCONn中设置实现。自动流控制是利用信号nRTS、nCTS来实现的。在接收数据时,只要接收FIFO中有两个空字节就会使nRTS有效,使对方发送数据;在发送数据时,只要nCTS有效,就会发送数据。其实现过程如下图所示。 nRTS:请求对方发送 nCTS:清除请求发送 注意:这种自动流控制应用于对方也是UART设备,不能应用于MODEM设备。,使用FIFO进行收发 主要是通过对FIFO状态寄存器UFSTATn的查询,确定进行收发。 使用FIFO进行发送: (1)选择发送模式(中断或者DMA模式) (2)查询对方是否有请求发送要求,由MODEM状态寄存器UMSTATn0给出,该位为1,则有请求,再查询FIFO状态寄存器UFSTATn的数据满状态位是否为1,如果不是1,可以向发送缓冲寄存器UTXHn写入发送的数据。上面二者有一个或者两个都不满足,则不发送数据。 使用FIFO进行接收(请求发送): (1)选择接收模式(中断或者DMA模式) (2)请求发送。先要查询FIFO状态寄存器UFSTATn的数据满状态位是否为1,如果不是1,则可以向对方发出“请求发送信号”,对MODEM控制寄存器MCONn中的请求发送信号产生位置1,使UARTn发出nRTS信号;如果UFSTATn的数据满状态位是1,则不能够请求发送数据。,不使用FIFO进行收发 主要是通过对收/发状态寄存器UTRSTATn的查询,确定进行收发。 数据发送: 选择发送模式(中断或者DMA模式) 查询对方是否有请求发送要求,由MODEM状态寄存器UMSTATn0给出,该位为1,则有请求,再查询发送/接收状态寄存器UTRSTATn1的“发送缓冲器空”状态位是否为1,如果是1,可以向发送缓冲寄存器UTXHn写入发送的数据。 数据接收(请求发送): 选择接收模式(中断或者DMA模式) 请求发送。先要查询发送/接收状态寄存器UTRSTATn0的接收缓冲器“数据就绪状态位”是否为1,如果是1,需要先读取数据,然后再请求对方发送数据,方法是对MODEM控制寄存器MCONn中的请求发送信号产生位置1,使UARTn发出nRTS信号。如果UFSTATn的数据满状态位是1,则不能够请求发送。,中断或DMA请求 每个UART都有3类、7种事件产生中断请求或者DMA请求。 7种中断请求事件是:溢出错误、奇偶校验错误、帧格式错误、传输中断信号、接收缓冲器数据就绪、发送缓冲器空、发送移位器空。 它们可以分成3类:错误中断请求、接收中断请求、发送中断请求。 接收中断: 非FIFO模式:当接收缓冲寄存器收到数据后,产生中断请求。 FIFO模式:Rx FIFO中数据的数目达到了触发中断的水平,或者超时(在三帧时间内未收到任何数据),均产生中断请求。 发送中断: 非FIFO模式:当发送缓冲器空时,产生中断请求。 FIFO模式:Tx FIFO中数据的数目达到了触发中断的水平。,错误中断: 一共有4种错误中断:溢出错误、奇偶检验错误、帧格式错误、传输中断信号错误。 非FIFO模式:只要有任何一个错误出现,就会产生中断请求。 FIFO模式:Rx FIFO中数据溢出,或者出现了帧格式错误、奇偶校验错误、传输中断信号错误,都会产生中断请求。 说明: (1)对于“奇偶校验错误、帧格式错误、传输中断信号错误”中断,在数据接收时就产生了,但是在数据接收产生时并非出现中断请求,而是在读出错误数据时才出现中断请求。 (2)如果设置的是DMA模式,而不是中断请求模式,对于以上所出现的中断请求,应该是DMA请求。 (3)传输中断信号定义:在超出一帧的时间内,全部输出低电平。,循环检测模式 S3C2410X的每一个UART都提供有检测功能,它是一种数据循环流动的自发、自收方式,数据从发送缓冲器传送到TXD,数据不经过引脚输出,在内部将数据传到接收引脚RXD,再传输到接收缓冲器。,2)UART专用寄存器 3个UART,每个都有11个专用寄存器,共29个寄存器,(1)线路控制寄存器(ULCON),(2)控制寄存器(UCON),(2)控制寄存器(UCON),(3)FIFO控制寄存器(UFCON),(3)FIFO控制寄存器,(4)MODEM控制寄存器(UMCON),(5)发送/接收状态寄存器(UTRSTAT),(6)Rx错误状态寄存器(UERSTAT),(7)FIFO状态寄存器(UFSTAT),(8)MODEM状态寄存器(UMSTAT),(9)发送缓冲寄存器(UTxH),(10)接收缓冲寄存器(URxH),(11)波特率除数寄存器(UBRDIV),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=0x03 含义:非红外、不校验、 1个停止位、 8个数据位,控制寄存器: UCON2=0b 0 0 0 0 0 0 0 01 01=0x05 含义:选Pclk、发/收中断脉冲请求、关闭接收超时中断、允许接收错误中断、不回送、不发送暂停信号、发/收用中断方式。 FIFO控制寄存器:UFCON2=0b 10 01 0 0 0 1=0x91 含义:发/收FIFO选8字节触发、保留位为0、不复位发/收FIFO、使能FIFO。 (3)引脚配置 需要设置TxD2、RxD2,它们对应GPH6、GPH7,在GPH配置寄存器GPHCON中的位置为: 0b 1 0 1 0 方法:GPHCON= GPHCON&(0xF12)|(0xA12),(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),113,2、RS-232-C串行接口,RS-232-C标准是一种硬件协议,用于连接DTE(数据终端设备)和DCE(数据通信设备)两种设备。规定包括以下三个方面: 机械特性:一般为9针,D型插件; 电气信号特性:负载电容不超过2500P,负载电阻在3K7K欧姆之间,电压在-3V-15V和+3V+15V之间; 交换特性:允许全双工方式。 在实际的应用中,通信距离一般在几十米内,通信速率较低。,114,(1)串行通信概述,串行数据传送模式:单工;半双工;全双工 串行通信方式:同步通信;异步通信 检错是接收端检测在数据字或包传输过程中可能发生的错误的能力。接收端出现的错误一般有奇偶错、帧格式错(总位数不对)、溢出错(先接收的字符尚未被读取,后面的字符又传送过来)。纠错就是通过接收器、发送器合作以进行更正错误的能力。检错和纠错能力通常是总线协议的一部分。,115,(2)检测与校验,校验和是一种更强的检错方式,用于数据包的检查。当使用奇偶校验时,每个字要增加一位,以帮助检错。使用校验和时,每个包要增加一个字,目的也是帮助检错。例如,可以计算数据包中所有数据字的异或和,并将该值与数据包一起发送;接收器在接收到数据包字和检查字后,计算所接收到的所有数据字的异或和,如果所计算的校验和字等于所接受到的校验和字,则认为所接收到的数据包是正确的,否则认为是错误的。同样地,不是所有的错误组合都可以用这种方式检测到。当然,也可以同时使用奇偶校验与校验和两种检错方式,以得到更强的检错能力。,116,如果要将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串行接口电路设计,RS232 串口电路的设计(9线方式),RS232 串口电路的设计(3线方式),(4)嵌入式开发板与PC机的串行通讯,嵌入式开发板和PC机的通讯电缆可以按照如图所示的方式连接。,120,嵌入式开发板与PC机的串行通讯,由于RS232标准所定的高低电平与嵌入式系统所用的LVTTL定义的高低信号完全不同,LVTTL的标准所定义逻辑1对应2V3.3V电平,逻辑0对应0V0.4V电平,而RS232C标准采用负逻辑方式,逻辑1对应-3V-15V电平,逻辑0对应+3V+15V电平,显然两者之间要进行通信必须经过信号电平的转换,常使用的电平转换电路为MAX3223。,121,3、串行外围设备接口SPI,SPI是Motorola公司推出的一种同步串行接口技术,也称为同步串行总线接口。主要用于主从分布式的通信网络,用4根接口线(时钟线SCLK、数据输入线SDI、数据输出线SDO、片选线CS)即可完成主从之间的数据通信。最大数据传输率为5Mbps。 SPI数据的传输格式是最高有效位(MSB)在前、最低有效位(LSB)在后。从设备只有在主控制器发出命令后才能接收或者发送数据。其中,CS的有效与否完全由主控制器来决定,时钟信号也由主控制器发出。,122,4.4.4 通用串行总线USB接口电路设计,USB(Univer Serial Bus)是由Intel、Compaq及Microsoft等公司联合提出的一种新的串行总线标准,主要用于PC机与外围设备的互联。1996年2月发布版本1.0,2000年4月发布版本2.0。 目前,嵌入式系统的USB接口有两种实现方法,一种是处理器自带USB接口控制器,如S3C2410。二是处理器不含有USB接口控制器,需要外接专用的USB接口芯片,如S3C44B0。,123,1、 USB的主要特点,(1)支持即插即用:允许外设在主机和其他外设工作是进行连接配置、使用及移除。无需手动设置地址、中断。支持热插拔,设备不需重新启动便可以工作; (2)传输速率高:支持三种设备传输速率:USB1.1 的速度为1.5Mb/s和12Mb/s; USB2.0实现高达480Mb/s的传输率。在USB 2.0定义了一个与USB1.1相兼容的框架,它可以用USB 2.0的驱动程序驱动USB 1.1的设备。数据传输速度为:低速1.5Mb/s,全速12Mb/s,高速480Mb/s 。USB接口标准统一,使用一个4针插头作为标准。,(3)连接方便、易于扩展:通过串行或者使用集线器Hub连接127个USB设备。 (4)独立供电:USB接口提供了内置电源。不同设备之间基本可以共享接口电缆。在每个端口都可检测终端是否连接或分离,并能区分出高速或低速设备。 USB设备最大的特点就是即插即用,这是因为USB协议规定在主机启动或USB设备插入系统时都要对设备进行配置。就是按照USB协议,在USB主机与USB设备之间进行的一系列“问答”过程。从而主机知道了设备的情况以及该如何与设备通讯,并为设备设置一个唯一的地址。 对于标准USB设备,操作系统带有它的驱动。但对于非标准设备,需要编写专门的驱动程序来实现对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 摩根士丹利-中国电商行业2025年第二季度财报前瞻 China E-Commerce - What to expect from 2Q25 prints
- 2025年初中美术特岗教师招聘考试备考策略及模拟题解析
- 2025年物业管理实务中级面试模拟题集与答案解析
- 2025年高级炼油操作工常见问题解答及面试注意事项
- 物理性污染控制课程设计
- 转基因技术的危害
- 关于精准教学的课件
- 医学教师教学竞赛课件
- 江苏苏州2012-2020年中考满分作文79篇
- 用电电气安全知识培训课件
- 2025年时事政治考试100题(含参考答案)
- 高产小麦品种介绍
- 常见行政案件笔录模版
- 手术室甲状腺切除术手术配合护理查房
- 国家电网电力中级职称考试题
- 数据库设计规范说明
- 建设工程消防验收评定规则
- 肾内科临床技术操作规范2022版
- 山东省临沂市兰山区2022-2023学年小升初数学自主招生备考卷含答案
- 2023年中国工商银行软件开发中心春季校园招聘500人笔试模拟试题及答案解析
- 地质勘查钻探岩矿心管理通则
评论
0/150
提交评论