嵌入式系统开发3S3C2410主要外设功能部.ppt

上传人:壹****1 文档编号:568256943 上传时间:2024-07-23 格式:PPT 页数:75 大小:8.91MB
返回 下载 相关 举报
嵌入式系统开发3S3C2410主要外设功能部.ppt_第1页
第1页 / 共75页
嵌入式系统开发3S3C2410主要外设功能部.ppt_第2页
第2页 / 共75页
嵌入式系统开发3S3C2410主要外设功能部.ppt_第3页
第3页 / 共75页
嵌入式系统开发3S3C2410主要外设功能部.ppt_第4页
第4页 / 共75页
嵌入式系统开发3S3C2410主要外设功能部.ppt_第5页
第5页 / 共75页
点击查看更多>>
资源描述

《嵌入式系统开发3S3C2410主要外设功能部.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统开发3S3C2410主要外设功能部.ppt(75页珍藏版)》请在金锄头文库上搜索。

1、第三章 S3C2410主要外设功能部件 ARM汇编指令 UART异步串口通信 通用I/O端口 Nand Flash控制器 NOR Flash接口电路1. ARM汇编指令加载加载/存储指令存储指令 LDR:LDR条件目的寄存器, 用于将存储器中的一个32位的字数据传送到目的寄存器中;常用于从存储器中读取32为的字数据到通用寄存器。 ldr r0,=rPCONE /寄存器地址存放到通用寄存器中 STR:STR条件源寄存器, 用于从源寄存器中将一个32位的字数据传送到存储器中。 ldr r0,UARTADD str r1,r0 /向UART中存入数据数据处理指令数据处理指令 MOV:MOV条件S目的

2、寄存器,源操作数 用于完成从另一个寄存器、被移位的寄存器或将一个立即数加载到目的寄存器;S项决定指令的操作是否影响CPSR中条件标志位的值,当无S时,指令不更新CPRS中条件标志位的值。 mov r9,r2 movs r0,#oxFF00 CMP:CMP条件 操作数1,操作数2 用于把一个寄存器的内容和另一个寄存器的内容或立即数进行比较,同时更新CPSR中条件标志位的值。该指令只进行一次减法运算,但不存储结果,只更改条件标准位。 cmp r0,#oxFF00 跳转指令 用于实现程序流程的跳转;可以完成从当前指令向前或向后的32MB地址空间的跳转;(超过要使用直接向程序计数器PC写入跳转地址值的

3、方式)。 B 跳转指令 BL 带返回的跳转指令 BLX 带返回和状态切换的跳转指令 BX 带状态切换的跳转指令WAKEUP_SLEEP;Release SCLKn after wake-up from the SLEEP mode.ldrr1,=MISCCRldrr0,r1bicr0,r0,#(717) strr0,r1;Set memory control registers ldrr0,=SMRDATAldrr1,=BWSCON;BWSCON Addressaddr2, r0, #52;End address of SMRDATAldrr3, r0, #4strr3, r1, #4cmpr

4、2, r0bne%B0 ;(Before to lable 0)2. UART异步串口通信UART与与RS232、RS485之间的联系与区别之间的联系与区别 计算机史前 RS232 DB25 同步和异步 个人计算机 RS232 DB9(小型) 异步 IBM PC RS232 DB9 完整的定义 PC时代 整合RS232和非RS232串口的UART NB时代 USB和1394取代UART 后PC时代 USB3.0、SATA串口、并口之争 UART TTL电平 3.3V 正逻辑 RS232 +5+12为低,-12-5为高 负逻辑 RS485 +2+6为高,-2-6为低 正逻辑 电平为线间压差、10

5、Mbps、3000m MAX232、MAX485UART异步串口的传输格式:异步串口的传输格式: 以字符为传输单位 字符间的时间间隔不定,字符内的时间间隔固定 空闲位、起始位、资料位、奇偶校验位、停止位UART通信时序图 开始前,空闲状态,送出连续“1”; 传送开始,发出“0”,然后是发送字符; 字符长度可以约定,ASCII编码; 字符最后一位之后添加奇偶校验(可选); 完毕后,发送停止位“1”信号,宽度约定; 进入空闲状态,送出连续“1”UART通信过程:S3C2410的UART控制器: 3个独立的异步串行I/O端口; 具有中断和DMA两种模式; 最高支持速率115.2Kpbs; 每个通道包

6、含2个16位FIFO寄存器; 可编程的波特率、红外收发模式; UART Ch 0 and 1 with nRTS0, nCTS0, nRTS1, and nCTS1 每个UART包含波特率发生器、接收器、发送器和控制单元波特率发生器: 为传输提供串行移位时钟; 其时钟源从内部系统或UCLK中选择; 波特率由时钟源16分频和波特率除数寄存器(UBRDIVn)指定的16位除数决定。UBRDIVn = (int)(PCLK/(bps x 16) ) -1UBRDIVn = (int)(40000000/(115200 x 16) -1 = (int)(21.7) -1 = 21 -1 = 20自动流

7、控(Auto Flow Control): 通过RTS和CTS信号实现; 只有当CTS有效时,UART将FIFO中的数据发出; 只要接收FIFO至少2B空余时,RTS就会被置为有效。UART异步串口的软硬件应用:异步串口的软硬件应用:硬件电路图:Max202芯片相关信息相关寄存器: 33个控制寄存器,分为11类; 线控制寄存器ULCONn:规定传输帧格式; 控制寄存器UCONn:定义发送/接收数据模式; 状态寄存器UTRSTATn,读取接收/发送状态; 波特率寄存器UBRDIV,确定波特率划分值; 发送寄存器UTXHn,表示发送的数据; 接收寄存器URXHn,表示接收的数据。 FIFO控制寄存

8、器、 FIFO状态寄存器、 Modem控制寄存器、 Modem状态寄存器、错误状态寄存器UART LINE CONTROL REGISTER奇偶模式停止位数字节长度UART CONTROL REGISTERUART TX/RX STATUS REGISTER发送器为空发送缓存器为空接收缓存器准备UART TRANSMIT BUFFER REGISTERUART RECEIVE BUFFER REGISTERUART BAUD RATE DIVISOR REGISTER#defineULCON0(*(volatileunsigned*)0X50000000)/UART线控制寄存器#defineU

9、CON0(*(volatileunsigned*)0X50000004)/UART控制寄存器#defineUFCON0(*(volatileunsigned*)0X50000008)/FIFO控制寄存器#defineUTRSTAT0(*(volatileunsigned*)0X50000010)/UART状态寄存器#defineUBRDIV0(*(volatileunsigned*)0X50000028)/波特率除数寄存器#defineUTXH0(*(volatileunsigned*)0X50000020)#defineURXH0(*(volatileunsigned*)0X50000024

10、)int TSmain()char buf; ULCON0 &=0XFFFFFF00;ULCON0 |=0X03; /1位起始位,位起始位,8位数据位位数据位UCON0 =0X0805; /串口时钟串口时钟PCLK,查询方式查询方式UBRDIV0 =0X1A; /波特率波特率115200while(1) if(UTRSTAT0 & 0X01) /接收是否完毕接收是否完毕 =1结束结束buf=URXH0; /读取数据读取数据while(!(UTRSTAT0 & 0X04);/是否允许发送是否允许发送 =1允许允许UTXH0=buf; return 0;3. 通用I/O端口通用通用I/O端口的分类

11、端口的分类由软件设置。在启动程序之前必须定义每个引脚的使用功能。否则,即被配置为I/O端口。I/O端口的应用电路类型:端口的应用电路类型: 无需上拉电阻的应用推荐:采用灌电流方式驱动电路,直接加限流电阻;I/O端口的电流为4mA。例外:考虑拉电流与灌电流是否接近;I/O端口作输入用时,采集信号的需要; 需上拉电阻的应用推荐:自身结构要求需要上拉电阻,如IIC总线功能按芯片手册指定连接I/O端口的软硬件应用:端口的软硬件应用:硬件电路图:相关的寄存器: 40多个控制寄存器,分为5类; 配置寄存器CPXCON:定义X端口的引脚; 数据寄存器GPXDAT:读/写端口数据; 上拉寄存器GPYUP:使能

12、端口的上拉寄存器; 混合控制寄存器:控制上拉电阻、高阻状态等; 外部中断控制寄存器EXTINTN等;GPxCONGPxCON寄存器寄存器:它用于配置引脚的功能 端口A与端口B-H在功能上有所不同,GPACON中每一位对应一根引脚(共23根引脚);GPACON通常被设为全1,以便访问外部存储设备; 端口B-H在寄存器操作上完全相同,GPxCon中每两位控制一根引脚,00表示输入,01表示输出,10表示特殊功能,11保留不用GPxDATGPxDAT寄存器:寄存器:用于读写引脚 当引脚被设为输入时,读此寄存器得到对应引脚的电平状态是高还是低;当引脚被设为输出时,写此寄存器相应位可令此引脚输出高低电平

13、。GPxUPGPxUP寄存器:寄存器: 上拉电阻、下拉电阻的作用在于,当GPIO引脚处于第三态(非高低电平,而是高阻态,即相当于没接芯片)时,它的电平状态由上拉电阻和下拉电阻确定。PORT A CONTROL REGISTERS (GPACON/GPADAT)PORT X CONTROL REGISTERS (X=BH) (GPXCON, GPXDAT, and GPXUP) 各组端口数量不一,所以并不固定。#define GPFCON (*(volatile unsigned *)0x56000050)#define GPFDAT (*(volatile unsigned *)0x56000

14、054)#define GPFUP (*(volatile unsigned *)0x56000058)int LedMain()void Delay(unsigned int);unsigned char ledtab=0xf7,0xef,0xdf,0xbf;int i;GPFUP&=0XFFFFFF87; /使能上拉使能上拉F3-6GPFCON&=0XC03f;GPFCON|=0X1540; /将将F3-6设为输出口设为输出口while(1)for(i=0;i9 /page address 也可以这么认为,一个Nand Flash地址的A0A7是它的column_addr,A9A25是它的

15、Page Address。#define rNFCONF (*(volatile unsigned *)0x4e000000) /nand flash configuration#define rNFCMD (*(volatile char *)0x4e000004 /nand flash command#define rNFADDR (*(volatile char *)0x4e000008 /nand flash address#define rNFDATA (*(volatile char *)0x4e00000c /nand flash data#define rNFSTAT (*(v

16、olatile unsigned *)0x4e000010 /nand flash opreation status#define rNFECC (*(volatile int *)0x4e000014 /nand flash ecc#define rNFECC0 (*(volatile char *)0x4e000014#define rNFECC1 (*(volatile char *)0x4e000015#define rNFECC2 (*volatile char *)0x4e000016现在举一个例子,假设要从Nand Flash中的第5000字节处开始读取1024个字节到内存的0x

17、30000000处,这样调用read函数:nf_read(5000, 0x30000000,1024);分析5000这个src_addr,根据:column_addr=src_addr%512; page_address=(src_addr9); 可得出column_addr=5000%512=392page_address=(50009)=9于是可以知道5000这个地址是在第9页的第392个字节处。于是nf_read函数将这样发送命令和参数column_addr=5000%512;page_address=(50009);NF_CMD=0x01; 从2nd half开始读取NF_ADDR=

18、column_addr &0xff; 1st Cycle A7:0NF_ADDR=page_address&0xff; 2nd.Cycle A16:9NF_ADDR=(page_address8)&0xff; 3rd.Cycle A24:17NF_ADDR=(page_address16)&0xff; 4th.Cycle A25向NandFlash的命令寄存器和地址寄存器发送完以上命令和参数之后, 就可以从rNFDATA寄存器(NandFlash数据寄存器)读取数据了.下面的代码进行数据的读取.for(i=column_addr;i9);unsignedchar*buf=desc_addr;w

19、hile(unsignedint)buf255)NF_CMD(0x01);elseNF_CMD(0x00);NF_ADDR(cloumn_addr&0xff);/columnaddressA7:0;NF_ADDR(page_address&0xff);/pageaddressA16:9NF_ADDR(page_address8)&0xff);/A24:17NF_ADDR(page_address16)&0xff);/A25;for(i=0;i10;i+);NF_WAITRB();for(i=column_addr;i512;i+)*buf+=NF_RDDATA();NF_nFCE_H();column_addr=0;page_address+;return;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号