嵌入式课件代码嵌入式课件代码完美版 4.docx
《嵌入式课件代码嵌入式课件代码完美版 4.docx》由会员分享,可在线阅读,更多相关《嵌入式课件代码嵌入式课件代码完美版 4.docx(9页珍藏版)》请在冰豆网上搜索。
嵌入式课件代码嵌入式课件代码完美版4
串口协议:
异步串行数据收发器
起始位:
一位低电平
数据位:
5、6、7、8
校验位:
奇偶校验
停止位:
1、1.5、2
空闲位:
给高电平
波特率:
115200
S5pv210
ULCON0线性控制寄存器0xE2900000
数据格式:
8n1
ULCON0=3
UCON0控制寄存器0xE2900004
UCON0=5
UFCON0FIFO控制寄存器0xE2900008
UFCON0=0
UMCON0Modem模式控制寄存器0xE290000C
UMCON0=0
UTRSTAT0收发数据状态寄存器0xE2900010
只读,通过读取
发送数据时,判断bit[1]1,可以发送UTRSTAT0&2
接收数据时,判断bit[0]1,可以接收UTRSTAT0&1
UTXH0发送寄存器0xE2900020
当确认可以发送数据时,将要发送的数据写入该寄存器
URXH0接收寄存器0xE2900024
当确认可以接收数据时,读取该寄存器获得接收的数据
UBRDIV0波特率设置寄存器0xE2900028
整数部分
UDIVSLOT00xE290002C
(小数部分*16)取整->查表
PCLK=66.5MHZ
配置GPIO,使对应管脚作为串口的发送和接收管脚
GPA0_0[3:
0]GPA0_1[7:
4]
GPA0CON[7:
0]&~0xFF|0x22
GPA0PUD[3:
0]0禁止上下拉电阻
Shell
要实现了一个命令解释器
要求:
命令行输入ledon,把LED1灯点亮
命令行输入ledoff,把LED1灯关闭
将整个uart的代码和部分led(只拷贝led.h和led.c)代码重新拷贝到一个shell_kuang目录中:
atoi
voiditoa(charbuf[],unsignedintnum);
将十进制的数字转换为对应16进制格式的函数
inti=100“0x64”
tarena#setenvipaddr192.168.1.6
tarena#saveenv
NandFlash闪存的使用
GPIO
UART
Datasheet/K9K8G08U0B.pdf
NandFlash的datasheet
1.什么是NandFlash
存储设备,用来存储整个系统,相当于PC中的硬盘
2.TPAD中采用了什么NandFlash
三星的K9K8G08U0B
3.如果才能操作NandFlash,主要就是对它的读操作,写操作,校验操作
需要阅读NandFlash的datasheet,该手册中会详细的描述如何对其进行操作。
即K9K8G08U0B.pdf
通过阅读NandFlash的数据手册,得知:
1)NandFlash主要的指标参数:
工作电压:
3.3V
容量:
(1G(主存储区)+32M(oob区))X8bit
读写操作:
按页(2K+64)X8bit
擦除操作:
按块(128K+4K)X8bit1块=64页
命令、地址、数据复用8个IO口
可以对存储块进行写,擦除锁定
可以100K次的写、擦除(并且可以提供1bit/528byteECC校验)
数据可以保存10年
使用命令操作NandFlash
存在唯一的ID号
引脚的封装信息
特性:
1.在没写数据之前,里面都是1
2.写数据的时候,是把1改成0,不能把0改成1
3.已经写过数据,再写数据前,需要先擦除
nanderase0100000
nandwrite200080000100000
4.存在位翻转(位交换)
5.出厂时有可能就存在坏块
6.擦写次数有限制。
2)NandFlash外观图
NandFlash有48个管脚,并不是每个管脚都是用了。
N.C:
没有使用的,无连接的管脚,可以不管
nCE:
片选信号,由于8根数据线也被网卡,内存使用,所以需要通过片选管脚来区分。
IO0-IO7:
数据线,传输命令,地址,数据
ALE:
当ALE高电平时,数据线上传输就是地址
CLE:
当CLE高电平是,数据线上传输是命令
当ALE,CLE都为低电平时,数据线上传输的是数据
nRE:
读使能,低电平有效
nWE:
写使能,低电平有效
nWP:
写保护,低电平有效
R/nB:
判断NandFlash的状态,
高电平:
Ready,准备就绪
低电平:
Busy,忙
Vcc:
接电源
Vss:
接地
前面加小n,表示该管脚低电平有效。
NandFlash的各个管脚与s5pv210处理器中的NandFlash控制器相连(所谓NandFlash控制器从表现形式上看,也就是一些s5pv210上的管脚,只是这部分管脚的主要功能就是用来控制NandFlash的),因此,其实我们并不用直接去操作NandFlash的管脚,而是通过操作NandFlash控制器,实现对NandFlash的操作。
3)NandFlash的内部组织结构:
NandFlash的内部结构:
(1)页:
构成NandFlash的基本单位,页大小固定
1page=(2K+64)bytes
每一页中又分main区和spare区,main区用于正常数据的存储,spare区用于存储一些附加信息,如好坏块标记,块的逻辑地址,ECC校验和等等。
(2)块:
由若干页构成,块大小固定
1block=64page=(2K+64)bytesX64=(128K+4K)bytes
(3)device:
若干块构成
1device=8192block=(128K+4K)bytesX8192
=(1G+32M)bytes
1G字节,用来存放主数据
32M字节,用来存放校验位与坏块标识等等
块号:
8192块,0~8191块
页号:
524288页,0~524287页
要表示NandFlash的容量,需要多少数据位来表示一个存储单元地址呢?
(1)页内地址:
页大小=2K=211,即使用11位表示就够了,由于每页还有64字节,所以需要再使用1位表示64字节,因此,要表示一页容量总共需要12位表示。
(2)页号:
总页号=8192块X64=8KX64=213X26=219,因此,需要使用19位来表示页号
因此,总共需要31位来表示一个存储单元的地址
因此,得出结论:
页号(行地址)A30-A12表示
页内地址(列地址)A11-A0表示
地址如何给出呢?
由于NandFlash是I/O接口,没有独立地址线,因此只能复用NandFlash上的8根IO线来发送地址
五个周期
1周期:
A0-A7
2周期:
A8-A110000
3周期:
A12-A19
4周期:
A20-A27
5周期:
A28-A3000000
此表为NandFlash的命令表,每种NandFlash的命令都可能是不一样的,因此,要参考NandFlash的datasheet。
由程序员直接操作的信号:
nCE片选信号
由硬件(NandFlash控制器)自动产生的信号:
IO0-IO7
ALE
CLE
nRE
nWE
R/nB
NandFlash控制器
S5pv210