




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
6件工作原理与编程示本章主要以S3C4510B的几个常用功能部件为编程对象,介绍基于S3C4510B的S3C4510BS3C4510BDMAS3C4510BIICS3C4510BBootLoaderARMPC平台的程序开发,嵌入式系统的程序设计具有其自身的特点,来说,其系统资源,如Flash、EEPROM、SDRAM、中断控制等,各种调试找出程序的各种语法和逻辑错误最后应使各功能程序模块化,缩短代码长度以节省空间并减少程序执行时间。而影响到系统的可靠性,因此,应用程序的技术也是必须考虑的,这也是嵌通用I/O口工作原理与编程端口0~7的工作模式IOPMOD寄存器控但通过设置IOPCON寄存器端口8~端口11可用作外部中断请求INTREQ0~INTREQ3端口12、TOUT0171TOUT1。I/O6.2.16.2.1通用I/O模I/OIOPMODP17~P0偏移地操功能描I/O口模0=1=0=1=0=1=0=1=作特殊功能(DMA请求或应答、定时器溢出)IOPCONIOPMOD寄存器。对于特殊功能输入端口,S3C4510B提供了一个滤波器用于检测特殊功能信号DMA请求等特殊功能信号。偏移地操功能描I/O口控[4]80=1=使0=低电平有效1=[2]0=滤波器 1=滤波器 00=电平检 01=上升沿检10=下降沿检测11=[22]12用作外部DMA0(nXDREQ0)0=1=使能[21]0=滤波器 1=滤波器[20]0=低电平有效1=[25]13用作外部DMA1(nXDREQ1)0=1=使能[24]0=滤波器 1=滤波器[23]0=低电平有效1=[27]14用作外部DMA0(nXDACK0)0=1=使能[26]0=低电平有效1=[29]15用作外部DMA1(nXDACK1)0=1=使能[28]0=低电平有效1=0=1=使0=1=使偏移地操功能描I/O口数当配置为输入模式时,I/O口数据寄存器偏移地操功能描I/O口数[17:0]I/OP17~P0的读/写值。I/O口数据寄存器的值反映对应引脚的以上简述了S3C4510B的通用I/O可参考第八章关于ADS集成编译调试环境的使用方法。CodeWarriorforARMDeveloperSuite(ARMProjectManager),新建Init.s,具体内容如下:;Instituteof Academyof;File LDRR0,LDRR1,=0xE7FFFF80;配置SYSCFG,片内4KCache,4KSRAM R1,[R0]LDRSP,0x3FE1000;SP指向4KSRAM的尾地址,堆栈向下生 配置SYSCFG特殊功能寄存器将S3C4510B片内的8K的SRAM配置4KCache,4KSRAMSRAM中。4KSRAM0x3FE,0000~(0x3FE,1000-1)S3C4510B的堆栈由高地址向低地址生成,将SP0x3FE,1000。完成上述操作后,程序跳转到Main函数执行。Init.s,并添加到新建的项目。Instituteof AcademyofFile #defineIOPMOD (*(volatileunsigned*)0x03FF5000)//IOportmode#defineIOPDATA(*(volatileunsigned*)0x03FF5008)//IOportdatavoidDelay(unsignedint);intMain(){unsignedlong //将IO口置为输出模}}voidDelay(unsignedint{unsignedinti,j,k;}实际配址相对应。器默认程序的地址为0x8000,该值应根据实际的SDRAM映射地址进行修改。>obey系统中SDRAM0x0040,0000~(0x0140,0000-1)P0~P3口的LED串行通讯工作原理与编程示而广泛使用,几乎所有的微控制器、PC都提供串行通讯接口。S3C4510B的UARTI/O口(AsynchronousSerialI/O,SIO)DMA模式,也即UART能产生内DMACPUI/O口之间传送数据。S3C4510B的UART1~25、6、78MCLKUCLK(Pin64)驱动;发送器和都有独立的数据缓冲寄存器和数据移位器。数据引脚UATXDnUARXDn移入移位器,UARTUART之前先写一个字节数据6.2.26.2.26-2-1UART6-2-1UART特殊偏移地操功能描UART0行控UART1行控UART0控制寄存UART1控制寄存读UART0读UART1状态寄存写UART0发送保持寄存写UART1发送保持寄存读UART0接收缓冲寄存读UART1接收缓冲寄存UART0波特UART1波特写UART0波特写UART1波特写UART0波特写UART1波特UART(UARTLineControlRegisters,ULCON0、偏移地操功能描UART0行控UART1行控6-2-2UART6-2-2UART行控制寄存器描位位功能描每帧字位,‘01’=6位,‘10’=7位,‘11’=8位。停止位该位指示每帧数据的停止位数:‘0’=每帧一个停止位,‘1’=每帧两个停止位。校验模验并进行检测:‘0XX’=无校验,‘100’=奇校验,‘101’=偶校验,‘100’=奇校验,‘110’=校验强制/检测为1,‘111’=校验强制/检测为00=内部时钟1=外部时钟S3C4510B的UART模块支持红外(IR)发送与收。要使能红外模式,需设置ULCON[7]1,否则选择正常UART模式。00=5 01=610=7 11=80=1=每帧两个停止位0xx=无校验100=101=1101110=内部时钟1=外部时钟0=1=UART(UARTControlRegisters,UCON0、偏移地操功能描UART0控制寄存UART1控制寄存6-2-3UART6-2-3UART控制位位功能描该两位的值决定当从UART接收缓冲寄存器中数‘00’=Rx模式,‘10’=产生GDMA通道0请求‘11’=产生GDMA通道1请求断、帧错误、校验错误或Overrun错误)时是否让UART产生中断请求:‘0’=不产生接收状态中断请求‘1’=该两位的值决定当写数据到UART发送缓冲寄存器中‘00’=Tx模式,‘10’=产生GDMA通道0请求‘11’=产生GDMA通道1请求0=不产生DSR输出1=DSR输出(nUADSR引脚)发送间0=不发送间隔信号1=发送该位选择UART是否进入回环模式。在回环模式下,UTXBUF在内部直接连接到接收缓冲寄存器00=01=10=GDMA011=GDMA10=1=产生接收状态中断00=01=10=GDMA011=GDMA10=不产生DSR输出(nUADSR引脚1=产生DSR输出(nUADSR引脚0=1=0=1=使能回环模式(仅用于测试UART(UARTStatusRegisters,USTAT0、偏移地操功能描读UART0状态寄存读UART1状态寄存6-2-4UART6-2-4UART状态位位功能描Overrun在接收串行数据的操作中,当发生Overrun错误时,出,而被新收到的数据所覆盖时发生Overrun错误。如果接收状态中断使能位UCON[2]为‘1’,则当任何时候UART状态寄存器USTAT,该位都会校验错如果接收状态中断使能位UCON[2]为‘1’,则当校任何时候UART状态寄存器USTAT,该位都自动如果接收状态中断使能位UCON[2]为‘1’,则当帧任何时候UART状态寄存器USTAT,该位都自动间隔中如果接收状态中断使能位UCON[2]为‘1’,则当接任何时候UART状态寄存器USTAT,该位都自动。当接收缓冲寄存器URXBUF从串行口接收到一个有URXBUF中接收到的有效数据。当该位为‘1’时,根据当前UART接收模式位UCON[1:0]的设置,可以产生中断或DMA当发送缓冲寄存器UTXBUF为空时,该位自动置为‘1’,此时可以向UTXBUF写入下一个要发送的数当该位为‘0’时,表示UTXBUF中的数据还未全部拷贝到发送移位寄存器中,此时不能向UTXBUF中当该位为‘1’时,根据当前SIOUCON[4:3]的设置,可以产生中断或DMA当发送缓冲寄存器UTXBUF为空且发送移位寄存器Overrun1=Overrun错误(如果UCON[2]1,则会产生接收状态中断Overrun错误。1=校验错误(如果UCON[2]1,则会产生接收状态中断帧错误求UART(UARTTransmitBufferRegisters,UTXBUF0、的数据写入该寄存器时,UART的状态寄存器USTAT[6]自动。偏移地操功能描写UART0发送缓冲寄存写UART1发送缓冲寄存6-2-5UART6-2-5UART发送位位功能描发送数存器空位USTAT[6]清‘0’,以防UTXBUF中的数据UART(UARTReceiveBufferRegister,URXBUF0、UART接收缓冲寄存器URXBUF0URXBUF1,存放接收到的8位串行数据UART接收完一个数据帧UART的状态寄存器USTAT[5]置为1当URXBUF时USTAT[5]自动。偏移地操功能描读UART0接收缓冲寄存读UART1接收缓冲寄存6-2-6UART6-2-6UART接收位位功能描接收数当接收完一帧数据时,UART状态寄存器中的接收数据准备好位USTAT[5]被置为‘1URXBUF中任何时候URXBUF,接收数据准备好位UART(UARTBaudRateDivisorRegisters,UBRDIV0、偏移地操功能描UART0波特UART1波特[3:0]xxx0=xxx1=CNT0的计算如下 50MHzMK21(1.5625MHz2UCLKUART0、UART1的外部时钟输入引脚。UART波特率发生器的MCLK2或UCLK,由寄存器UCCON[6]选择。UARTS3C4510BUART0CodeWarriorforARMDeveloperSuite(ARMProjectManager),新建Init.s,具体内容与第一个例子相同。Instituteof AcademyofFile #defineULCON0 (*(volatileunsigned*)0x03FFD000)//UARTchannel0linecontrolregister#defineUCON0 (*(volatileunsigned*)0x03FFD004)//UARTchannel0controlregister#defineUSTAT0 (*(volatileunsigned*)0x03FFD008)//UARTchannel0statusregister#defineUTXBUF0 (*(volatileunsigned*)0x03FFD00c)//UARTchannel0transimitholdingregister#defineURXBUF0 (*(volatileunsigned*)0x03FFD010)//UARTchannel0recievebufferregister#defineUBRDIV0 (*(volatileunsigned*)0x03FFD014)//Baudratedivisorregister0#defineULCON1 (*(volatileunsigned*)0x03FFE000)//UARTchannel1linecontrolregister#defineUCON1 (*(volatileunsigned*)0x03FFE004)//UARTchannel1controlregister#defineUSTAT1 (*(volatileunsigned*)0x03FFE008)//UARTchannel1statusregister#defineUTXBUF1 (*(volatileunsigned*)0x03FFE00c)//UARTchannel1transimitholdingregister#defineURXBUF1 (*(volatileunsigned*)0x03FFE010)//UARTchannel1recievebufferregister#defineUBRDIV1 (*(volatileunsigned*)0x03FFE014)//Baudratedivisorregister1voidInitUART(intPort,intBaudrate);voidPrintUART(intPort,char*s);intMain(){InitUART(0,0x500);//19200bpsCPU工作频率 PrintUART(0,"CommuncationTestting!}}voidPrintUART(intPort,char{}}}voidInitUART(intPort,int{}}}行的映象文件,当可执行的映象文件运行时,会不停的向UART0发送字符串“CommuncationTestting!”。中断控制器工作原理与编程CPU都支持中断,S3C4510B21个中断源,中断请求可由内部功能模块和外部引脚信号产生。ARM7TDMI核可以识别两种类型的中断:正常中断请求(NormalInterruptRequest,IRQ)和快速中断请求(FastInterruptRequest,FIQ),IRQFIQ。S3C4510B的中断控制器对每一个中断源都有一个中断悬挂位(InterruptPendingBit)。中断模式寄存器(InterruptModeRegister):为每一个中断源定义中断模IRQFIQ。中断寄存器(InterruptMaskRegister):如果中断位为S3C4510B(InterruptS3C4510B216-2-7表6-2- S3C4510B的中断IIC总线中以太网控制器MAC以太网控制器MAC以太网控制器BDMA以太网控制器BDMAHDLC通道B接收HDLC通道B发送HDLC通道A接收HDLC通道A发送定时器1中定时器0中GDMA通道1中GDMA通道0中UART1接收与错误中UART1发送UART0接收与错误中UART0发送外部中断外部中断外部中断外部中断中断控制器的特殊功能寄存器(InterruptControllerSpecialRegisters)中断模式寄存器(InterruptModeRegister)中断模式寄存器INTMOD偏移地操功能描理中断。21个中断源映射如下: IIC MAC MAC BDMA BDMA HDLCB HDLCB HDLCA HDLCA 1 0 GDMA1 GDMA0 UART1 UART1 UART0 UART0 中断悬挂寄存器(InterruptPending偏移地操功能描INTPND216-2-721个中断源,当中断请求的方式清除中断悬挂位。21个中断源映射如下: IIC MAC MAC BDMA BDMA HDLCB HDLCB HDLCA HDLCA 1 0 GDMA1 GDMA0 UART1 UART1 UART0 UART0 中断寄存器(InterruptMask中断寄存器INTMSK保持每一个中断源的中断位偏移地操功能描中断寄存INTMSK216-2-721个中断源,当中断除时,中断请求会得到响应。21个中断源映射如下: IIC MAC MAC BDMA BDMA HDLCB HDLCB HDLCA HDLCA 1 0 GDMA1 GDMA0 UART1 UART1 UART0 UART0 [21]全局中断0=1=所有的中断请关于S3C4510B定时器工作原理与编程示通过设置定时器控制寄存器TCON中的控制位可以或使能T0和T1无论何间隔模式(IntervalfOUTfMCLK触发模式(TogglefOUT=fMCLK/(2×定时器的数据值)6.2.36.2.4块定时器模式寄存器(TimerModeTMOD32位定时器的操作。TMOD寄存器的偏移地操功能描001010TOUT01TOUT0101010TOUT11TOUT1定时器数据寄存器(TimerDataTDATA0TDATA1的值决定每一个定时器的计数溢出时TDATA偏移地操功能描定时器0定时器1[31:0]01的数据值定时器计数寄存器(TimerCountRegister)定时器计数寄存器TCNT0和TCNT101在正常工作情况TCNT偏移地操功能描定时器0定时器1[31:0]01CodeWarriorforARMDeveloperSuite(ARMProjectManager),新建;Instituteof Academyof;File Timerinterrupt ;I/O口模式寄存器 ;I/O口数据寄存器 ;中断寄存器 ;数据中止异常,跳转到当前位置 ;LEDDisLDRR1,=IOPMODLDRR0,=&ffSTRR0,[R1]LDRR1,=IOPDATALDRR0,=&03STRR0,[R1]EORR0,R0,R0ADDR0,R0,#1CMPR0,#&180000BNELEDDELAYLDRR1,=IOPDATALDRR0,=&0STR;UserLDRR0,=0x3FF0000LDRR1, ;配置SYSCFG,片内4KCache,4K R1,LDRSP, ;SP指向4KSRAM的尾地址,堆栈向下生;InterruptSpecialLDR LDRR0,=&0STRR0,[R1]LDR ;设置中断寄存器,只允许定时器0中LDRR0,=&1FFbFFSTRR0,[R1];Timer0SpecialLDR LDRR0,=&3FFFFFFSTRR0,[R1]LDR ;使能定时器LDRR0,=&01STR ;Timer0InterruptService SP!,{R0-R6,LR}LDR ;清INTPNDLDRR0,=&400STRR0,[R1]LDR ;读IOPDATA的值加一并送LDRR1,[R0]ADDR1,R1,#1STRR1,[R0] SP!,{R0-R6,LR};恢复现场,中断返 0x0,否则程序不能正常运行。GDMA工作原理与编程S3C4510BDMA控制器(GeneralDMAController,GDMA)。CPUGDMA可完成如下的数据传输:—器到器的双向数据传输DMA操作完成以后,可由软件再次启动。S3C4510BDMA8位、1632位的方式传送数据。6.2.5GDMA6.2.5GDMA块GDMA(GDMASpecial6-2-8GDAM特殊功能寄存器概偏移地操功能描GDMA通道0控制寄存GDMA通道1控制寄存GDMA通道0GDMA通道1GDMA通道0目的地址寄存GDMA通道1目的地址寄存GDMA通道0传输计数寄存GDMA通道1传输计数寄存GDMA(GDMAControl偏移地操功能描GDMA通道0控制寄存GDMA通道1控制寄存6-2-9GDMA控制寄存器描位位功能描该位置‘1’启动DMA操作。要停止DMA操作,该位必须清‘0’。用户可通过对GDMA运行位控制地址(GDMACON偏移地址+0x20)的操作控制该位。当使用运行位控制地址时,其他的GDMA受影响当GDMA操作启动时,该状态位(只读)自动置为当GDMA空闲时,该位为‘0’GDMA支持4软件请求模式(器到器外部DMA请求UART0块传UART1块传该位控制在DMA操作中目的地址是递增(‘0’)还是增减方该位控制在DMA操作中源地址是递增(‘0’)该位决定在DMA操作中目的地址是否固定。使用该特该位决定在DMA操作中源地址是否固定。使用该特性可以通过设置或清除运行使能位来启动或停止DMA作。如果在DMA启动时将该位置‘1’,则当DMA操当该位置‘1’时,GDMA控制器工作于4-数据猝发模的,然后传送到4个连续的目的地址,此时应注当模式位[3:2]=‘10’(UART0与器之间的数据传输)或‘11’(UART1与器之间的数据传输)当该位为‘1’,由器到外设当该位为‘0’,由外设到器单/块模该位决定外部DMA请求DMA在单模式下(该位为‘0’),每一次DMA操作都需要外部的DMA请求。在块模式下(该位为‘1’),只需要一次外部的DMA请求即可完成整个DMA操作,直到传输计数值为0。传输宽该两位决定传输数据的宽度(8位、16位或32位)。增或递减1。增或递减2。或递减4连续模该位可使DMA控制器占用系统总线直到DMA传输计数器的值为零。必须操作该位,使DMA传输操作DRAM的刷新周期)。查询模使用该模式可以提高外部DMA操作的速度。当该位为‘1’时,在外部DMA请求信号(nXDREQ)有效期间都进行DMA数据传输操作,信号的有效时间决定传输的数据量。当nXDREQ信号有效且DMA控制器取得控制总线权,会一直控制系统总线直到nXDREQ信号变为无效。因此,必须控制nXDREQ信号的有效时过DRAM的刷新周期)。注意:要确保DMA操作可靠,必须的单独配置GDMA控制寄存器的每一位0DMA1DMA忙状态0=DMA1=DMA00=软件请求模式(器 01(用于外设)10=UART011=UART1010101(固定01(固定0DMA1DMA0=4-数据猝发模140=UART0/1到1=器到0nXDREQDMA1nXDREQDMA00=字节(8位 01=半字(16位10=字(32位 11=未使01DMA0DMA1GDMA(GDMASource/Destination偏移地操功能描GDMA通道0GDMA通道1GDMA通道0目的地址寄存GDMA通道1目的地址寄存GDMA(GDMATransferCountGDMA传输计数寄存器为DMA通道0/1保留在传输完成后的24位当前计数值。在每一次DMA操作完成时计数值总是按1增减,无论GDMA传输数据的宽度或是处4-数据猝发模式。偏移地操功能描GDMA通道0GDMA通道1GDMA通道0目的地址寄存GDMA通道1目的地址寄存GDMAGDMACPU的干预。请求者或目标是指器、UART和外设。外设可以通过nXDREQ信号请求GDMA服DMA通道都可以通过向相应的寄存器写入数据来进行编程控制,这些UART、外部I/O或通过编程(只用于器到器)都可以请求DMA服务。UARTGDMA部件在片内已经相连。GDMA重新编程,即使是对同一个缓冲区的数据进行重传。4-GDMA请求(可由GDMA4次数据传输。在单模DMA请求。0。nXDREQ信号有效,就会持续进行数据的传输。GDMAS3C4510BGDMA0DMACodeWarriorforARMDeveloperSuite(ARMProjectManager),新建Init.s,具体内容如下:;Instituteof Academyof;File DMA ;GDMA通道0控制寄存;GDMA通道0;GDMA通道0目的地址寄存;GDMA通道0传输计数寄存 ;LEDDisLDRR1,=IOPMODLDRR0,=&ffSTRR0,[R1]LDRR1,=IOPDATALDRR0,=&03STRR0,[R1]EORR0,R0,R0ADDR0,R0,#1CMPR0,#&180000BNELEDDELAYLDRR1,=IOPDATALDRR0,=&0STR;UserLDRR0,=0x3FF0000LDRR1, ;配置SYSCFG,片内4KCache,4KSTRR1,LDRSP, ;SP指向4KSRAM的尾地址,堆栈向下生;DataLDR ;R1指向源地址,将连续的0x100个单元初始LDRR0,=0x0STRR0,[R1]ADDR1,R1,#1ADDR0,R0,#1CMPR0,COUNTBNELOOP;GDMA0ControllLDR ;设置GDMALDRR0,=SRC_ADDSTRR0,[R1]LDR ;设置GDMA的目的地LDRR0,=DST_ADDSTRR0,[R1] ;设置GDMALDRR0,=COUNTSTRR0,[R1]LDR ;设置GDMALDRR0,=0x0801STRR0,[R1] ;循环等待DMA传输完0x100000DMA0x200000IIC总线控制器工作原根为串行时钟线(SerialClockLine,SCL)IIC连接到总线上的每一个设备都可以通过一个主控器使用唯一的地址进行软件寻址线主控既可以一个主送器也是一个主但的IIC6.2.6S3C4510BIIC6.2.6S3C4510BIIC功能描述(FunctionalS3C4510B的IIC总线控制器为一个串行IIC过设置预分频寄存器(PrescalerRegister,IICPSR)对串行时钟频率进行编程。串行时钟频率可串行IIC总线,然后总线控制器发送7位的从设备地址并通过移位缓冲寄存器发送器。移位缓冲寄存器无论是被读还是写,BF位均会自动。若要进行连续的读/ACKIIC(IIC-BUSOperationIICSCLICIC过唯一的地址进行识别,根据其特性,可作为发送器或工作。ICIC2ICIC(此时,主器件为发送器,从器件为接收2、主IC器件从从IC器件接收数据(此时,主器件为,从器件为发送连接在总线上的IIC接口在输出阶段通过漏极开路(Open-drain)或集电极开路(Open-collector)的方式完成线与(Wired-ANDIIC100Kb/SIC(400PF)位传输(BitTransfers):由于连接到IIC总线上的器件各不相同(CMOS器件,NMOS器件,TTL器件等),逻辑0或逻辑1的电平会根据电源电压的高低发停止条件:当SCL为高电平时,SDA产生由低电平到高电平的跳变。6.2.76.2.7条数据传输操作(DataTransfer位ACK(如图6.2.7),传输字节时最(MSB-first)。,时就保持时钟线SCL为低电平强制发送器进入等待状态,只有当准SCL传输线时,数据传输才会继续进行。,Procedure脉冲的高电平期间SDA能够保持稳定的低电平。6.2.8格IC第一个数据字节的位定义(DefinitionofBitsintheFirstDataIC器件将该地址与自己的地址进行比IC器件就认为自身被主控器寻址为一个从发送器或从接收广播寻址(GeneralCallAddress):IIC总开始字节(StartByte):在每一次的数据传输之前都有一个开始过程,描述 当需要总线的主控器在发送完开始条件S后,接着发送开始字节(“IC器件以较低的采样率对SDA传输线进行采样,IC器件就切换到较高的采样率检测重复开始条件Sr用于同步,在检测到重Sr后复位,忽略该开始字节。IIC(IICBusSpecial控制状态寄存器(ControlStatus偏移地操功能描6-2-10IICCON寄存器位位功能描时,BF置位。IICBUF寄存器无论是被读还是写,BF位都自动。如果将该位置为“1”,IIC总线停止工作,要激活IIC总线,应将该位该位置“1”,使能IIC总线LRB位为只读。该位保持IIC总线上最后接收到的位。号,可以测试LRB位ACK位通常置为“1”,以便IIC总线控制器在每一个当IIC总线控制器工作在模式,且不需要从从送器接收数据时,该位必须“00”=无影“01”=开“10”=停“11”=总线忙该位为只读,用以指示IIC总线是否被使用。为“1”表示总线忙。该位由开始条件和停止条件置位或。态保无1BF0=1BF1”使用该只读状态位可以检测(从器件)的应答信号,或当写“11”0SDA(ACK)1SDA(ACK)09SCLACK19SCLACK[5:4]COND100011011SCL[6]总线忙0(空闲)1(忙)01IIC移位缓冲寄存器(ShiftBuffer偏移地操功能描6-2-11IICBUF寄存器位位功能描数该数据区域用作串行移位寄存器和IIC总线的读缓冲接IICBUF寄存器由移位寄存器和数据缓冲两部分构成。发送数据时,8位的并行数据首先写入移位寄存器。接收数据时,从数据缓冲区保无预分频寄存器(Prescaler偏移地操功能描6-2-12IICPS寄存器描位位功能描预分频若预分频值为0,则将系统时钟除以19作为IIC总线保无以太网控制器工作原太网控制器。在半双工模式下,控制器支持IEEE802.3的CSMA/CD协议;在全双工IEEE802.3MAC以太网控制器的MAC层支持独立接口(MediaIndependentInterface,MII)和带缓DMA(BufferedDMAInterface,BDI)。MAC层由发送模块、接收模块、流控模块、用于网络地址的匹配地址器(ContentAddressMII支持在25MHz时钟下以100M速率的发送与接收操作,和在2.5MHz时钟下10M的发送与接收操作。同时,MIIISO/IEC802-3于从MAC层中分离出物理层的独立层标准。6.2.9以太网系统的流控框主要特MAC发送/接收FIFOs(分别为80字节和16字节),支持在后重新发DMA片内CAM(可21个地址)MAC功能模6-2-13MAC功能模 发送模将要发送的数据从发送缓冲区移到MII。发送模块包括CRC生成电于处理后的回退和数据帧间间隔的定时器接收模从MII接收数据并存入接收FIFO。接收模块完成逻辑功能:计算与校验CRC值;对从MII接收的数据进行奇偶生成和检测最大与最小数据包长度。接收模块同时还包含一个匹配地址器(CAM)模包流控模辨别MAC控制包,并支持用于全双工连接的暂停操作。流控模块同MAC控制(命令)与状回环电提供独立于MII和物理层的MAC图 独立接口(MediaIndependent10M100MTTLCMOSASIC具有驱动有限长度电缆的能力物理层(PhysicalLayer物理层完成发送与接收数据的编码/。其编码/(用于10BASE-T的曼编码用于100BASE-X4B/5B编码以及用于100BASE-T48B/6T编码)束。同时,MIICRC字段结束。MACPHY。DMA(BufferedDMA带缓冲的DMA接口支持通过系统总线的读/8BDIBDI接收数据并发送出去,或将接收到的数BDI,由帧结束信号标识各数据包的边界。MAC(MACTransmitMAC802.3CSMA/CD协议兼容。MAC发CRC6.2.11MAC6.2.11MAC块FIFO(TransmitFIFOandRead/WriteControllers):FIFO80字节,每一个字节数据附加一个奇偶校验位,即每个字节为9位长度,其中,前64个字节数据可以被打包和发送,并在发生碰撞时进行重发,无需系统的干预。如果没有碰撞发生,则进行数据包发送,剩余的16个字FIFO不发送而丢失。BDI请求数据,然后由系统控制器从系统器中获取数据。请求的数据。发送状态机连续的发送数据,直到检测到最后一个字节的帧结束FIFOFIFO控制器与计数器根验错误,FIFO控制器就设置一个错误状态位,若对应的中断使能同时产生中断。前导与后缀发生器(PreambleandJamGenerator):一旦控制寄存器中的发FIFO8Tx_en信号启动填充发生器(PADGenerator):如果发送一个短的数据包,MAC会生成填充可以填充字节的生成。CRC(ParallelCRCGenerator):数据包中所有要发送的数据,CRC存器的对应位CRC生成。该功能可以用于测试,例如,为测试的错误检CRCCRC校验回退与重发定时器(Back-offandRetransmitTimers):当检测到网络上有发送状态机(TransmitStateMachine):发送状态机是发送模块的控制MAC(MACRECEIVEMAC802.3CSMA/CDBDICAMCRC6.2.12MACFIFO(ReceiveFIFOController):FIFO控制器一次接收FIFO接收数据时,CAM模块根据自身的地址对数据包的目的地址进行检测如果CAM能识别该FIFO。CAM(AddressCAMandAddressRecognition):CAM模块完成地址识别。它将接收到的数据包的目的地址与自身的地址进行比较,如果地址匹配,接收状态机就继续接收数据。CAM模块按6个字节一个地址的方式组织,共有32字(128字节)的大小,最多可21个地址(126字节)。外,CAM19CAM20可用于构造一个由用户定义的控制帧。接收状态机(ReceiveStateMachine):MIIMII的的地址,接收FIFO就将数据包的其余部分。在接收结束后,接收模块就通过SFD。误,BDMARx_toss信号指示接收到的数据包应该丢弃。流控模块(FlowControlBlock):流控模块中的接收逻辑按如下方式识别MAC长度/MACCAM识如果长度/MAC控制帧规定的特定值,MAC不作响应,数据CAMMAC丢弃;如CRC64字节,MAC也不进行操作,然后数据包被MAC控制帧,在允许通过的情况下,传送到软件处理。MAC控制功能即使发送器自身处于暂停状态两个定时器和两个对应令与状MACMAC的MACMAC控制帧传送到带缓冲DMA接口(BufferedDMADMA(BDMA)控制模块(BDMAControlBDMA引擎控制一个发送缓冲区和一个接收缓冲区。BDMA发送缓冲区在数FIFO都有一个控制模块用于控制数据从缓冲区的移入和移出。6.2.13BDMA控制模块图。6.2.13BDMA块发送帧描述符(TransmitFrameDescriptor)接收帧描述符(ReceiveFrameDescriptor)帧数据缓冲(FrameDataBuffer)。0=填充模 1=无填充模0=CRC模 1=非CRC模0=1=使0=大端模式 1=小端模式0=递减 1=递增00=无无效字 01=一个无效字10=两个无效字 11=三个无效字0= 1=[30:0]帧数据指针(FrameData[15:0]帧长度(Frame[31:16]发送状态(Tx[31:0]下一个帧描述符指针(NextFrameDescriptor0= 1=[30:0]帧数据指针(FrameData[15:0]帧长度(FrameLength)[31:16]接收状态(Rx[31:0]下一个帧描述符指针(NextFrameDescriptor数据帧(DataFrame):帧起始地址的最,所有者位,控制描述符的所有BDMA然后,BDMA引擎开始设置BDMA接收控制寄存器(BDMARXCON)中的BDMA接收使能位,当接收到一个数据帧时,数据帧被拷贝到由接收帧起始地址规定的器BDMACRC无填充位以太网控制器特殊功能寄存器(EthernetControllerSpecialBDMA(BDMAControlandStatus所有包含器地址的寄存器都必须按字对齐格式保存地址。表6-2-146-2-14BDMA偏移地操功能描BDMABDMABDMA0x9100-只CAM内容(32字0x9200-BDMA发送缓冲(64字),仅0x9800-0x9900-BDMA接收缓冲(64字),仅BDMA(BDMATransmitControl6-2-15BDMA发送控制寄存器描位位功能描在BDMA模式下,该值加1即为发送尺寸。BTxBRST=0,则发送尺寸为1;BTxBRST=31,则发送尺寸为32BDMA当数据帧的所有者位没有设置时,该位决定BDMA发保BDMA(BTx当该位被置位时,在MAC完成控制包的发送后BDMA发送控制包完成中断产生BDMA BDMA该位置位时,BDMA非所有者中断使能。若当前帧的所有者位不属于BDMA控制器,且BTxSTSKO位置位时BDMABDMA送到这几个位决定当一个新的数据帧到达后,何时将BDMA发送缓冲区中新的帧数据移到MAC发送FIFO中。“001”表示等到填满BDMA发送缓冲器的1/8;“010”表示等到填满BDMA发送缓冲器的2/8;“011”表示等到填满BDMA发送缓冲器的3/8;“1xx”表示等到填满BDMA发送缓冲器的但当帧的最后一个数据到达BDMA发送缓冲区时,则立即将其移入MAC的发送FIFO,无论这几位的值如何当该位置位时,BDMA发送模块使能,即使该位被禁止,缓冲区中的数据也要被移入MACFIFO,直到该位在以下情况自动被12为“0”,且BTxSTSKO位为值BDMA块该位置“1”,BDMA位BTxBRST31320=BDMA1=如果中断使能,BDMA0=BDMA发送控制包完成中断1=BDMAMAC0=BDMA发送空表中断1=使能BDMA发送空表中断当BDAMTxPTR的值为空地(0x 0=BDMA非当前发送帧所有者中断1=BDMA0=BDMA发送缓冲区空中断1=BDMA发送缓冲区空中断。[13:11]BDMAMACBTxMSL)000=不等待。001=1/8010=2/8011=3/81xx=4/80=BDMA发送器1=BDMA0=1=BDMABDMA(BufferedDMAReceiveControl6-2-16BDMA接收控制寄存器描位位功能描在BDMA模式下,该值加1即为接收尺寸。BTxBRST=0,则发送尺寸为1;BTxBRST=31,则发送尺寸为32BDMA当数据帧的所有者位没有设置时,该位决定BDMA接BDMA接收器BDMA当该位被置位时,BDMA控制器在每次将一个完整的数据帧移入器时产生中断。BDMA BDMA所有者位不属于BDMA控制器,且BRxSTSKO位置位BDMA当该位置“1”时使能BDMA接收最大尺寸溢出中断BDMA收大/小端BDMA对少个无效字节。这些无效字节由BDMA控制器在组装“00=“01”=1个无效字节“10”=2个无效字节“11”=3个无效字节当接收使能位置“1”时,BDMA接收模块使能,即使该位被,MAC也要接收数据,直到MAC接收FIFO上溢。该位在以下情况自动被34为“0”,且BRxSTSKO位为值BDMA块位该位置“1”,BDMABDMA该位置“1”使能BDMA接收缓冲区空中断BDMA能该位置“1”使能BDMA接收数据帧长度通知中断。该BDMA1BRxBRST=0,则接收尺寸为1BRxBRST=3132字;0=BDMA1=如果中断使能,BDMA就产生中断0=帧器地址递减1=帧器地址递增0=BDMA每接收帧中断1=BDMA0=BDMA接收空表 1=BDMA0=BDMA非当前接收帧所有者中断1=BDMA0=BDMA接收最大尺寸溢出中断1=BDMA0=1=小端数据帧格式(BDMA接收缓冲区中的帧数据在系统总线进行端格式转00=0111021130=禁用DBMA1=BDMA[15]BDMA复位0=1=BDMA0=接收缓冲空中断1=0=接收数据帧长度通知中断1=BDMA控制器获得接收帧的长度值时,BDMA发送帧描述符起始地址寄存器(BDMATransmitFrameDescriptorStartAddressRegister)操 BDMA发送帧描述符起始地址寄存6-2-17BDMA发送帧描述符起始地址寄存器描位位功能描BDMA描述符地址。在BDMABDMA接收帧描述符起始地址寄存器(BDMAReceiveFrameDescriptorStartAddressRegister)操 BDMA接收帧描述符起始地址寄器6-2-18BDMA接收帧描述符起始地址寄存器描位位功能描BDMA描述符地址。在BDMA更BDMA接收帧最大尺寸寄存器(BDMAReceiveFrameumSize6-2-19BDMA位位功能描BDMA该值控制每帧有多少个字节可以保存到器中,如果BDMA长前帧的长度值。BDMA(BDMAStatus6-2-19BDMA位位功能描BDMA当该位置“1”时,BDMA每接收到一个数据都移入器。若要产生下一帧接收中断,该位必须清BDMABDMA非所有者当该位置“1”时,BDMA非当前帧的所有者BDMABDMA空当该位置“1”时,BDMA接收缓冲区为空当BDMA接收到当前帧的长度/类型域时该位保BDMA当BDMA接收缓冲区多于一个数据帧时该位置BDMA该值为BDMABDMA制每当MAC发送控制包完成时该位置“1”BDMA址空如果BDMATXPTR的值为空,该位置“1”BDMA如果BDMA发送器非当前帧所有者,该位置“1”保BDMA冲空若BDMA保0=复位BDMA1=完全接收每一个数据帧并移入器0=1=当前帧描述符的地址为空 0=BDMA为当前帧的所有者止工作,BRxSTSKO位置“1”。0=BDMA1=0BDMA1BDMA0=1=通过BDMA接收最大帧尺寸寄存器BDMARXLSZ[31:16]的值,可以0BDMA1BDMA0=写“1BDMA1MAC0=1=当前帧描述符的地址为空 0BDMABTxSTSKO位置“1”。0BDMA1BDMA的方式将位、、、、、和20匹配地址器寄存器(ContentAddressMemory(CAM)有21个CAM用于暂停控制包的发送和目的地址的识别,CAM存放目的每一个目的地址由6个字节组成,共占用32(32×4字节),因此最多可以21用户可以使用CAM0、118传送暂停控制包,在传送暂停控制包时,目的MAC6-2-20CAM寄存器描位位功能描CAMCPU使用CAM内容作为目的地址。要使用CAMMAC寄存器(MediaAccess发送与接收控制寄存器,CAM控制寄存器,一个用于网络管理的计数器,以及一些6-2-216-2-21MAC偏移地操功能描MACCAMMACMACMACMACCAMT/T读T读读MAC(MACControlMACMAC[10](MissRoll)为MACMAC6-2-22MAC控制寄存器描位位功能描停止请立即停软件复当该位置“1”时,复位所有的MAC和MAC状态机MAC当该位置“1”时,数据包在MAC发保MII该位用于选择连接模式。“1”选择10M接口,“0”择MII保Missed保MDC当该位为“0”时,使能用于电源管理的MDCMissedRoll保10M状该的值对应Link10引脚的状态保CAM(CAMControl无论CAM是否数据包,CAM控制寄存器有三个接收控制位用于接收特殊目—站包地址,第一个字节为偶数。例如:00-00-00-00-00-00FF-FF-FF-FF-FF-FF—广播地址:FF-FF-FF-FF-FF-当使能CAM的比较模式会根据CAM器的目的地址对到达的信息进行过滤通过设置三个接收控制位,可以接收所有的数据包,当对CAM控制寄存器时,6-2-23CAM控制寄存器描位位功能描站包接广播接(Negative当该位为“0”时,接收被CAM识别的数据包,其余的包丢弃。当该位为“1”时,接收未被CAM比较使保未使用MAC(MACTransitControlMACMAC6-2-24MAC发送控制寄存器描位位功能描发送使作快速回发送暂当该位置“1”时,发送一个暂停命令或其他的MAC制包。当一个完整的MAC控制包发送后,发送暂停位自MII10MSQE该位置“1”使能MII10MSQE当该位置“1”时,若在发送过程中MAC发送FIFO空延迟使当该位置“1”时,若MAC延迟MAX_DEFERRAL时间:“0”=在100M0.32768毫秒;“1”=在10M时3.2768毫秒,则产生中断过使延迟使当该位置“1”时,若在512位时间之后发生,则产当该位置“1”时,若在MAC的发送FIFO完成使 当该位置“1”时,无论MAC生中断保MAC(MACTransitStatus当有对应的发生时,MAC发送状态寄存器MACTXSTAT设置发送状态标志,同时,如果发送控制寄存器的相应中断使能位被设置,还产生中断请求。6-2-25MAC发送状态寄存器描位位功能描发送计该4位记录在成功发送数据帧后产生的次数过发送延暂发送中当该位置“1”时表示在包的发送过程中MAC发送空延当该位置“1”时表示MAC延迟MAX_DEFERRAL时间:在100M0.32768毫秒;在10M3.2768当该位置“1”时表示在规定的时间内未报告SQE测试信当该位置“1”表示在512位时间之后发生当该位置“1”时表示在MAC的发送FIFO中检测到奇偶当该位置“1”时表示MAC发送停如果由于清除了TxEn位(MACTXCON中)HaltImm位(MACON中),使发送停止,该位置保MAC(MACReceiveControl通过设置MAC接收控制寄存器的数据包好位和所有的MAC错误使能控制位,可6-2-26MAC接收控制寄存器描位位功能描接收使去除CRCCRC值当该位置“1”时,使能控制包到达MAC忽略CRC当该位置“1”时禁用CRC保对齐使CRC使CRC无效或在接收时物理层产生Rx_er信号,则产CRC中断上溢使当该位置“1”时使能上溢中断。当接收数据包时的接收FIFO满,产生上溢中断保当该位置“1”时,若在MAC的接收FIFO中检测到奇偶好中断保MAC(MACReceiveStatus当有对应的发生时,MAC接收状态寄存器MACRXSTAT设置接收状态标志,同时,如果接收控制寄存器的相应中断使能位被设置,还产生中断请求。6-2-25MAC接收状态寄存器描位位功能描保当接收的数据包为MAC控制帧(Type8808H),或当CAM能识别包目的地址,或帧长度为64字节,该位置接收中10M状当数据包从7线接口接收时,该位置“1”,当数据包MII接收时,该位对齐错当数据帧的长度(按位)不是8的整数倍或CRC无CRC当数据帧尾部的CRC与计算值不匹配时,或在包的接收过程中物理层PHY发出Rx_er信号时,该位置“1”。溢出错当需要接收的数据而MAC接收FIFO满时,该位置当MAC1518保如果在MAC接收FIFO中检测到奇偶错时,该位置“1”。当MAC接收控制寄存器中的EnGood为“1”接收停如果由于清除了RxEn位(MACRXCON中)或设置HaltImm位(MACON中)保MAC(MACStationManagementData6-2-26位位功能描该寄存器的内容为用于站管理功能的16MAC(MACStationManagementControlandAddress6-2-27站管理控制与地址寄存器描位位功能描5位的内容为物理层寄存器地址5位的内容为物理层设备的地址写忙时,MAC控制器自动清除该位无前导当该位置“1”时,前导不送到PHY,为“0”时送到MDC周用于控制MDC周期 MDC周 .. MDC周期STACON[15:13]×2+16保CAM(CAMEnableCAM使能寄存器,CAMEN,标识哪一个CAM地址有效,可用于直接的比较工作模寄存器的020对应于21CAM地址的有效CAM少于21个时,6-2-28CAM使能寄存器描位位功能描CAM若某位置“1”,则对应的CAM地址有效,则对应的CAM地址无效。保MAC(MACMissedErrorCountMAC(T)的值指示由于各种错误丢弃的数据包数6-2-29MAC丢包错误计数寄存器描位位功能描 CRC计 接收到的CRC错误包数量。如果Rx_StatCRC错误 由于MAC接收FIFO溢出、奇偶错误、或Rx_En位清除等原因,被MAC控制器的有效包数量。该数字不包括被CAM的包数量。保MAC(MACReceivedPauseCount 6-2-30MAC接收暂停计数寄存器描位位功能描 该计数值指示由于接收来自MAC的暂停控制操作包而MAC暂停计数寄存器(MACRemotePauseCount 6-2-31MAC接收暂停计数寄存器描位位功能描暂停计 该计数值指示由于发送暂停控制操作包而引起MAC(MACTransmitControlFrameStatusMAC发送控制帧状态寄存器(ETXSTAT)是一个基于RAM的寄存器,提供MAC控DMA引擎该寄存器的值并产生中断通知系统MAC控制包的发送已经完成6-2-32MAC位位功能描该16位的值指示MAC控制包发送到站的状态信息。该值由DMA引擎。以太网控制器的操作(EthernetControllerMAC(MACFrameandPackerMAC发送所有域的每一个字节,除帧检列FCS外,总是最低位。在6-2-33MAC 前7 送1SFD的每个位为 目的地66MAC不对源地址字节作检测,但作为一个有效的站地“2当该长度域大于1500字节时,MAC将其作为类型域处理。该域小于或等于150046字046如果LCC数据少于46字节,MAC发送时填充全“0”帧检4FCS域包含16位的错误检测码6.2.14IEEE802.3以太网包(帧)6.2.14一个IEEE802.3(帧)的MAC(OptionsthatAffecttheStandardMAC短包模式允许LCC46字节,通过选项可以不要填充和支持短目的地址格式(DestinationAddress016进制格式:FF-FF-FF-FF-FF-FF。1位区别目的地址是局部管理地址还是全局管理地址,若为全局管理地址,0=独立(单播)1=组(多播)0=1=特定流控目的地址(SpecialFlowControlDestinationMAC能接收到包含该特定目的元必须使能、CAM必须有效。发送一个帧(Transmittinga这些条件通常在BDMA控制器初始化完成以后设置,然后由系统使用Tx_wr#和Tx_EOF信号传输字节数据到发送数据缓冲区。制权,此时,发送模块请求的数据并发送,直到系统输入Tx_EOF信号通知到MIIBDMA/MACBDI(BDITransmitBDI发送操作是一个简单的FIFO机制BDMA引擎保存待发送的MAC成复位后,发送FIFO为空,发送模块发出Tx_rdy信号,发送被。要使能发送,系统必须设置发送控制寄存器的发送使能位,此外,发送FIFO中必须有8个字MII(MIITransmitOperation)接收一个帧(Receivinga,MII提供0到7个前导字节,然后是起始帧分隔符(SFD)。接收模块首先检测前导字节,然后8个字节中寻找SFD(),如果不能检测到SFD,就将,其到接收FIFO中,同时发出Rx_rdy信号.接收模块然后接收其后的数据并将FIFO。S3C4510S3C4510B关于以太网控制器的初始化和发送、接收编程,读者可参考已经移植到S3C4510B的uClinux源代码,该源代码有详细的描述,限于篇幅,不在此列出。源Flash器工作原理与编程示Flash器的操作包括对Flash的擦除和烧写,由前面所介绍的Flash器的工作原理可知对Flash器的编程与擦除是与具体的器件型号紧密相关的,由于不同厂商的Flash器在操作命令上可能会有一些细微的差别,Flash器的烧写擦除程序一般不具有通用性针对不同厂商不同型号的Flash器,的编程方法,其他厂商或型号的Flash器的编程方法与之类似。HY29LV160是HYUNDAI公司生产的Flash器,其主要特点有:3V单电源供电,可使内部产生高电压进行编程和擦除操作;支持JEDEC单电源Flash器CFI(CommonFlashMemoryInterface)特性;只需向其命令寄存器写入标询特定的引脚或数据线操作是否完成可以对任一扇区进行读写或擦除操作,向Flash器的特定寄存器写入地址和数据命令,就可对Flash器进行0xffHY29LV160编程命令、整片擦除命令以及对应的HY29LV160HY29LV160的地数地数地数地数字字(8位)操作,共需要四个总线周期,分四步完成,前两个周期是周期,第三地数地数地数地数整字擦字地数地数整擦字字Ready/Busy引脚(RY/BY#)。DQ6DQ6连续跳变,直至操作结束才停止跳变;第三种方法是使用数据线的DQ7DQ5位,DQ7位在编程的数据;DQ5的状态为“1”时表示操作超时,此时应再读一次DQ7的状态,若DQ7对于第法,需要占用系统的I/O口以判断引脚RY/BY
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年广东省梅州市高考语文模拟试卷(二)
- 毛石供应合同范本
- 盲人听觉技能培训的现代科技应用
- RU26988-生命科学试剂-MCE
- PNU-142300-生命科学试剂-MCE
- 科技助力下的痛风患者营养支持系统研究
- 薪酬福利合同范本
- 科技医疗远程诊疗的未来之路
- 皮肤疾病患者心理调适与治疗支持
- 科技改变农业以科学种植为核心的现代农业模式
- 中国古典文献学(全套)
- WOMAC骨性关节炎指数评分表
- 年处理量48万吨重整装置芳烃精馏的工艺设计-二甲苯塔
- CRPS电源设计向导 CRPS Design Guide r-2017
- 16防冲工题库题库(238道)
- SH/T 1627.1-1996工业用乙腈
- GB/T 5534-2008动植物油脂皂化值的测定
- GB/T 3452.2-2007液压气动用O形橡胶密封圈第2部分:外观质量检验规范
- GB/T 30797-2014食品用洗涤剂试验方法总砷的测定
- GB/T 20057-2012滚动轴承圆柱滚子轴承平挡圈和套圈无挡边端倒角尺寸
- GB/T 19808-2005塑料管材和管件公称外径大于或等于90mm的聚乙烯电熔组件的拉伸剥离试验
评论
0/150
提交评论