嵌入式系统第六章 S3C2410A的基本接口应用程序设计_第1页
嵌入式系统第六章 S3C2410A的基本接口应用程序设计_第2页
嵌入式系统第六章 S3C2410A的基本接口应用程序设计_第3页
嵌入式系统第六章 S3C2410A的基本接口应用程序设计_第4页
嵌入式系统第六章 S3C2410A的基本接口应用程序设计_第5页
已阅读5页,还剩172页未读 继续免费阅读

下载本文档

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

文档简介

3个串行接口(UART)117位通用并行接口(GPIO)1个LCD控制器1个触摸屏接口8通道10位A/D转换器3个USB接口1个I2C总线接口2个SPI总线接口4个定时/计数器和1个内部时钟,1个看门狗计数器可处理56个中断源的中断系统SD卡和MMC卡接口SDRAM控制器4通道DMA控制器

S3C2410嵌入式微处理器的内部资源:第6章S3C2410A的基本接口应用程序设计具有ARM9内核的S3C2410微处理器的嵌入式系统硬件平台一、概述

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中。6.1S3C2410A的串行通信接口6.1.1S3C2410A的内部结构S3C2410A的内部集成了3个异步接收发送器(UART),它们可以作为串口使用实现串行通信。UART的内部结构串行口功能模块

6.1.2S3C2410AUART的主要功能异步串行通信方式是将传输数据的每个字符一位接一位地传送。其字符传送协议为:1.串行数据的发送和接收

工作原理

数据帧格式:可编程,包含1个开始位、5到8个数据位、1个可选的奇偶校验位、1个或2个停止位,通过线路控制器(ULCONn)来设置。 发送中止信号:迫使串口输出逻辑0,这种状态保持一个传输帧的时间长度。通常在一帧传输数据完整地传输完之后,再通过这个全0状态将中止信号发送给对方。中止信号发送之后,传送数据连续放到FIFO中(在不使用FIFO模式下,将被放到输出保持寄存器)。2.红外线模式数据的发送和接收UART连接红外收发器,可以进行红外数据通信3.提供串行通信时的状态信息S3C2410A的每个UART可以产生5个状态信号:接收缓冲器满、发送缓冲器空、发送移位器空、超时错误、帧错误,这些状态信号由两个状态寄存器(UTRSTAT和UERSTAT)来指示。接收器具有错误检测功能:可以检测出溢出错误,奇偶校验错误,帧错误和中止状况,每种情况下都会将一个错误标志在接收状态寄存器置位。4.使用FIFO进行收发

主要是通过对FIFO状态寄存器UFSTATn的查询,确定进行收发。

使用FIFO进行发送: (1)选择发送模式(中断或者DMA模式) (2)查询对方是否有请求发送要求,由MODEM状态寄存器UMSTATn[0]给出,该位为1,则有请求,再查询FIFO状态寄存器UFSTATn的发送数据满状态位是否为1,如果不是1,可以向发送缓冲寄存器UTXHn写入发送的数据。上面二者有一个或者两个都不满足,则不发送数据。

使用FIFO进行接收(请求发送): (1)选择接收模式(中断或者DMA模式) (2)请求发送。先要查询FIFO状态寄存器UFSTATn的接收数据满状态位是否为1,如果不是1,则可以向对方发出“请求发送信号”,对MODEM控制寄存器MCONn中的请求发送信号产生位置1,使UARTn发出nRTS信号;如果UFSTATn的数据满状态位是1,则不能够请求发送数据。

5.不使用FIFO进行收发

主要是通过对收/发状态寄存器UTRSTATn的查询,确定进行收发。

数据发送: (1)选择发送模式(中断或者DMA模式) (2)查询对方是否有请求发送要求,由MODEM状态寄存器UMSTATn[0]给出,该位为1,则有请求,再查询发送/接收状态寄存器UTRSTATn[1]的“发送缓冲器空”状态位是否为1,如果是1,可以向发送缓冲寄存器UTXHn写入发送的数据。

数据接收(请求发送): (1)选择接收模式(中断或者DMA模式) (2)请求发送。先要查询发送/接收状态寄存器UTRSTATn[0]的接收缓冲器“数据就绪状态位”是否为1,如果是1,需要先读取数据,然后再请求对方发送数据,方法是对MODEM控制寄存器MCONn中的请求发送信号产生位置1,使UARTn发出nRTS信号。

6.中断或DMA请求 每个UART都有3类、7种事件产生中断请求或者DMA请求。

7种中断请求事件是:溢出错误、奇偶校验错误、帧格式错误、传输中断信号、接收缓冲器数据就绪、发送缓冲器空、发送移位器空。 它们可以分成3类:错误中断请求、接收中断请求、发送中断请求。 接收中断:

非FIFO模式:当接收缓冲寄存器收到数据后,产生中断请求。

FIFO模式:RxFIFO中数据的数目达到了触发中断的水平,或者超时(在三帧时间内未收到任何数据),均产生中断请求。 发送中断: 非FIFO模式:当发送缓冲器空时,产生中断请求。

FIFO模式:TxFIFO中数据的数目达到了触发中断的水平。

错误中断: 一共有4种错误中断:溢出错误、奇偶检验错误、帧格式错误、传输中断信号错误。 非FIFO模式:只要有任何一个错误出现,就会产生中断请求。

FIFO模式:RxFIFO中数据溢出,或者出现了帧格式错误、奇偶校验错误、传输中断信号错误,都会产生中断请求。

说明:

(1)对于“奇偶校验错误、帧格式错误、传输中断信号错误”中断,在数据接收时就产生了,但是在数据接收产生时并非出现中断请求,而是在读出错误数据时才出现中断请求。 (2)如果设置的是DMA模式,而不是中断请求模式,对于以上所出现的中断请求,应该是DMA请求。 (3)传输中断信号定义:在超出一帧的时间内,全部输出低电平。

7.循环检测模式

S3C2410X的每一个UART都提供有检测功能,它是一种数据循环流动的自发、自收方式,数据从发送缓冲器传送到TXD,数据不经过引脚输出,在内部将数据传到接收引脚RXD,再传输到接收缓冲器。

8.串行口的自动流控制功能(AFC)

UART0和UART1不仅有完整的握手信号,而且有自动流控制功能,在寄存器UMCONn中设置实现。自动流控制是利用信号nRTS、nCTS来实现的。在接收数据时,只要接收FIFO中有两个空字节就会使nRTS有效,使对方发送数据;在发送数据时,只要nCTS有效,就会发送数据。其实现过程如下图所示。

nRTS:请求对方发送 nCTS:清除请求发送 注意:这种自动流控制应用于对方也是UART设备,不能应用于MODEM设备。

每个UART的波特率发生器为传输提供了串行移位时钟。波特率产生器的时钟源可以从S3C2410的内部系统时钟PCLK或UCLK中来选择。波特率数值决定于波特率除数寄存器(UBRDIVn)的值,波特率数与UBRDIVn的关系为:UBRDIVn=(int)(CLK/(fB*16))-1

其中CLK为所选择的时钟频率,fB为波特率。fB=CLK/16/(UBRDIVn+1

) 例如,如果波特率为115200bps且PCLK或UCLK为40MHz,则UBRDIVn为:

UBRDIVn=(int)(40000000)(115200*16))-1 =(int)(21.7)-1 =21-1

=20

6.1.3串行口的波特率发生器6.1.4UART的初始化UART在工作前必须对其进行初始化,即对UART的线控制寄存器(ULCON)、控制寄存器(UCON)、FIFO控制寄存器(UFCON)、Modem控制寄存器(UMCON)、波特率因子寄存器(UBRDIV)进行设置。UART专用寄存器

3个UART,每个都有11个专用寄存器,共31个寄存器RegisterAddressR/WDescriptionResetValueULCONn0x5000x000R/W线路控制寄存器0x00UCONn0x5000x004R/W控制寄存器0x00UFCONn0x5000x008R/WFIFO控制寄存器0x00UMCONn0x5000x00CR/WMODEM控制寄存器*0x00UTRSTATn0x5000x010R发送/接收状态寄存器0x6UERSTATn0x5000x014RRx错误状态寄存器0x0UFSTATn0x5000x018RFIFO状态寄存器0x00UMSTATn0x5000x01CRMODEM状态寄存器*0x0UTXHn0x5000x020/23W发送缓冲寄存器-URXHn0x5000x024/27R接收缓冲寄存器-UBRDIVn0x5000x028R/W波特率除数寄存器-1、线路控制寄存器(ULCON)RegisterAddressR/WDescriptionResetValueULCON00x50000000R/WUART0线路控制寄存器0x00ULCON10x50004000R/WUART1线路控制寄存器0x00ULCON20x50008000R/WUART2线路控制寄存器0x00字段名位意义初值-7保留0Infra-Red-Mode6

红外模式设置位。0:正常模式;1:红外0ParityMode5:3

奇偶校验类型。

0xx:不校验;

100:奇校验;101:偶校验;

110:强制为1;111:强制为0000Numofstopbit2

停止位个数。0:1个;1:2个0WordLength1:0

数据位数目。

00:5位;

01:6位;10:7位;11:8位002、控制寄存器(UCON)RegisterAddressR/WDescriptionResetValueUCON00x50000004R/WUART0控制寄存器0x00UCON10x50004004R/WUART1控制寄存器0x00UCON20x50008004R/WUART2控制寄存器0x002、控制寄存器(UCON)字段名位意义初值ClockSelection10波特率时钟源选择。0:PCLK;1:UCLK0TxIntType9发送中断请求类型。0:脉冲型;1:电平0RxIntType8接收中断请求类型。0:脉冲型;1:电平0RxTimeOVEna7接收超时中断控制。0:禁止;1:允许0RxERRIntEna6接收错误中断控制。0:禁止;1:允许0LoopbackMode5回送模式控制。0=正常操作;1=回送模式

0SendBreakSignal4发送暂停信号控制。0=正常传输;1=发送暂停信号(全为0)

0TransmitMode3:2

发送/接收模式控制。00:禁止发送/接收;

01:中断或查询模式;10:UART0、2用DMA0、DMA2;11:UART1用DMA100ReceiveMode1:0003、FIFO控制寄存器(UFCON)RegisterAddressR/WDescriptionResetValueUFCON00x50000008R/WUART0FIFO控制寄存器0x00UFCON10x50004008R/WUART1FIFO控制寄存器0x00UFCON20x50008008R/WUART2FIFO控制寄存器0x003、FIFO控制寄存器字段名位意义初值TxFIFOTriLeve7:6

TxFIFO的触发电平设置。

00:空;

01:减少到4字节;10:减少到8字节;11:减少到12字节00lRxFIFOTriLevel5:4

RxFIFO的触发电平设置。

00:增加到4字节;01:增加到8字节;

10:增加到12字节;11:增加到16字节00reserved3保留0TxFIFOReset2

TxFIFO清除控制。0:正常;1:清零0RxFIFOReset1

RxFIFO清除控制。0:正常;1:清零0FIFOEnable0

FIFO应用控制。0:失能;1:使能04、MODEM控制寄存器(UMCON)RegisterAddressR/WDescriptionResetValueUMCON00x5000000CR/WUART0MODEM控制寄存器0x00UMCON10x5000400CR/WUART1MODEM控制寄存器0x00reserved0x5000800C-保留-字段名位意义初值reserved7:5保留(为0)000AutoFlowControl(AFC)4

自动流控制。

0:一般方式;1:自动流控制0reserved3:1保留(为0)000RequesttoSend0

nRTS引脚信号控制。

0:nRTS为高电平;1:nRTS为低电平,有效。05、发送/接收状态寄存器(UTRSTAT)RegisterAddressR/WDescriptionResetValueUTRSTAT00x50000010RUART0状态寄存器0x06UTRSTAT10x50004010RUART1状态寄存器0x06UTRSTAT20x50008010RUART2状态寄存器0x06字段名位意义初值Transmitterempty2

发送器空状态位。0:发送器未空

1:发送器、发送缓冲器均空。1Transmitbufferempty1

发送缓冲器空状态位。0:未空;1:空

在非FIFO模式,激发中断或DMA请求1Receivebufferdataready0

接收缓冲器状态位。0:空;1:有数据在非FIFO模式,激发中断或DMA请求06、Rx错误状态寄存器(UERSTAT)RegisterAddressR/WDescriptionResetValueUERSTAT00x50000014RUART0Rx错误状态寄存器0x0UERSTAT10x50004014RUART1Rx错误状态寄存器0x0UERSTAT20x50008014RUART2Rx错误状态寄存器0x0字段名位意义初值BreakDetect

3

暂停信号状态。0:无暂停信号;

1:收到暂停信号(产生中断请求)0FrameError2

帧错误状态位。0:无帧错误;

1:有帧错误(产生中断请求)0ParityError

1

奇偶校验错误状态。0:无奇偶校验错

1:有奇偶校验错误(产生中断请求)0OverrunError0

溢出错误状态位。0:无溢出错误;

1:溢出错误(产生中断请求)07、FIFO状态寄存器(UFSTAT)RegisterAddressR/WDescriptionResetValueUFSTAT00x50000018RUART0FIFO状态寄存器0x00UFSTAT10x50004018RUART1FIFO状态寄存器0x00UFSTAT20x50008018RUART2FIFO状态寄存器0x00字段名位意义初值Reserved15:10

保留(为0)0TxFIFOFull9

发送FIFO满状态。0:未满;1:满0RxFIFOFull8

接收FIFO状态位。

0:未满;1:满0TxFIFOCount7:4

发送FIFO中数据的数目,字节单位。0RxFIFOCount3:0

接收FIFO中数据的数目,字节单位。08、MODEM状态寄存器(UMSTAT)RegisterAddressR/WDescriptionResetValueUMSTAT00x5000001CRUART0Modem状态寄存器0x0UMSTAT10x5000401CRUART1Modem状态寄存器0x0Reserved0x5000801CR保留-字段名位意义初值Reserved3

保留(为0)0DeltaCTS

2

nCTS引脚信号自上次读后变化状态。

0:未改变;1:已改变。0Reserved1

保留(为0)0CleartoSend0

nCTS引脚信号状态。

0:nCTS为高电平;1:nCTS引脚为低电平,有效。09、发送缓冲寄存器(UTxH)RegisterAddressR/WDescriptionResetValueUTxH00x50000020(L)0x50000023(B)W(byte)UART0发送缓冲寄存器-UTxH10x50004020(L)0x50004023(B)W(byte)UART1发送缓冲寄存器-UTxH20x50008020(L)0x50008023(B)W(byte)UART2发送缓冲寄存器-字段名位意义初值TxDATAn7:0UARTn发送的一个字节数据-注:表中L地址为小端模式下的地址,B为大端模式时地址.

当判断串口准备好发送数据时,将数据放入发送缓冲器UTXH发送数据。10、接收缓冲寄存器(URxH)RegisterAddressR/WDescriptionResetValueURxH00x50000024(L)0x50000027(B)R(byte)UART0接收缓冲寄存器0x00URxH10x50004024(L)0x50004027(B)R(byte)UART1接收缓冲寄存器0x00URxH20x50008024(L)0x50008027(B)R(byte)UART2接收缓冲寄存器0x00字段名位意义初值RxDATAn7:0UARTn接收的一个字节数据。-当判断串口已接收到数据时,从接收缓冲器URXH中读取数据。11、波特率除数寄存器(UBRDIV)RegisterAddressR/WDescriptionResetValueUBRDIV00x50000028R/WUART0波特率除数寄存器-UBRDIV10x50004028R/WUART1波特率除数寄存器-UBRDIV20x50008028R/WUART2波特率除数寄存器-字段名位意义初值UBRDIV15:0

波特率除数值。UBRDIVn>0-【例6.2】编程实现UART0发送一个字符的程序和UART0接收一个字符的程序,发送和接收均采用查询的方法进行控制。解:根据题目要求,采用UTRSTAT0的第1位来判断发送缓冲器是否准备就绪,UTRSTAT0的第0位来判断收缓冲区是否接收到数据。

#defineWrUTXH0(ch)(*(volatileunsignedchar)0x50000020)=(unsignedchar)(ch)/*定义串口0发送缓冲器*/#defineRdURXH0()(*(volatileunsignedchar*)0x50000024)/*定义串口0接收缓冲器*/#definerUTRSTAT0(*(volatileunsigned*)0x50000010)

/*定义串口0接收/发送状态寄存器*/发送一个字符的子函数为:voidUart0_SendByten(intdata)//发送一个字符的子函数定义{while(!(rUTRSTAT0&0x2));//判断发送缓冲器是否为空,未空则等待.hudelay(10);//延时WrUTXH0(data);//发送数据}接收一个字符的子函数为:charUart0_Getchn(viod)//接收一个字符的子函数定义{if(rUTRSTAT0&0x1));//判断接收缓冲器是否有接收到数据returnRdURXH0();//有则返回接收到的数据elsereturn0;//没有则返回0计算机之间串行通信的硬件连接一般采用RS-232C标准,有如下两种基本连接方式:

简单连接完全连接S3C2410AUART与RS232的连接电平转换电路6.1.6串口应用编程举例编程实现S3C2410与PC机串行通信,在PC机上通过超级终端在键盘输入字符,由超级终端将字符经PC机串口送到S3C2410的串口,S3C2410收到字符后再经PC机串口将字符发回到超级终端显示。目标板初始化回车换行调串口接收数据子函数调串口发送数据子函数开始开始开始接收缓冲器有数据接收数据发送缓冲器空发送数据返回返回主程序串口接收数据子函数串口发送数据子函数程序框图#include<string.h>//包含字符处理库函数#include<stdio.h>//包含标准输入输出库函数#defineU8unsignedchar#defineTRUE 1#defineFALSE 0#pragmaimport(_use_no_semihosting_swi)//不使用软中断

/**********串口通信主函数***********/#definerUTRSTAT0(*(volatileunsigned*)0x50000010)//定义串口0的状态寄存器地址#defineWrUTXH0(ch) (*(volatileunsignedchar*)0x50000020)=(unsignedchar)(ch)//定义串口0的发送缓冲器地址#defineRdURXH0() (*(volatileunsignedchar*)0x50000024)//定义串口0的接收缓冲器地址voidUart_SendByten(int,U8);//发送函数charUart_Getchn(char*Revdata,intUartnum,inttimeout);//接收函数voidARMTargetInit(void);//目标板初始化函数voidhudelay(inttime);//延时函数intmain(void)//主函数{charc1[1];charerr;ARMTargetInit();//目标板初始化

while(1){Uart_SendByten(0,0xa);//换行

Uart_SendByten(0,0xd);//回车

err=Uart_Getchn(c1,0,0);//调串口0接收数据子函数

Uart_SendByten(0,c1[0]);//调串口0发送数据子函数

}}

串口0发送“换行符”接收数据的存放数组串口0允许超时时间串口0发送数据的存放数组调串口接收函数的返回值,返回值可用来判断接收是否成功voidUart_SendByten(intUartnum,U8data)//串口0发送数据子函数

{ while(!(rUTRSTAT0&0x4));//串口0等待发送数据

hudelay(10);//延时

WrUTXH0(data);//串口0发送数据

}

串口号要发送的数据发送的数据串口0发送数据操作charUart_Getchn(char*Revdata,intUartnum,inttimeout)//串口0接收数据子函数

{ while(!(rUTRSTAT0&0x1));//串口0等待接收数据 *Revdata=RdURXH0();//串口0接收数据

returnTRUE;//串口0接收数据成功返回

}

串口0接收数据操作6.2输入/输出端口主要内容概述寄存器应用举例一、概述

S3C2410X有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功能、中断功能等等。

二、端口寄存器及引脚配置 每一个端口都有4个寄存器,它们是:引脚配置寄存器、数据寄存器、引脚上拉寄存器等。RegisterAddressR/WDescriptionResetValueGPXCON0x560000x0R/W端口X配置寄存器XGPXDAT0x560000x4R/W端口X数据寄存器XGPXUP0x560000x8R/W端口X上拉寄存器XRESERVED0x560000xCR/W端口X保留寄存器- GPADAT寄存器为准备输出的数据其值为23位[22:0]

注意:(1)当A口引脚配置为非输出功能时,其输出无意义; (2)从引脚输入没有意义。1、端口A寄存器及引脚配置

RegisterAddressR/WDescriptionResetValueGPACON0x56000000R/W端口A引脚配置寄存器0x7FFFFFGPADAT0x56000004R/W端口A数据寄存器-RESERVED0x56000008-端口A保留寄存器-RESERVED0x5600000C-端口A保留寄存器-1、端口A寄存器及引脚配置

位号位名位值:01位号位名位值:0122GPA22输出nFCE10GPA10输出ADDR2521GPA21输出nRSTOUT9GPA9输出ADDR2420GPA20输出nFRE8GPA8输出ADDR2319GPA19输出nFWE7GPA7输出ADDR2218GPA18输出ALE6GPA6输出ADDR2117GPA17输出CLE5GPA5输出ADDR2016GPA16输出nGCS54GPA4输出ADDR1915GPA15输出nGCS43GPA3输出ADDR1814GPA14输出nGCS32GPA2输出ADDR1713GPA13输出nGCS21GPA1输出ADDR1612GPA12输出nGCS10GPA0输出ADDR011GPA11输出ADDR26GPBDAT---为准备输出或输入的数据 其值为11位[10:0]GPBUP---端口B上拉寄存器,位[10:0]有意义。

0:对应引脚设置为上拉 1:无上拉功能

注意:

当B口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。2、端口B寄存器及引脚配置

RegisterAddressR/WDescriptionResetValueGPBCON0x56000010R/W端口B引脚配置寄存器0x0GPBDAT0x56000014R/W端口B数据寄存器-GPBUP0x56000018R/W端口B上拉寄存器0x0RESERVED0x5600001C-端口B保留寄存器-端口B引脚配置寄存器

位号位名位值:0001101121,20GPB10输入输出nXDREQ0Reserved19,18GPB9输入输出nXDACK0Reserved17,16GPB8输入输出nXDREQ1Reserved15,14GPB7输入输出nXDACK1Reserved13,12GPB6输入输出nXBACKReserved11,10GPB5输入输出nXBREQReserved9,8GPB4输入输出TCLK0Reserved7,6GPB3输入输出TOUT3Reserved5,4GPB2输入输出TOUT2Reserved3,2GPB1输入输出TOUT1Reserved1,0GPB0输入输出TOUT0ReservedGPCDAT---为准备输出或输入的数据 其值为16位[15:0]GPCUP---端口C上拉寄存器,位[15:0]有意义。

0:对应引脚设置为上拉 1:无上拉功能

注意:

当C口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。3、端口C寄存器及引脚配置

RegisterAddressR/WDescriptionResetValueGPCCON0x56000020R/W端口C引脚配置寄存器0x0GPCDAT0x56000024R/W端口C数据寄存器-GPCUP0x56000028R/W端口C上拉寄存器0x0RESERVED0x5600002C-端口C保留寄存器-端口C引脚配置寄存器

位号位名位值位号位名位值000110110001101131,30GPC15输入输出VD7保留15,14GPC7输入输出LCDVF2保留29,28GPC14输入输出VD6保留13,12GPC6输入输出LCDVF1保留27,26GPC13输入输出VD5保留11,10GPC5输入输出LCDVF0保留25,24GPC12输入输出VD4保留9,8GPC4输入输出VM保留23,22GPC11输入输出VD3保留7,6GPC3输入输出VFRAME保留21,20GPC10输入输出VD2保留5,4GPC2输入输出VLINE保留19,18GPC9输入输出VD1保留3,2GPC1输入输出VCLK保留17,16GPC8输入输出VD0保留1,0GPC0输入输出VEND保留GPDDAT---为准备输出或输入的数据 其值为16位[15:0]GPDUP---端口D上拉寄存器,位[15:0]有意义。

0:对应引脚设置为上拉 1:无上拉功能 初始化时,[15:12]无上拉功能,而[11:0]有上拉

注意:

当D口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。4、端口D寄存器及引脚配置

RegisterAddressR/WDescriptionResetValueGPDCON0x56000030R/W端口D引脚配置寄存器0x0GPDDAT0x56000034R/W端口D数据寄存器-GPDUP0x56000038R/W端口D上拉寄存器0xF000RESERVED0x5600003C-端口D保留寄存器-端口D引脚配置寄存器位号位名位值位号位名位值000110110001101131,30GPD15输入输出VD23nSS015,14GPD7输入输出VD15保留29,28GPD14输入输出VD22nSS113,12GPD6输入输出VD14保留27,26GPD13输入输出VD21保留11,10GPD5输入输出VD13保留25,24GPD12输入输出VD20保留9,8GPD4输入输出VD12保留23,22GPD11输入输出VD19保留7,6GPD3输入输出VD11保留21,20GPD10输入输出VD18保留5,4GPD2输入输出VD10保留19,18GPD9输入输出VD17保留3,2GPD1输入输出VD9保留17,16GPD8输入输出VD16保留1,0GPD0输入输出VD8保留GPEDAT---为准备输出或输入的数据 其值为16位[15:0]GPEUP---端口E上拉寄存器,位[15:0]有意义。

0:对应引脚设置为上拉 1:无上拉功能 初始化时,各个引脚都有上拉功能。

注意:

当E口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。5、端口E寄存器及引脚配置

RegisterAddressR/WDescriptionResetValueGPECON0x56000040R/W端口E引脚配置寄存器0x0GPEDAT0x56000044R/W端口E数据寄存器-GPEUP0x56000048R/W端口E上拉寄存器0x0RESERVED0x5600004C-端口E保留寄存器-端口E引脚配置寄存器位号位名位值位号位名位值000110110001101131,30GPE15输入输出IICSDA保留15,14GPE7输入输出SDDAT0保留29,28GPE14输入输出IICSCL保留13,12GPE6输入输出SDCMD保留27,26GPE13输入输出SPICLK0保留11,10GPE5输入输出SDCLK保留25,24GPE12输入输出SPISI0保留9,8GPE4输入输出IISSDO保留23,22GPE11输入输出SPISO0保留7,6GPE3输入输出IISSDI保留21,20GPE10输入输出SDDAT3保留5,4GPE2输入输出CDCLK保留19,18GPE9输入输出SDDAT2保留3,2GPE1输入输出IISSCLK保留17,16GPE8输入输出SDDAT1保留1,0GPE0输入输出IISLRCK保留GPFDAT---为准备输出或输入的数据 其值为8位[7:0]GPFUP---端口F上拉寄存器,位[7:0]有意义。

0:对应引脚设置为上拉 1:无上拉功能 初始化时,各个引脚都有上拉功能。

注意:

当F口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。6、端口F寄存器及引脚配置

RegisterAddressR/WDescriptionResetValueGPFCON0x56000050R/W端口F引脚配置寄存器0x0GPFDAT0x56000054R/W端口F数据寄存器-GPFUP0x56000058R/W端口F上拉寄存器0x0RESERVED0x5600005C-端口F保留寄存器-端口F引脚配置寄存器位号位名位值0001101115,14GPF7输入输出EINT7保留13,12GPF6输入输出EINT6保留11,10GPF5输入输出EINT5保留9,8GPF4输入输出EINT4保留7,6GPF3输入输出EINT3保留5,4GPF2输入输出EINT2保留3,2GPF1输入输出EINT1保留1,0GPF0输入输出EINT0保留GPGDAT---为准备输出或输入的数据 其值为16位[15:0]GPGUP---端口G上拉寄存器,位[15:0]有意义。

0:对应引脚设置为上拉 1:无上拉功能 初始化时,[15:11]引脚无上拉功能,其它引脚有。

注意:

当G口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。7、端口G寄存器及引脚配置

RegisterAddressR/WDescriptionResetValueGPGCON0x56000060R/W端口G引脚配置寄存器0x0GPGDAT0x56000064R/W端口G数据寄存器-GPGUP0x56000068R/W端口G上拉寄存器0xF800RESERVED0x5600006C-端口G保留寄存器-端口G引脚配置寄存器位号位名位值位号位名位值000110110001101131,30GPG15输入输出EINT23nYPON15,14GPG7输入输出EINT15SPICLK129,28GPG14输入输出EINT22YMON13,12GPG6输入输出EINT14SPISI127,26GPG13输入输出EINT21nXPON11,10GPG5输入输出EINT13SPISO125,24GPG12输入输出EINT20XMON9,8GPG4输入输出EINT12LCD-PEN23,22GPG11输入输出EINT19TCLK17,6GPG3输入输出EINT11nSS121,20GPG10输入输出EINT18保留5,4GPG2输入输出EINT10nSS019,18GPG9输入输出EINT17保留3,2GPG1输入输出EINT9保留17,16GPG8输入输出EINT16保留1,0GPG0输入输出EINT8保留LCD-PEN:POWER_ENABLEnSS0:SPI0_SELECTGPHDAT---为准备输出或输入的数据 其值为11位[10:0]GPHUP---端口H上拉寄存器,位[10:0]有意义。

0:对应引脚设置为上拉 1:无上拉功能

注意:

当H口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。8、端口H寄存器及引脚配置

RegisterAddressR/WDescriptionResetValueGPHCON0x56000070R/W端口H引脚配置寄存器0x0GPHDAT0x56000074R/W端口H数据寄存器-GPHUP0x56000078R/W端口H上拉寄存器0x0RESERVED0x5600007C-端口H保留寄存器-端口H引脚配置寄存器

位号位名位值:0001101121,20GPH10输入输出CLKOUT1Reserved19,18GPH9输入输出CLKOUT0Reserved17,16GPH8输入输出UCLKReserved15,14GPH7输入输出RXD2nCTS113,12GPH6输入输出TXD2nRTS111,10GPH5输入输出RXD1Reserved9,8GPH4输入输出TXD1Reserved7,6GPH3输入输出RXD0Reserved5,4GPH2输入输出TXD0Reserved3,2GPH1输入输出nRTS0Reserved1,0GPH0输入输出nCTS0ReservedUCLK为USB的GPIO应用举例下图是基于S3C2410的芯片设计的一个电路,根据下图,回答问题:

1、读下面的电路图,说明该电路完成的功能是什么?并简要说明其工作原理。1)该电路完成的功能是通过S3C2410的GPB7-10的4个端口控制的4个LED的点亮和熄灭。

2)工作原理:由电路原理图知,4个发光二极管LED的正极接电源的正极。当GPB7-10端口的某一位输出为0时,对应的该发光二极管LED被点亮,当GPB7-10端口的某一位输出为1时,对应的该发光二极管LED熄灭。2、根据下面的s3c2410的数据手册与上面的电路,回答下列问题:答:1):(1)GPBCON寄存器的作用是配置B口的功能属性,如输入输出属性。(2)根据上面电路实现的功能,在此实验中GPB7-10端口定义为输出属性。(3)用到了GPBCON寄存器的14-21位,GPB7-10端口对应的位的值为bit[15:14]=01,bit[17:16]=01,bit[19:18]=01,bit[21:20]=01,其余为为0,可以求出GPBCON寄存器的配置数据为0x154000。1)说明GPBCON寄存器的作用?根据上面电路实现的功能,指出用到了该寄存器的那些位,并设置该位的值,最后求出GPBCON寄存器的配置数据?

2)说明GPBUP寄存器的作用?根据上面电路实现的功能,禁止GPB端口的上拉电阻,指出用到了该寄存器的那些位,并设置该位的值,最后求出GPBUP寄存器的配置数据?答:(1)GPBUP寄存器的作用是为提供或禁止上拉电阻。(2)根据上面电路实现的功能,禁止GPB端口的上拉电阻,用到了该寄存器的7-10位,对应的位的值为1,可以求出GPBUP寄存器的配置数据为0xfffff(说明:该值有多个,只要保证7-10对应的位设置正确就行)。3)说明GPBDAT寄存器的作用?根据上面电路实现的功能,使LED1亮、LED2、LED3、LED4灭,指出用到了该寄存器的那些位,并设置该位的值,最后求出GPBDAT寄存器的配置数据?答:(1)GPBDAT寄存器的作用是设置端口的数据。(2)根据上面电路实现的功能,使LED1亮、LED2、LED3、LED4灭,用到了该寄存器的7-10位,对应的相关位的值为:第7为0,第8-10位为1,可以求出GPBDAT寄存器的配置数据为0xff7f(说明:该值有多个,只要保证7-10对应的位设置正确就行)。9、端口其它控制寄存器

RegisterAddressR/WDescriptionResetValueMISCCR0x56000080R/W混合控制寄存器0x10330DCLKCON0x56000084R/WD时钟控制寄存器0x0nEN_SCKE---SCLK使能位。在电源关闭模式下对SDRAM做保护

0:正常状态 1:低电平nEN_SCLKx---SCLKx使能位。在电源关闭模式下对SDRAM做保护

0:SCLKx=SCLK 1:低电平nRSTCON---对nRSTOUT软件复位控制位

0:使nRSTOUT为低,0;1:使nRSTOUT为高,1151413121110987保留USBSUSPND1

USBSUSPND0

保留CLKSEL1

保留(1)MISCCR---混合控制寄存器31……2019181716保留(为0)nEN_SCKE

nEN_SCLK1

nEN_SCLK0

nRSTCON

6543210CLKSEL0

USBPAD

MEM_HZ_CONSPUCR_L

SPUCR_H

USBSUSPND1---USB端口1模式

0:正常 1:浮空USBSUSPND0---USB端口0模式

0:正常 1:浮空CLKSEL1---CLKOUT1引脚输出信号源选择

000:MPLLCLK 001:UPLLCLK 010:FCLK 011:HCLK 100:PCLK 101:DCLK1 11x:保留CLKSEL0---CLKOUT0引脚输出信号源选择

000:MPLLCLK 001:UPLLCLK 010:FCLK 011:HCLK 100:PCLK 101:DCLK0 11x:保留151413121110987保留USBSUSPND1

USBSUSPND0

保留CLKSEL1

保留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:无上拉6543210CLKSEL0

USBPAD

MEM_HZ_CONSPUCR_L

SPUCR_H

15…1211109876543210保留DCLK0CMPDCLK0DIV保留DCLK0SelCKDCLK0EN(2)DCLKCON---D时钟控制寄存器31…28272625242322212019181716保留DCLK1CMP

DCLK1DIV

保留

DCLK1SEL

DCLK1ENDCLK1(0)CMP---DCLK1(0)低电平时间所占的比例数。 设该位值为m,m<DCLK1(0)DIV。 则低、高电平持续时间的源周期数分别为:

m+1、DCLK1(0)DIV-mDCLK1(0)DIV---DCLK1(0)分频值

DCLK1(0)frequency =sourceclock/(DCLK1(0)DIV+1)15…1211109876543210保留DCLK0CMPDCLK0DIV保留DCLK0SelCKDCLK0EN(2)DCLKCON---D时钟控制寄存器(续)31…28272625242322212019181716保留DCLK1CMP

DCLK1DIV

保留

DCLK1SEL

DCLK1ENDCLK1(0)SelCK---DCLK1(0)sourceclock选择

0:源时钟选择PCLK 1:源时钟选择UCLK(USB)DCLK1(0)EN---DCLK1(0)Enable 0:禁止

1:允许

主要设置各个外中断源的触发方式、滤波10、外中断控制寄存器

RegisterAddressR/WDescriptionResetValueEXTINT00x56000088R/W外中断触发方式寄存器00x0EXTINT10x5600008CR/W外中断触发方式寄存器10x0EXTINT20x56000090R/W外中断触发方式寄存器20x0EINT0~7---中断请求信号触发方式选择

000:低电平触发 001:高电平触发

01x:下降沿触发 10x:上升沿触发

11x:双边沿触发第3、7、11、15、19、23、27、31位---保留1514131211109876543210XEINT3XEINT2XEINT1XEINT0(1)EXTINT0---外中断触发方式控制寄存器031302928272625242322212019181716XEINT7XEINT6XEINT5XEINT4EINT8~15---中断请求信号触发方式选择

000:低电平触发 001:高电平触发

01x:下降沿触发 10x:上升沿触发

11x:双边沿触发第3、7、11、15、19、23、27、31位---保留1514131211109876543210XEINT11XEINT10XEINT9XEINT8(2)EXTINT1---外中断触发方式控制寄存器131302928272625242322212019181716XEINT15XEINT14XEINT13XEINT12EINT16~23---外中断请求信号触发方式选择

000:低电平触发 001:高电平触发

01x:下降沿触发 10x:上升沿触发

11x:双边沿触发第3、7、11、15、19、23、27、31位---为FILTEN各引脚滤波控制位

0:禁止滤波 1:使能滤波1514131211109876543210F19EINT19F18EINT18F17EINT17F16EINT16(3)EXTINT2---外中断控制寄存器231302928272625242322212019181716F23EINT23F22EINT22F21EINT21F20EINT20

主要设置各个外中断源的滤波器设置11、外中断滤波控制寄存器

RegisterAddressR/WDescriptionResetValueEINTFLT00x56000094R/W保留-EINTFLT10x56000098R/W保留-EINTFLT20x5600009CR/W外中断滤波控制寄存器20x0EINTFLT30x560000A0R/W外中断滤波控制寄存器30x0FLTCLK16~19---外中断16~19滤波器时钟选择

0:PCLK 1:外部/振荡时钟(由OM引脚选择)EINTFLT16~19---外中断16~19滤波器宽度(频带宽度)

1514……876……0FLTCLK17EINTFLT17FLTCLK16EINTFLT16(1)EINTFLT2---外中断滤波控制寄存器23130……24232216FLTCLK19EINTFLT19FLTCLK18EINTFLT18FLTCLK20~23---外中断20~23滤波器时钟选择

0:PCLK 1:外部/振荡时钟(由OM引脚选择)EINTFLT20~23---外中断20~23滤波器宽度(频带宽度)

1514……876……0FLTCLK21EINTFLT21FLTCLK20EINTFLT20(2)EINTFLT3---外中断滤波控制寄存器33130……24232216FLTCLK23EINTFLT23FLTCLK22EINTFLT2212、外中断屏蔽、标志寄存器

RegisterAddressR/WDescriptionResetValueEINTMAK0x560000A4R/W外中断屏蔽寄存器0x00FFFFF0EINTPEND0x560000A8R/W外中断标志寄存器0x0外中断屏蔽寄存器EINTMAK位号含义位号含义位号含义23EINT2315EINT157EINT722EINT2214EINT146EINT621EINT2113EINT135EINT520EINT2012EINT124EINT419EINT1911EINT113保留18EINT1810EINT102保留17EINT179EINT91保留16EINT168EINT80保留各位:

0:允许中断 1:禁止中断注意:EINT0---EINT3不能在此被屏蔽,在SRCMAK中屏蔽。外中断标志寄存器EINTPEND位号含义位号含义位号含义23EINT2315EINT157EINT722EINT2214EINT146EINT621EINT2113EINT135EINT520EINT2012EINT124EINT419EINT1911EINT113保留18EINT1810EINT102保留17EINT179EINT91保留16EINT168EINT80保留各位:

0:无中断请求 1:有中断请求

注意:对某位写1,则清除相应标志,即清为0.GSTATUS3、4: 复位时被清0,其它情况下其数据不变。 用户可以用于保存数据。13、外中断状态寄存器

RegisterAddressR/WDescriptionResetValueGSTATUS00x560000ACR外部引脚状态寄存器不确定GSTATUS10x560000B0R芯片ID(标识)寄存器0x32410000GSTATUS20x560000B4R/W复位状态寄存器0x1GSTATUS30x560000B8R/W信息保存寄存器0x0GSTATUS40x560000C0R/W信息保存寄存器0x0nWAIT---引脚nWAIT状态nCON---引脚nCON状态RnB---引脚R/nB状态nBATT_FLT---引脚nBATT_FLT状态

注意:各位的数值0、1,随着对应引脚变化。31……43210保留nWAITnCONRnBnBATT_FLT(1)GSTATUS0---外部引脚状态寄存器WDTRST---上电复位控制状态

1:出现了上电复位 对该位写,则将该位清0OFFRST---掉电模式复位状态。

1:系统出现了从掉电模式唤醒复位 对该位写,则将该位清0PWRST---看门狗复位状态

1:系统出现了看门狗定时器复位 对该位写,则将该位清031……3210保留WDTRSTOFFRSTPWRST(2)GSTATUS2---复位状态寄存器中断控制器INTERRUPTPRIORITYGENERATINGBLOCKINTERRUPTCONTROLLERSPECIALREGISTERSSOURCEPENDING(SRCPND)REGISTERINTERRUPTMODE(INTMOD)REGISTERINTERRUPTMASK(INTMSK)REGISTERINTERRUPTPENDING(INTPND)REGISTERINTERRUPTOFFSET(INTOFFSET)REGISTERSUBSOURCEPENDING(SUBSRCPND)REGISTERINTERRUPTSUBMASK(INTSUBMSK)REGISTER外中断举例staticvoid__irqEint0Int(void){ClearPending(BIT_EINT0);Uart_Printf("EINT0interruptisoccurred.\n");}staticvoid__irqEint1Int(void){ClearPending(BIT_EINT1);Uart_Printf("EINT1interruptisoccurred.\n");}#defineClearPending(bit){\rSRCPND=bit;\rINTPND=bit;\ rINTPND;\}

voidTest_Eint(void){inti;intextintMode; //选择外中断触发方式变量

Uart_Printf("[ExternalInterruptTest]\n");Uart_Printf("1.L-LEVEL2.H-LEVEL3.F-EDGE4.R-EDGE5.B-EDGE\n");Uart_Printf("Selecttheexternalinterrupttype.\n");extintMode=Uart_Getch(); //extintMode='3';rGPFCON=(rGPFCON&0xfffa)|(1<<3)|(1<<1); //设置引脚配置,F0、F1配置为EINT0/1

switch(extintMode){case'1': rEXTINT0

温馨提示

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

评论

0/150

提交评论