嵌入式系统开发3S3C2410主要外设功能部.ppt_第1页
嵌入式系统开发3S3C2410主要外设功能部.ppt_第2页
嵌入式系统开发3S3C2410主要外设功能部.ppt_第3页
嵌入式系统开发3S3C2410主要外设功能部.ppt_第4页
嵌入式系统开发3S3C2410主要外设功能部.ppt_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

第三章 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目的寄存器,源操作数 用于完成从另一个寄存器、被移位的寄存 器或将一个立即数加载到目的寄存器;S项决 定指令的操作是否影响CPSR中条件标志位的 值,当无S时,指令不更新CPRS中条件标志位 的值。 mov r9,r2 movs r0,#oxFF00 CMP:CMP条件 操作数1,操作数2 用于把一个寄存器的内容和另一个寄存器 的内容或立即数进行比较,同时更新CPSR中 条件标志位的值。该指令只进行一次减法运 算,但不存储结果,只更改条件标准位。 cmp r0,#oxFF00 跳转指令 用于实现程序流程的跳转;可以完成从当 前指令向前或向后的32MB地址空间的跳转; (超过要使用直接向程序计数器PC写入跳转 地址值的方式)。 B 跳转指令 BL 带返回的跳转指令 BLX 带返回和状态切换的跳转指令 BX 带状态切换的跳转指令 WAKEUP_SLEEP ;Release SCLKn after wake-up from the SLEEP mode. ldrr1,=MISCCR ldrr0,r1 bicr0,r0,#(79 /page address 也可以这么认为,一个Nand Flash地址的A0A7是它的 column_addr,A9A25是它的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 (*(volatile 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个字 节到内存的0x30000000处,这样调用read函数: nf_read(5000, 0x30000000,1024); 分析5000这个src_addr,根据 : column_addr=src_addr%512; page_address=(src_addr9); 可得出column_addr=5000%512=392 page_address=(50009)=9 于是可以知道5000这个地址是在第9页的第392个字节处。 于是nf_read函数将这样发送命令和参数 column_addr=5000%512; page_address=(50009); NF_CMD=0x01; 从2nd half开始读取 NF_ADDR= column_addr 1st Cycle A7:0 NF_ADDR=page_address 2nd.Cycle A16:9 NF_ADDR=(page_address8) 3rd.Cycle A24:17 NF_ADDR=(page_address16) 4th.Cycle A25 向NandFlash的命令寄存器和地址寄存器发送完以上命令和 参数之后, 就可以从rNFDATA寄存器(NandFlash数据寄存器) 读取数据了. 下面的代码进行数据的读取. for(i=column_addr;i 9); unsigned char * buf = desc_addr; while(unsigned int)buf 255) NF_CMD(0x01); else NF_CMD(0x00); NF_ADDR(cloumn_addr /column address A7:0; NF_ADDR(page_address /page address A16:9 NF_ADDR(page_address 8) /A24:17 NF_ADDR(page_address 16) /A25; for(i=0;i10;

温馨提示

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

评论

0/150

提交评论