嵌入式linux驱动之路09:裸机开发之UART 串口通信简介

串行接口指的是数据一个一个的顺序传输,使用两条线即可实现双向通信,一条用于发送,一条用于接收,I.MX6U 自带的 UART 外设就是串口的一种,UART 是异步串行收发器。。 USART 是同步/异步串行收发器。相比 UART 多了
一个同步的功能,在硬件上体现出来的就是多了一条时钟线。
在这里插入图片描述
空闲位:
数据线在空闲状态的时候为逻辑“1”状态,也就是高电平,表示没有数据线空闲,没有数据传输。
起始位:
当要传输数据的时候先传输一个逻辑“0”,也就是将数据线拉低,表示开始数据传输。
数据位:数据位就是实际要传输的数据,数据位数可选择 5~8 位,我们一般都是按照字节传输数据的,一个字节 8 位,因此数据位通常是 8 位的。低位在前,先传输,高位最后传输。
奇偶校验位:
这是对数据中“1”的位数进行奇偶校验用的,可以不使用奇偶校验功能。
停止位:
数据传输完成标志位,停止位的位数可以选择 1 位、1.5 位或 2 位高电平,一般都选择 1 位停止位。
波特率:
波特率就是 UART 数据传输的速率,也就是每秒传输的数据位数,一般选择 9600、19200、115200 等。
编程思路步骤:
1.初始化对应io:复用,电器属性
2.初始化串口:配置UCR1 UCR2 UCR3(配置模式)UFCR UBIR UBMR(设置波特率)然后使能
3.发送与接受:等待上一次发送或接受完成(USR2寄存器)UARTx_URXD 即可获取到接收到的数据,如果要通过 UART 发送数据,直接将数据写入到寄存器UARTx_UTXD 即可。

DDR3驱动

一般 Cortex-A 芯片自带的 RAM 很小,比如 I.MX6U 只有 128KB 的 OCRAM。如果要运行 Linux 的话完全不够
用的,所以必须要外接一片 RAM 芯片。

DDR3 内存简介

RAM:随机存储器,可以随时进行读写操作RAM ,可以直接和 CPU 进行通信,速度很快,掉电以后数据会丢失。比如内存条、SRAM、SDRAM、DDR 等都是 RAM。RAM 一般用来保存程序数据、中间结果,,比如我们在程序中定义了一个变量 a,然后对这个 a 进行读写操作,示例代码如下:
1 int a;
2 a = 10;
我们可以随意的对 RAM 中任何地址的数据进行读写操作。
ROM:只读存储器。我们买手机,这个手机是 4+64 或 6+128 配置,说的就是 RAM 为 4GB 或 6GB,ROM 为 64G 或128GB。相比于RAM,向 ROM 或者 Flash 写入数据要复杂很多,因此意味着速度就会变慢(相比 RAM),但是ROM 和 Flash 可以将容量做的很大,而且掉电以后数据不会丢失,适合用来存储资料。

SRAM 简介

SRAM 的全称叫做 Static Random-Access Memory,也就是静态随机存储器,这里的“静态”说的就是只要 SRAM 上电,那么 SRAM 里面的数据就会一直保存着,直到 SRAM 掉电。对于RAM 而言需要可以随机的读取任意一个地址空间内的数据,因此采用了地址线和数据线分离,我们以IS62WV51216 这颗 SRAM 芯片为例简单的讲解一下 SRAM,这是一颗 16 位宽(数据位为 16 位)、1MB 大小的 SRAM
在这里插入图片描述
①、地址线
这部分是地址线,一共 A0~A18,也就是 19 根地址线,因此可访问的地址大小就是2^19=524288=512KB。前面我们说了是 16 位宽的,也就是一次访问 2 个字节,因此需要对
512KB 进行乘 2 处理,得到 512KB*2=1MB。
②、数据线
IS62WV51216 是一个 16 位宽的 SRAM,因此就有 16 根数据线,一次访问可以访问 16bit 的数据,也就是 2 个字节。因此就有高字节和低字节数据之分
③、控制线
SRAM 要工作还需要一堆的控制线,CS2 和 CS1 是片选信号,低电平有效,在一个系统中可能会有多片 SRAM(目的是为了扩展 SRAM 大小或位宽),这个时候就需要 CS 信号来选择当前使用哪片 SRAM。OE 是输出使能信号,低电平有效,也就是主控从 SRAM 读取数据。
WE 是写使能信号,低电平有效,也就是主控向 SRAM 写数据。
UB 和 LB 信号UB 为低电平的话表示访问高字节,LB 为低电平的话表示访问低字节。

SDRAM 简介

SRAM 最大的缺点就是价格高、容量小!但是应用对于内存的需求越来越高,必须提供大内存解决方案。SDRAM 全称是 Synchronous Dynamic Random Access Memory,翻译过来就是同步动态随机存储器,“同步”的意思是 SDRAM 工作需要时钟线,“动态”的意思是 SDRAM 中的数据需要不断的刷新来保证数据不会丢失,“随机”的意思就是可以读写任意地址的数据。
就以 W9825G6KH 为例,W9825G6KH 是一款 16 位宽(数据位为 16 位)、32MB 的 SDRAM
在这里插入图片描述
①、控制线:
CLK:时钟线,“同步”的意思就是时钟,因此需要一根
时钟线,这是和 SRAM 最大的不同,SRAM 没有时钟线。
CKE:时钟使能信号线
CS:片选信号,这个和 SRAM 一样,都有片选信号。
RAS:行选通信号,低电平有效,SDRAM 和 SRAM 的寻址方式不同,SDRAM 按照行、列来确定某个具体的存储区域。因此就有行地址和列地址之分,行地址和列地址共同复用同一组地址线,要访问某一个地址区域,必须要发送行地址和列地址,指定要访问哪一行?哪一列?
RAS 是行选通信号,表示要发送行地址,行地址和列地址访问方式如图 23.1.3.2 所示
在这里插入图片描述
CAS:列选通信号,和 RAS 类似,低电平有效,选中以后就可以发送列地址了。
WE:写使能信号,低电平有效。
②、A10 地址线
A10 是地址线, A10 地址线还控制着 Auto-precharge,也就是预充电。SDRAM芯片内部会分为多个 BANK,SDRAM 在读写完成以后,如果要对同一个 BANK 中的另一行进行寻址操作就必须将原来有效的行关闭,然后发送新的行/列地址,关闭现在工作的行,准备打开新行的操作就叫做预充电。
③、地址线
一共有 A0~A12,共 13 根地址线,但是我们前面说了 SDRAM 寻址是按照行地址和列地址来访问的,因此这 A0~A12 包含了行地址和列地址。不同的 SDRAM 芯片,根据其位宽、容量等的不同,行列地址数是不同的,比如 W9825G6KH 的 A0~A8 是列地址,一共 9 位列地址,A0~A12 是行地址,一共 13位,因此可寻址范围为:29*213=4194304B=4MB, 16 位宽(2 个字节),得到 4*2=8MB,但是一个 32MB 的 SDRAM ,为什么算出来只有 8MB,8MB 只是一个 BANK 的容量,W9825G6KH 一共有 4 个 BANK。
④、BANK 选择线
BS0 和 BS1 是 BANK 选择信号线既然有4个BANK,那么在访问的时候就需要告诉SDRAM,我们现在需要访问哪个BANK,BS0 和 BS1 就是为此而生的,4 个 BANK 刚好 2 根线。
⑥、数据线
DQ0~DQ15,不同的位宽其数据线数量不同。
⑦、高低字节选择

SDRAM 在一个 CLK 周期传输一次数据,DDR 在一个 CLK 周期传输两次数据,也就是在上升沿和下降沿各传输一次数据,这个概念叫做预取(prefetch),相当于 DDR 的预取为 2bit,因此DDR 的速度直接加倍!
DDR 的寻址流程是先指定 BANK 地址,然后再指定行地址,最后指定列地址确定最终要寻址的单元。BANK 地址和行地址是同时发出的,这个命令叫做“行激活”(RowActive)。行激活以后就发送列地址和具体的操作命令(读还是写),这两个是同时发出的,因此一般也用“读/写命令”表示列寻址。在行有效(行激活)到读写命令发出的这段时间间隔叫做 tRCD。
CL 参数:当列地址发出以后就会触发数据传输,但是从发出命令到数据开始输出有一段时间,这段时间就是CL(CAS Latency),也就是列地址选通潜伏期。一般 tRCD 和 CL 大小一样。

MMDC 控制器

MMDC 就是 I.MX6U的内存控制器,用于连接 DDR ,DDR 的引脚都是独立的,一般没有复用功能,只需要设置 DDR 引脚的电气属性即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值