第五章-基于S3C2410系统硬件设计_第1页
第五章-基于S3C2410系统硬件设计_第2页
第五章-基于S3C2410系统硬件设计_第3页
第五章-基于S3C2410系统硬件设计_第4页
第五章-基于S3C2410系统硬件设计_第5页
已阅读5页,还剩105页未读 继续免费阅读

下载本文档

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

文档简介

第5章基于S3C2410的系统硬件设计第五章基于3C2410的系统硬件设计1第5章基于S3C2410的系统硬件设计主要内容132S3C2410简介I/O口中断A/D接口DMAUART6789

触摸屏10111LCDUSB设备的数据收发音频录放键盘和LED控制第5章基于S3C2410的系统硬件设计5.1

S3C2410简介S3C2410是Samsung公司推出的16/32位RISC处理器,主要面向手持设备以及高性价比、低功耗的应用。CPU内核采用的是ARM公司设计的16/32位ARM920T

RISC处理器。S3C2410A提供一组完整的系统外围设备:√2个USB主设备接口,1个USB从设备接口;√4通道PWM定时器和1通道内部定时器;√看门狗定时器;√117位通用I/O口和24通道外部中断源;√电源控制模式包括:正常、慢速、空闲和掉电四种模式;√8通道10位ADC和触摸屏接口;√具有日历功能的RTC;√使用PLL的片上时钟发生器。√1.8V/2.0V内核供电,3.3V存储器供电,3.3V外部I/O供电;√具有16KB的ICache和16KB的DCache以及

MMU;√外部存储器控制器;√LCD控制器提供1通道LCD专用DMA;√4通道DMA并有外部请求引脚;√3通道UART和2通道SPI;√1通道多主机IIC总线和1通道IIS总线控制器;√SD主接口版本1.0和MMC卡协议2.11兼容版;1第5章基于S3C2410的系统硬件设计S3C2410结构框图1第5章基于S3C2410的系统硬件设计5.1.1

S3C2410A的特点√体系结构√系统管理器√NAND

Flash启动装载器√Cache存储器√时钟和电源管理√中断控制器√具有脉冲带宽调制(PWM)的定时器√RTC(实时时钟)√通用I/O口√UART√DMA控制器√A/D转换和触摸屏接口√LCD控制器STN

LCD显示特性√TFT彩色显示特性√看门狗定时器√IIC总线接口√IIS总线接口√USB主设备√USB从设备√SD主机接口√SPI接口√工作电压√封装1第5章基于S3C2410的系统硬件设计5.1.2存储器控制器S3C2410A的存储器控制器提供访问外部存储器所需要的存储器控制信号。支持小/大端(通过软件选择)地址空间:每bank有128M字节(总共有8个banks,共1G字节)除bank0(只能是16/32位宽)之外,其他bank都具有可编程的访问大小(可以是8/16/32位宽)总共有8个存储器banks(bank0~bank7)·其中6个banks用于ROM,SRAM等·剩下2个banks用于ROM,SRAM,SDRAM等7个固定的存储器bank(bank0~bank6)起始地址最后一个bank(bank7)的起始地址是可调整的最后两个bank(bank6~bank7)的大小是可编程的所有存储器bank的访问周期都是可编程的总线访问周期可以通过插入外部等待来延长支持SDRAM的自刷新和掉电模式特性1第5章基于S3C2410的系统硬件设计存储器映射1第5章基于S3C2410的系统硬件设计5.1.3

NAND

Flash控制器特性NAND

Flash模式:支持读/擦除/编程NAND

Flash存储器。自动启动模式:复位后,启动代码被传送到Steppingsto中。传送完毕后,启动代码在Steppingstone中执行。具备硬件ECC(校验码,Error

Correction

Code)生成模块(硬件生成校验码,通过软件校验)。NAND

Flash启动以后,4KB的内部SRAM缓冲器

Steppingstone可以作为其他用途使用。NAND

Flash控制器不能通过DMA访问,可以使用

LDM/STM指令来代替DMA操作。1第5章基于S3C2410的系统硬件设计·

NAND

Flash控制器的结构框图1第5章基于S3C2410的系统硬件设计·

NAND

Flash的工作方式1第5章基于S3C2410的系统硬件设计·

NAND

Flash存储器的时序1第5章基于S3C2410的系统硬件设计5.1.4

时钟和电源管理1时钟和电源管理模块包括三部分:·时钟控制:CPU所需的FCLK时钟信号、AHB总线外围设备所需的HCLK时钟信号,以及APB总线外围设备所需的PCLK时钟信号。·USB控制·电源控制√正常模式√慢速模式√空闲模式√掉电模式第5章基于S3C2410的系统硬件设计主要内容132S3C2410简介I/O口中断A/D接口DMAUART6789

触摸屏10111LCDUSB设备的数据收发音频录放键盘和LED控制第5章基于S3C2410的系统硬件设计5.2.1

S3C2410A的I/O口工作原理1GPIO(General

Purpose

I/O,通用输入/输出接

口)也称为并行I/O(parallel

I/O),是最基本的

I/O形式,由一组输入引脚、输出引脚或输入/输出引脚组成,CPU对它们能够进行存取操作。有些

GPIO引脚能够通过软件编程改变输入/输出方向。一个双向GPIO端口(D0)的简化功能逻辑图如图

5.2.1所示,图中PORT为数据寄存器和DDR(Data

Direction

Register)为数据方向寄存器。第5章基于S3C2410的系统硬件设计图5.2.1

双向GPIO功能逻辑图5.2.1

S3C2410A的I/O口工作原理1第5章基于S3C2410的系统硬件设计DDR设置端口的方向。如果DDR的输出为1,则GPIO端口为输出形式;如果DDR的输出为零,则GPIO端口为输入形式。写入WR—DDR信号能够改变DDR的输出状态。DDR在微控制器地址空间中是一个映射单元。这种情况下,如果需要改变DDR,则需要将恰当的值置于数据总线的第0位(即D0),同时激活WR—DDR信号。读DDR,就能得到DDR的状态,同时激活RD—DDR信号。如果设置PORT引脚端为输出,则PORT寄存器控制着该引脚端状态。如果将PORT引脚端设置为输入,则此输入引脚端的状态由引脚端上的逻辑电路层来实现对它的控制。对PORT寄存器的写操作,需要激活WR—PORT信号。PORT寄存器也映射到微控制器的地址空间。需指出,即使当端口设置为输入时,如果对PORT寄存器进行写操作,并不会对该引脚产生影响。但从PORT寄存器的读出,不管端口是什么方向,总会影响该引脚端的状态5.2.1

S3C2410A的I/O口工作原理1第5章基于S3C2410的系统硬件设计S3C2410A共有117个多功能复用输入/输出端口(I/O口),分为端口A~端口H共8组。为了满足不同系统设计的需要,每个I/O口可以很容易地通过软件对进行配置。每个引脚的功能必须在启动主程序之前进行定义。如果一个引脚没有使用复用功能,那么它可以配置为I/O口。注意:端口A除了作为功能口外,只能够作为输出口使用。5.2.1

S3C2410A的I/O口工作原理1端口A可选择的引脚端功能GPA22输出nFCE–GPA21输出nRSTOUT–GPA20输出nFRE–GPA19输出nFWE–GPA18输出ALE–GPA17输出CLE–GPA16~GPA12输出nGCS5~nGCS1–1第5章基于S3C2410的系统硬件设计表5.2.1

S3C2410A的端口A

I/O口配置情况5.2.1

S3C2410A的I/O口工作原理第5章基于S3C2410的系统硬件设计的I/O口工作原理1端口B可选择的引脚端功能5.2GPB10.输1入/输出S3nXDCRE2Q

4010A–GPB9输表入/5输出.2.nX2DASC3CK024–10AGPB8输入/输出nXDREQ1–GPB7输入/输出nXDACK1–GPB6输入/输出nXBREQ–GPB5输入/输出nXBACK–GPB4输入/输出TCLK0–GPB3~GPB0输入/输出TOUT3

~TOUT0–的端口B

I/O口配置情况第5章基于S3C2410的系统硬件设计端口C 可选择的引脚端功能GPC8 输出

VD0–GPC7~GPC5输出

LCDVF0–GPC4输入/输出VM–GPC3输入/输出VFRAME–GPC2输入/输出VLINE–GPC1输入/输出VCLK–GPC0输入/输出LEND–GP5C15.~2.输入1/S3VDC7

~2410A的I/O口工作原理1输入表/5.L2C.D3VF2S~3C2410A的端口C

I/O口配置情况端口D可选择的引脚端功能GPD15输入/输出VD23nSS0GPD14输入/输出VD22nSS1GPD13~GPD0输入/输出VD21~VD8–1第5章基于S3C2410的系统硬件设计5.2.1

S3C2410A的I/O口工作原理表5.2.4

S3C2410A的端口D

I/O口配置情况第5章基于S3C2410的系统硬件设计端口E可选择的引脚端功能GPE15输入/输出IICSDA–GPE14输入/输出IICSCL–GPE13输入/输出SPICLK0–GPE12输入/输出SPIMOSI0–GPE11输入/输出SPIMISO0–GPE10~GPE7输入/输出SDDAT3~SDDAT0–GPE6输入/输出SDCMD–GPE5输入/输出SDCLK–5.2.1

S3C2410A的I/O口工作原理1表5.2.5

S3C2410A的端口E、F

I/O口配置情况第5章基于S3C2410的系统硬件设计GPE4输入/输出I2SSDOI2SSDIGPE3输入/输出I2SSDInSS0GPE2输入/输出CDCLK–GPE1输入/输出I2SSCLK–GPE0输入/输出I2SLRCK–端口FGPF7~

GPF0输入/输出EINT7

~EINT0–5.2.1

S3C2410A的I/O口工作原理1表5.2.5

S3C2410A的端口E、F

I/O口配置情况(续)第5章基于S3C2410的系统硬件设计端口G可选择的引脚端功能GPG15输入/输出EINT23nYPONGPG14输入/输出EINT22YMONGPG13输入/输出EINT21nXPONGPG12输入/输出EINT20XMONGPG11输入/输出EINT19TCLK1GPG10~GPG8输入/输出EINT18~EINT16–GPG7输入/输出EINT15SPICLK15.2.1

S3C2410A的I/O口工作原理1表5.2.6

S3C2410A的端口G

I/O口配置情况第5章基于S3C2410的系统硬件设计GPG6输入/EINT14SPIMOSIGPG5输入/EINT13SPIMISOGPG4EINT12LCD_PWRENGPG3输入/输出EINT11nSS1GPG2输入/输出EINT10nSS0GPG1输入/输出EINT9–输入/GPG0 输出EINT8–5.2输.出1

S3C24101

A的I/O口工作原理1输出.2.6

S3C2410A1

端口G

I/O口配置情况(续)表5

的输入/输出第5章基于S3C2410的系统硬件设计端口H可选择的引脚端功能GPH10输入/输出CLKOUT1–GPH9输入/输出CLKOUT0–GPH8输入/输出UEXTCLK–GPH7输入/输出RXD2nCTS1GPH6输入/输出TXD2nRTS1GPH5输入/输出RXD1–GPH4输入/输出TXD1–GPH3输入/输出RXD0–GPH2输入/输出TXD0–GPH1输入/输出nRTS0–GPH0输入/输出nCTS0–5.2.1

S3C2410A的I/O口工作原理1表5.2.7

S3C2410A的端口H

I/O口配置情况第5章基于S3C2410的系统硬件设计在S3C2410A中,大多数的引脚端都是复用的,所以对于每一个引脚端都需要定义其功能。为了使用I/O口,首先需要定义引脚的功能。每个引脚端的功能通过端口控制寄存器(PnCON)来定义(配置)。与配置I/O口相关的寄存器包括:端口控制寄存器(GPACON~GPHCON)、端口数据寄存器(GPADAT~GPHDAT)、端口上拉寄存器(GPBUP~GPHUP)、杂项控制寄存器以及外部中断控制寄存器(EXTINTN)等。在掉电模式,如果GPF0~GPF7和GPG0~GPG7用作为唤醒信号,那么这些端口必须配置为中断模式。5.2.1

S3C2410A的I/O口工作原理1第5章基于S3C2410的系统硬件设计如果端口配置为输出口,数据可以写入到端口数据寄存器(PnDAT)的相应位中;如果将端口配置为输入口,则可以从端口数据寄存器(PnDAT)的相应位中读出数据。端口上拉寄存器用于控制每组端口的上拉电阻为使能/不使能。如果相应位设置为0,则表示该引脚的上拉电阻使能;为1,则表示该引脚的上拉电阻不使能。如果使能了端口上拉寄存器,则不论引脚配置为哪种功能(输入、输出、DATAn、EINTn等),上拉电阻都会起作用。5.2.1

S3C2410A的I/O口工作原理1第5章基于S3C2410的系统硬件设计杂项控制寄存器用于控制数据端口的上拉电阻、高阻状态、USB

Pad和CLKOUT的选择。24个外部中断通过不同的信号方式被请求。EXTINTn寄存器用于配置这些信号对于外部中断请求采用的是低电平触发、高电平触发、下降沿触发、上升沿触发还是双边沿触发。有8个外部中断有数字滤波器。仅16

EINT引脚端(EINT[15:0])用来作为唤醒源。所有GPIO寄存器的值在掉电模式下都会被保存。外部中断屏蔽寄存器EINTMASK不能阻止从掉电模式唤醒,但是如果EINTMASK正在屏蔽的是EINT[15:4]中的某位,则可以实现唤醒,不过寄存器SRCPND的位EINT4和EINT8

23在刚刚唤醒后不能设置为1。相关寄存器的设置分别描述如下:5.2.1

S3C2410A的I/O口工作原理1第5章基于S3C2410的系统硬件设计寄存器地址读/写描

述复位值GPACON0x56000000R/W配置端口A引脚端,使用位[22:0]。0:输出引脚端1:第2功能0x7FFFFFGPADAT0x56000004R/W端口A数据寄存器,使用位[22:0]未定义保留0x56000008–保留未定义保留0x5600000C–保留未定义端口A控制寄存器5.2.1

S3C2410A的I/O口工作原理1第5章基于S3C2410的系统硬件设计1寄存器地址读/写描

述复位值GPBCON0x56000010R/W配置端口B引脚端,使用位[21:0],分别对端口B的11个引脚端进行配置。00:输入;01:输出;10:第2功能;11:保留0x0GPBDAT0x56000014R/W端口B数据寄存器,使用位[10:0]未定义GPBUP0x56000018R/W端口B上拉电阻禁止寄存器,使用位[10:0]。0:使能;1:禁止0x0保留0x5600001C–保留未定义端口B控制寄存器5.2.1

S3C2410A的I/O口工作原理第5章基于S3C2410的系统硬件设计1寄存器地址读/写描述复位值GPCCON0x56000020R/W配置端口C引脚端,使用位[31:0],分别对端口C的16个引脚端进行配置。00:输入;01:输出;10:第2功能;11:保留0x0GPCDAT0x56000024R/W端口C数据寄存器,使用位[15:0]未定义GPCUP0x56000028R/W端口C上拉电阻不使能寄存器,使用位[15:0]。0:使能;1:禁止0x0保留0x5600002C–保留未定义端口C控制寄存器5.2.1

S3C2410A的I/O口工作原理寄存器地址读/写描述复位值GPDCON0x56000030R/W配置端口D引脚端,使用位[31:0],分别对端口D的16个引脚端进行配置。00:输入;01:输出;10:第2功能;11:保留/第3功能0x0GPDDAT0x56000034R/W端口D数据寄存器,使用位[15:0]未定义GPDUP0x56000038R/W端口D上拉电阻不使能寄存器,使用位[15:0]。0:使能;1:不使能0xF000保留0x5600003C–保留

1未定义第5章基于S3C2410的系统硬件设计5.2.1

S3C2410A的I/O口工作原理端口D控制寄存器第5章基于S3C2410的系统硬件设计1寄存器地址读/写描述复位值GPECON0x56000040R/W配置端口E引脚端,使用位[31:0],分别对端口E的16个引脚端进行配置。00:输入;01:输出;10:第2功能;11:保留/第3功能0x0GPEDAT0x56000044R/W端口E数据寄存器,使用位[15:0]未定义GPEUP0x56000048R/W端口E上拉电阻不使能寄存器,使用位[15:0]。0:使能;1:不使能0x0保留0x5600004C–保留未定义5.2.1

S3C2410A的I/O口工作原理端口E控制寄存器第5章基于S3C2410的系统硬件设计1寄存器地址读/写描述复位值GPFCON0x56000050R/W配置端口F引脚端,使用位[15:0],分别对端口F的8个引脚端进行配置。00:输入;01:输出;10:第2功能;11:保留0x0GPFDAT0x56000054R/W端口F数据寄存器,使用位[7:0]未定义GPFUP0x56000058R/W端口F上拉电阻不使能寄存器,使用位[7:0]。

0:使能;1:不使能0x0保留0x5600005C–保留未定义5.2.1

S3C2410A的I/O口工作原理端口F控制寄存器第5章基于S3C2410的系统硬件设计1寄存器地址读/写描

述复位值GPGCON0x56000060R/W配置端口G引脚端,使用位[31:0],分别对端口G的16个引脚端进行配置。00:输入;01:输出;10:第2功能;11:保留/第3功能0x0GPGDAT0x56000064R/W端口G数据寄存器,使用位[15:0]未定义GPGUP0x56000068R/W端口G上拉电阻不使能寄存器,使用位[15:0]。0:使能;1:不使能0xF800保留0x5600006C–保留未定义5.2.1

S3C2410A的I/O口工作原理端口G控制寄存器第5章基于S3C2410的系统硬件设计1寄存器地址读/写描述复位值GPHCON0x56000070R/W配置端口H引脚端,使用位[21:0],分别对端口H的11个引脚端进行配置。00:输入;01:输出;10:第2功能;11:保留/第3功能0x0GPHDAT0x56000074R/W端口H数据寄存器,使用位[10:0]未定义GPHUP0x56000078R/W端口H上拉电阻不使能寄存器,使用位[10:0]。0:使能;1:不使能0x0保留0x5600007C–保留未定义端口H控制寄存器5.2.1

S3C2410A的I/O口工作原理第5章基于S3C2410的系统硬件设计1寄存器地址读/写描述复位值MISCCR0x56000080R/W控制数据端口的上拉电阻、高阻状态、USB

Pad和CLKOUT的选择0x103305.2.1

S3C2410A的I/O口工作原理杂项控制寄存器寄存器地址读/写描述复位值DCLKCON0x56000084R/WDCLK0/1控制,位[27:16]控制DCLK1,位[11:0]控制DCLK00x0DCLK控制寄存器第5章基于S3C2410的系统硬件设计1寄存器地址读/写描述复位值EXTINT00x56000088R/W外部中断控制寄存器0,使用位[30:0],分别对EINT7~EINT0触发信号进行配置。000:低电平触发;001:高电平触发;01x:下降沿触发;10x:上升沿触发;11x:双边沿触发0x0EXTINT10x5600008CR/W外部中断控制寄存器1,使用位[30:0],分别对EINT15~EINT8触发信号进行配置。000:低电平触发;001:高电平触发;01x:下降沿触发;10x:上升沿触发;11x:双边沿触发0x05.2.1

S3C2410A的I/O口工作原理外部中断控制寄存器第5章基于S3C2410的系统硬件设计1EXTINT20x56000090R/W外部中断控制寄存器2,使用位[30:0],分别对EINT23~EINT16触发信号进行配置。000:低电平触发;001:高电平触发;01x:下降沿触发;10x:上升沿触发;11x:双边沿触发。位31为EINT23滤波器使能控制,1:使能;0:不使能0x05.2.1

S3C2410A的I/O口工作原理外部中断控制寄存器(续)第5章基于S3C2410的系统硬件设计1寄存器地址读/写描

述复位值EINTFLT00x56000094R/W保留EINTFLT10x56000098R/W保留EINTFLT20x5600009CR/W外部中断控制寄存器

2,控制EINT19~EINT16的滤波器时钟和带宽0x0EINTFLT30x56000A0R/W外部中断控制寄存器

3,控制EINT23~EINT20的滤波器时钟和带宽0x05.2.1

S3C2410A的I/O口工作原理外部中断滤波寄存器第5章基于S3C2410的系统硬件设计1寄存器地址读/写描述复位值EINTMASK0x560000A4R/W外部中断屏蔽寄存器,使用位[23:4]控制EINT23~EINT4中断屏蔽。0:使能中断;1:屏蔽中断0x0外部中断屏蔽寄存器5.2.1

S3C2410A的I/O口工作原理第5章基于S3C2410的系统硬件设计1寄存器地址读/写描述复位值EINTPEND0x560000A8R/W使用位[23:4]分别EINT23~EINT4设置是否请求中断挂起。0:不请求挂起;1:请求挂起0x0外部中断挂起寄存器5.2.1

S3C2410A的I/O口工作原理第5章基于S3C2410的系统硬件设计1寄存器地址读/写描

述复位值GSTATUS00x560000ACR外部引脚端状态UndefinedGSTATUS10x560000B0R芯片ID0x32410000GSTATUS20x560000B4R/W复位状态0x1GSTATUS30x560000B8R/WInfrom寄存器,可被复位

nRESET和看门狗定时器

清零0x0GSTATUS40x560000BCR/WInfrom寄存器,可以利用nRESET和看门狗定时器清零0x0通用状态寄存器5.2.1

S3C2410A的I/O口工作原理第5章基于S3C2410的系统硬件设计5.2.2

I/O口编程实例举例:通过对G口的操作控制CPU板左下角的LED1和LED2实现轮流闪烁。void

Main(void){int

flag,

i;Target_Init();

//进行硬件初始化操作,包括对I/O口的初始化操作for(;;){if(flag==0){for(i=0;i<1000000;i++);//延时rGPGCON=rGPGCON

&

0xfff0ffff

|

0x00050000;//配置第8、第9位为输出引脚

rGPGDAT=rGPGDAT

&

0xeff

|

0x200;//第8位输出为低电平//第9位输出高电平for(i=0;i<10000000;i++);//延时

flag=1;}else

{for(i=0;i<1000000;i++);//延时rGPGCON=rGPGCON

&

0xfff0ffff

|

0x00050000;//配置第8、第9位为输出引脚

rGPGDAT=rGPGDAT

&

0xdff

|

0x100;//第8位输出为高电平//第9位输出低电平for(i=0;i<1000000;i++);//延时

flag=0;}}}1第5章基于S3C2410的系统硬件设计主要内容132S3C2410简介I/O口中断A/D接口DMAUART6789

触摸屏10111LCDUSB设备的数据收发音频录放键盘和LED控制第5章基于S3C2410的系统硬件设计5.3.1

ARM的中断原理1ARM系统包括两类中断:一是IRQ中断,一是FIQ中断。处理中断的步骤如下:·(1)保存现场。保存当前的PC值到R14,保存当前的程序运行状态到SPSR。·(2)模式切换。根据发生的中断类型,进入IRQ模式或FIQ模式。·(3)获取中断源。以异常向量表保存在低地址处为例,若是IRQ中断,则PC指针跳到0x18处;若是FIQ中断,则跳到0x1C处。IRQ或FIQ的异常向量地址处一般保存的是中断服务子程序的地址,所以接下来PC指针跳入中断服务子程序处理中断。·(4)中断处理。为各种中断定义不同的优先级别,并为每一个中断设置一个中断标志位。当发生中断时,通过判断中断优先级以及访问中断标志位的状态来识别到底哪一个中断发生了。进而调用相应的函数进行中断处理。·(5)中断返回,恢复现场。当完成中断服务子程序后,将SPSR中保存的程序运行状态恢复到CPSR中,R14中保存的被中断程序的地址恢复到PC中,进而继续执行被中断的程序。第5章基于S3C2410的系统硬件设计5.3.2

S3C2410A的中断控制器中断控制器使用的寄存器1第5章基于S3C2410的系统硬件设计·

优先级生成模块1第5章基于S3C2410的系统硬件设计5.3.3中断编程实例举例:通过定时器1中断控制CPU板左下角的LED1和LED2实现轮流闪烁。11.对定时器1初始化,并设定定时器的中断时间为1秒。

void

Timer1_init(void){rGPGCON=rGPGCON

&

0xfff0ffff

|

0x00050000;//配置GPG口为输出rGPGDAT

=

rGPGDAT

|0x300;rTCFG0rTCFG1=

255;=

0

<<

4;//在pclk=50MHZ下,1秒钟的记数值rTCNTB1=50000000/4/256=48828;rTCNTB1=48828;rTCMPB1

=

0x00;rTCONrTCON=(1<<11)|(1<<9)|(0<<8);//禁用定时器1,手动加=(1<<11)|(0<<9)|(1<<8);//启动定时器1,自动装}第5章基于S3C2410的系统硬件设计举例:通过定时器1中断控制CPU板左下角的LED1和LED2实现轮流闪烁。1为了使CPU响应中断,在中断服务子程序执行之前,必须打开ARM920T的CPSR中的I位,以及相应的中断屏蔽寄存器中的位。void

Timer1INT_Init(void){//定时器接口使能if((rINTPND

&

BIT_TIMER1)){rSRCPND

|=

BIT_TIMER1;}//写入定时器1中断服务子程序的入口地址pISR_TIMER1

=

(int)Timer1_ISR;rINTMSK

&=

~(BIT_TIMER1);

//开中断;}等待定时器中断,通过一个死循环如“while(1);”实现等待过程。第5章基于S3C2410的系统硬件设计举例:通过定时器1中断控制CPU板左下角的LED1和LED2实现轮流闪烁。14.根据设置的定时时间,将产生定时器中断。定时器中断发生后,首先进行现场保护,接下来转入中断的入口代码处执行,该部分代码通常使用汇编语言书写。在执行中断服务程序之前,首先要确保HandleIRQ地址处保存中断分发程序

IsrIRQ的入口地址。ldrldrstrr0,=HandleIRQr1,=IsrIRQr1,[r0]接下来将执行IsrIRQ中断分发程序,具体代码如下:IsrIRQ;为保存PC预留堆栈空间;加载INTOFFSET寄存器值到r9;加载中断向量表的基地址到r8;获得中断向量sub

sp,sp,#4stmfd

sp!,{r8-r9}ldr

r9,=INTOFFSETldr

r9,[r9]ldr

r8,=HandleEINT0add

r8,r8,r9,lsl

#2ldrstrldmfdr8,[r8]r8,[sp,#8]sp!,{r8-r9,pc};加载中断服务程序的入口地址到r8;保存sp,将其作为新的pc值;跳转到中断服务子程序执行第5章基于S3C2410的系统硬件设计举例:通过定时器1中断控制CPU板左下角的LED1和LED2实现轮流闪烁。1执行中断服务子程序,该子程序实现将LED1和LED2灯熄灭或点亮,从现象中看到LED1和LED2灯闪烁一次,则说明定时器发生了一次中断。int

flag;void

irq Timer1

ISR(

void

){if

(flag

==

0)

{rGPGDAT

=

rGPGDAT

&

0xeff

|

0x200;flag

=

1;}else{rGPGDAT

=

rGPGDAT

&

0xdff

|

0x100;flag

=

0;}rSRCPND

|=

BIT_TIMER1;rINTPND

|=

BIT_TIMER1;}从中断返回,恢复现场,跳转到被中断的主程序继续执行,等待下一次中断的到来。第5章基于S3C2410的系统硬件设计主要内容132S3C2410简介I/O口中断A/D接口DMAUART6789

触摸屏10111LCDUSB设备的数据收发音频录放键盘和LED控制第5章基于S3C2410的系统硬件设计5.4.1

DMA工作原理1所谓DMA方式,即直接存储器存取(Direct

Memory

Acess),是指存储器与外设在DMA控制器的控制下,直接传送数据而不通过CPU,传输速率主要取决于存储器存取速度。采用DMA方式进行数据传输的具体过程如下:外设向DMA控制器发出DMA请求;DMA控制器向CPU发出总线请求信号;CPU执行完现行的总线周期后,向DMA控制器发出响应请求的回答信号;CPU将控制总线、地址总线及数据总线让出,由DMA控制器进行控制;DMA控制器向外部设备发出DMA请求回答信号;进行DMA传送;数据传送完毕,DMA控制器通过中断请求线发出中断信号。CPU在接收到中断信号后,转入中断处理程序进行后续处理。中断处理结束后,CPU返回到被中断的程序继续执行。CPU重新获得总线控制权。第5章基于S3C2410的系统硬件设计5.4.2

S3C2410A的DMA控制器1S3C2410A支持位于系统总线和外围总线之间的具有4个通道的DMA控制器。以3种状态的FSM来描述DMA的操作过程如下:状态1:作为初始状态,DMA等待一个DMA请求。如果出现DMA请求,进入状态2。在这种状态下,DMA

ACK和INT

REQ为0。状态2:在这种状态下,DMA

ACK变为1,并且从DCON[19:0]寄存器向计数器(CURR_TC)加载计数值。注意此时DMA

ACK一直是1直到以后被清零。状态3:在这种状态下,子FSM处理DMA的原子操作被初始化。子FSM从源地址读取数据,并将其写入目标地址。这一操作被重复执行,直到在整体

服务模式下计数器(CURR_TC)变为0;这一操作在单个服务模式下则只执行一次。当子FSM每完成一次原子操作,主FSM将CURR_TC进行一次向下计

数。另外,当CURR_TC变为0时,主FSM将INT

REQ信号置1,并将DCON寄存器的中断设置位[29]置1。除此以外,如果发生以下情况,则对DMA

ACK清零:√在整体服务模式下CURR_TC变为0;√在单个复位模式下完成原子操作。第5章基于S3C2410的系统硬件设计要进行DMA操作,首先要对S3C2410A的相关寄存器进行正确配置。每个DMA通道有9个控制寄存器,因此对于4通道的DMA控制器来说总共有36个寄存器。其中每个DMA通道的9个控制寄存器中有6个用于控制DMA传输,另外3个用于监控DMA控制器的状态。·DMA初始源寄存器(DISRC)·DMA初始源控制寄存器(DISRCC)·DMA初始目标地址寄存器(DIDST)·DMA初始目标控制寄存器(DIDSTC)·DMA控制寄存器(DCON)·DMA状态寄存器(DSTAT)·DMA当前源寄存器(DCSRC)·DMA当前目标寄存器(DCDST)·DMA屏蔽触发寄存器(DMASKTRIG)·

DMA操作的相关寄存器1第5章基于S3C2410的系统硬件设计5.4.3

DMA编程实例举例:使用DMA方式实现从存储器到串口0进行数据发送。#define#define1SEND_DATASEND_ADDR(*(volatile

unsigned

char

*)

0x30200000)((volatile

unsigned

char

*)

0x30200000)//待发送数据的起始地址void

Main(void){volatile

unsigned

char*

p

=

SEND_ADDR;int

i;Target_Init();Delay(1000);SEND_DATA=0x41;//初始化要发送的数据

for(i=0;i<128;i++){*p++

=

0x41

+

i;}rUCON0=rUCON0

&

0xff3

|

0x8;//Uart设置成DMA形式

rDISRC0=(U32)(SEND_ADDR);//DMA0初始化rDISRCC0=(0<<1)|(0<<0);//源=AHB,传送后地址增加rDIDST0=(U32)UTXH0;

//发送FIFO缓冲区地址

rDIDSTC0=(1<<1)|(1<<0);//目标=APB,地址固定//设置DMA0控制寄存器:握手模式,与APB同步,使能中断,单位传输,单个模式,目标=UART0,//硬件请求模式,不自动加载,半字,计数器初值=50rDCON0=(0<<31)|(0<<30)|(1<<29)|(0<<28)|(0<<27)|(1<<24)|(1<<23)|(1<<22)|(0<<20)|(50);rDMASKTRIG0=(1<<1);

//打开DMA通道0while(1);}第5章基于S3C2410的系统硬件设计主要内容132S3C2410简介I/O口中断A/D接口DMAUART6789

触摸屏10111LCDUSB设备的数据收发音频录放键盘和LED控制第5章基于S3C2410的系统硬件设计5.5.1

UART的工作原理UART(Universal

AsynchronousReceiverandTransmitter,通用异步收发器)是广泛使用的串行数据传输方式。RS232C是通用的串行数据传输接口标准,其DB9引脚定义如下:1第5章基于S3C2410的系统硬件设计·

RS-232C接口的基本连接方式简单连接完全连接1第5章基于S3C2410的系统硬件设计·

UART的功能和组成UART的主要功能是将数据以字符为单位,按照先低位后高位的顺序进行逐位传输。根据发送方和接收方是否使用同一个时钟,通讯方式分成同步和异步两种。UART主要由数据线接口、控制逻辑、配置寄存器、波特率发生器、发送部分和接收部分组成。UART以字符为单位进行数据传输,每个字符的传输格式如下:1第5章基于S3C2410的系统硬件设计5.5.2

S3C2410A的UARTS3C2410A的UART提供3个独立的异步串行I/O口(SIO),它们都可以运行于中断模式或DMA模式。S3C2410A的每个UART由波特率发生器、发送器、接收器以及

控制单元组成。1第5章基于S3C2410的系统硬件设计·

与UART相关的操作1·1.数据发送·2.数据接收·3.自动流控制(Auto

Flow

Control,AFC)·4.RS-232接口·5.中断/DMA请求发生·6.波特率发生波特率时钟通过把源时钟除以16再除以一个16位的因子到,该16位的因子可以在UART波特率因子寄存器(UBRDIVn)中指定。UBRDIVn=(int)(PCLK/(bps×16))-1UBRDIVn=(int)(UEXTCLK/(bps×16))-1·7.回送模式·8.红外模式第5章基于S3C2410的系统硬件设计·

与UART相关的寄存器1·UART行控制寄存器(ULCONn)·UART控制寄存器(UCONn)·UART

FIFO控制寄存器(UFCONn)·UART

Modem控制寄存器(UMCONn)·UART

TX/RX状态寄存器(UTRSTATn)·UART错误状态寄存器(UERSTATn)·UART

FIFO状态寄存器(UFSTATn)·UART

MODEM状态寄存器(UMSTATn)·UART发送缓冲寄存器(UTXHn)·UART接收缓冲寄存器(URXHn)·UART波特率因子寄存器(UBRDIVn)第5章基于S3C2410的系统硬件设计5.5.3

UART编程实例举例:从UART0接收数据,然后分别从UART0和UART1发送出去。1.定义与UART相关的寄存器。#definerULCON0(*(volatileunsigned*)0x50000000)//UART0行控制寄存器#definerUCON0(*(volatileunsigned*)0x50000004)//UART0控制寄存器#definerUFCON0(*(volatileunsigned*)0x50000008)//UART0FIFO控制寄存器#definerUMCON0(*(volatileunsigned*)0x5000000c)//UART0Modem控制寄存器#definerUTRSTAT0(*(volatileunsigned*)0x50000010)//UART0Tx/Rx状态寄存器#definerUERSTAT0(*(volatileunsigned*)0x50000014)//UART0Rx错误状态寄存器#definerUFSTAT0(*(volatileunsigned*)0x50000018)//UART0FIFO状态寄存器#definerUMSTAT0(*(volatileunsigned*)0x5000001c)//UART0Modem状态寄存器#define…

…rUBRDIV0(*(volatileunsigned*)0x50000028)//UART0波特率因子寄存器1第5章基于S3C2410的系统硬件设计2.对串口进行初始化操作。参数pclk为时钟源的时钟频率,

band为数据传输的波特率。举例:从UART0接收数据,然后分别从UART0和UART1发送出去。void

Uart_Init(int

pclk,int

baud){int

i;if(pclk

==

0)pclk

=

PCLK;1//UART0

FIFO控制寄存器,FIFO禁止//UART1

FIFO控制寄存器,FIFO禁止//UART2

FIFO控制寄存器,FIFO禁止//UART0

MODEM控制寄存器,AFC禁止//UART1

MODEM控制寄存器,AFC禁止rUFCON0

=

0x0;rUFCON1

=

0x0;rUFCON2

=

0x0;rUMCON0

=

0x0;rUMCON1

=

0x0;//UART0rULCON0

=

0x3;rUCON0

=

0x245;//行控制寄存器:正常模式,无奇偶校验,1位停止位,8位数据位。//控制寄存器rUBRDIV0=((int)(pclk/16./baud+0.5)-1);

//波特率因子寄存器…

…}第5章基于S3C2410的系统硬件设计举例:从UART0接收数据,然后分别从UART0和UART1发送出去。3.使用串口发送数据。其中whichUart为全局变量,指示当前选择的UART通道,使用串口发送一个字节的代码如下:void

Uart_SendByte(int

data){if(whichUart==0){if(data=="\n"){while(!(rUTRSTAT0

&

0x2));1//延时,因为超级终端速度较慢Delay(10);WrUTXH0("\r");//等待直到发送状态就绪}while(!(rUTRSTAT0

&

0x2));Delay(10);WrUTXH0(data);}else

if(whichUart==1){

}else

if(whichUart==2){

}}第5章基于S3C2410的系统硬件设计举例:从UART0接收数据,然后分别从UART0和UART1发送出去。4.使用串口接收数据。如果没有接收到字符则返回0。//UART0接收到数据1char

Uart_GetKey(void){if(whichUart==0){if(rUTRSTAT0

&

0x1)return

RdURXH0();elsereturn

0;}else

if(whichUart==1){

}else

if(whichUart==2){

}else

return

0;}第5章基于S3C2410的系统硬件设计举例:从UART0接收数据,然后分别从UART0和UART1发送出去。5.书写主函数。实现的功能为从UART0接收字符,然后将接收到的字符再分别从UART0和UART1发送出去,其中Uart_Select(n)用于选择使用的传输通道为UARTn。void

Main(void){char

data;Target_Init();while(1){1//接收字符data

=

Uart_GetKey();if

(data

!=

0x0){Uart_Select(0);//从UART0发送出去Uart_Printf("key=%c\n",data);Uart_Select(1);

//从UART1发送出去

Uart_Printf("key=%c\n",data);Uart_Select(0);}}}第5章基于S3C2410的系统硬件设计主要内容132S3C2410简介I/O口中断A/D接口DMAUART6789

触摸屏10111LCDUSB设备的数据收发音频录放键盘和LED控制第5章基于S3C2410的系统硬件设计5.6.1

A/D接口原理1A/D转换器是模拟信号和CPU之间联系的接口,它将连续变化的模拟信号转换为数字信号,以供计算机和数字系统进行分析、处理、存储、控制和显示。按照转换速度、精度、功能以及接口等因素,常用的A/D转换器有以下两种:·双积分型的A/D转换器·逐次逼近型的A/D转换器第5章基于S3C2410的系统硬件设计5.6.2

S3C2410A的A/D转换器1S3C2410A的A/D转换器包含一个8通道的模拟输入转换器,可以将模拟输入信号转换成10位数字编码。在AD转换时钟为2.5MHz时,其最大转换率为500KSPS,输入电压范围是0~3.3V。与A/D转换相关的寄存器:·ADC控制寄存器(ADCCON)·ADC触摸屏控制寄存器(ADCTSC)·ADC启动延时寄存器(ADCDLY)·ADC转换数据寄存器(ADCDATn)第5章基于S3C2410的系统硬件设计5.6.3

A/D接口编程实例举例:从A/D转换器的通道0获取模拟数据,并将转换后的数字量以波形的形式在LCD上显示。1.定义与A/D转换相关的寄存器。#define

rADCCON#define

rADCTSC#define

rADCDLY(*(volatile

unsigned

*)0x58000000)//ADC控制寄存器

(*(volatile

unsigned

*)0x58000004)//ADC触摸屏控制寄存器

(*(volatile

unsigned

*)0x58000008)//ADC启动或间隔延时寄存器#define

rADCDAT0#define

rADCDAT1(*(volatile

unsigned

*)0x5800000c)//ADC转换数据寄存器0(*(volatile

unsigned

*)0x58000010)//ADC转换数据寄存器12.对A/D转换器进行初始化。这里的参数ch表示选择的通道号。void

AD_Init(unsigned

char

ch){1=

100;=

0;//ADC启动或间隔延时//选择ADC模式rADCDLYrADCTSCrADCCON=

(1<<14)|(49<<6)|(ch<<3)|(0<<2)|(0<<1)|(0);//设置ADC控制寄存器}第5章基于S3C2410的系统硬件设计举例:从A/D转换器的通道0获取模拟数据,并将转换后的数字量以波形的形式在LCD上显示。3.获取A/D的转换值。参数ch为选用的通道号。int

Get_AD(unsigned

char

ch){int

i;int

val=0;1if(ch>7)

return

0;for(i=0;i<16;i++){rADCCON

|=

0x1;//通道不能大于7//为转换准确,转换16次//启动A/D转换rADCCON

=

rADCCON

&

0xffc7

|

(ch<<3);//避免第一个标志出错//避免第二个标志出错while

(rADCCON

&

0x1);while

(!(rADCCON

&

0x8000));val

+=

(rADCDAT0

&

0x03ff);Delay(10);}return(val>>4);

//为转换准确,除以16取均值}4.书写主函数。实现将转换后的数据在LCD上以波形的方式显示。第5章基于S3C2410的系统硬件设计主要内容132S3C2410简介I/O口中断A/D接口DMAUART6789

触摸屏10111LCDUSB设备的数据收发音频录放键盘和LED控制第5章基于S3C2410的系统硬件设计5.7.1键盘和LED的接口原理HA7279A是一片具有串行接口并可同时驱动8位共阴式数码管或64只独立LED的智能显示驱动芯片。该芯片同时可连接多达64键的键盘矩阵,一片即可完成LED显示及键盘接口的全部功能。HA7279A一共有28个引脚:RESET:复位端。通常,该端接+5V电源;DIG0~DIG7:8个LED管的位驱动输出端;SA~SG:LED数码管的A段~G段的输出端;DP:小数点的驱动输出端;RC:外接振荡元件连接端。HD7279A与微处理器仅需4条接口线:√CS:片选信号(低电平有效);√DATA:串行数据端。√CLK:数据串行传送的同步时钟输入端,时钟的上升沿表示数据有效。√KEY:按键信号输出端。该端在无键按下时为高电平;而在有键按下时变为低电平,并一直保持到按键释放为止。1第5章基于S3C2410的系统硬件设计·

HD7279A与S3C2410A的连接原理图1第5章基于S3C2410的系统硬件设计5.7.2键盘和LED控制的编程实例举例:通过按键来控制LED的显示。1.键盘中断的初始化void

KeyINT_Init(void){rGPFCON=(rGPFCON&0xF3FF)|(2<<10);rGPECON=(rGPECON&0xF3FFFFFF)|(0x01<<26);//设置GPE13为输出位,模拟时钟输出rEXTINT0

&=0xff8fffff;//外部中断5低电平有效if(rEINTPEND

&

0x20)

//清除外部中断5的中断挂起位

rEINTPEND

|=0x20;if

((rINTPND

&

BIT_EINT4_7)){rSRCPND

|=

BIT_EINT4_7;rINTPND

|=

BIT_EINT4_7;}1rINTMSK

&=

~(BIT_EINT4_7);//使用外部中断4~7//外部中断5使能rEINTMASK

&=

0xffffdf;pISR_EINT4_7

=

(int)Key_ISR;}第5章基于S3C2410的系统硬件设计举例:通过按键来控制LED的显示。2.书写中断服务子程序void

irq

Key

ISR(

void

){int

j;rINTMSK |=BIT_ALLMSK;

//关中断if

(rEINTPEND

&

0x20){key_number

=

read7279(cmd_read);//读键盘指令程序rINTMSK

&=

~(BIT_EINT4_7);switch(key_number){1case0x04

:key_number=0x08;break;case0x05

:key_number=0x09;break;case0x06

:key_number=0x0A;break;case0x07

:key_number=0x0B;break;case0x08

:key_number=0x04;break;case0x09

:key_number=0x05;break;case0x0A

:key_number=0x06;break;case0x0b

:key_number=0x07;break;default:

break;}Uart_Printf("key

is

%x

\n",

key_number);}rEINTPEND

|=

0x20;rSRCPND

|=

BIT_EINT4_7;rINTPND

|=

BIT_EINT4_7;}第5章基于S3C2410的系统硬件设计举例:通过按键来控制LED的显示。3.主程序的主要功能是根据按键键值,向

HD7279A发送不同的处理命令,程序结构如下。void

Main(){char

p;Target_Init();//目标初始化

while(1){switch(key_number){1case

0:send_byte(cmd_test);//测试键

break;//右移8位case

1:

for(p=0;p<8;p++){send_byte(0xA0);send_byte(0xC8+7);send_byte(p);long_delay();Delay(7000);}

break;//case

2到case14case

15://最右两个数码管上显示15write7279(decode1+5,key_number/16*8);write7279(decode1+4,key_number

&0x0f);break;default:

break;}key_number

=

0xff;Delay(50);}}第5章基于S3C2410的系统硬件设计主要内容132S3C2410简介I/O口中断A/D接口DMAUART6789

触摸屏10111LCDUSB设备的数据收发音频录放键盘和LED控制第5章基于S3C2410的系统硬件设计5.8.1

LCD显示原理1所谓LCD,是Liquid

Crystal

Display的缩写,即液晶显示器。LCD液晶显示器主要有两类:STN(Super

Twisted

Nematic,超扭曲向列型)和TFT(Thin

Film

Transistor,薄膜晶体管型)。对于S3C2410A的LCD控制器,同时支持STN和TFT显示器。STN与TFT的主要区别在于:·从工作原理上看,STN主要是增大液晶分子的扭曲角,而TFT为每个像素点设置一个开关电路,做到完全单独的控制每个像素点;·从品质上看,STN的亮度较暗,画面的质量较差,颜色不够丰富,播放动画时有拖尾现象,耗电量小,价格便宜;而TFT亮度高,画面质量高,颜色丰富,播放动画时清晰,耗电量大,价格高。常用的LCD显示模块有两种:一是带有驱动电路的LCD显示模块,一是不带驱动电路的LCD显示屏。大部分ARM处理器中都集成了LCD控制器,所以对于采用ARM处理器的系统,一般使用不带驱动电路的LCD显示屏。第5章基于S3C2410的系统硬件设计5.8.2

S3C2410A的LCD控制器S3C2410A中的LCD控制器可支持STN和TFT两种液晶显示屏。LCD控制器支持单色、4级、16级灰度LCD显示,以及8位彩色、12位彩色LCD显示。LCD控制器由REGBANK、LCDCDMA、VIDPRCS、TIMEGEN和LPC3600组成。1第5章基于S3C2410的系统硬件设计·

8位彩色LCD显示原理1第5章基于S3C2410的系统硬件设计·

与LCD相关的寄存器1·LCD控制寄存器

温馨提示

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

评论

0/150

提交评论