大连理工大学软件学院 邱铁 办公楼 409 Tel : 87571521 E_mail: qiutie@dlut
-
Upload
socorro-xovi -
Category
Documents
-
view
59 -
download
13
description
Transcript of 大连理工大学软件学院 邱铁 办公楼 409 Tel : 87571521 E_mail: qiutie@dlut
1TM 1
大连理工大学软件学院 邱铁
办公楼 409
Tel: 87571521
E_mail: [email protected]
参考教材:《 ARM 嵌入式系统结构与编程 》 清华大学出版社 2009年 3 月出版
ARM 嵌入式系统结构与编程
2TM
第 10章 S3C44B0/S3C2410通信与 LCD 接口技术
本 章 基 于 嵌 入 式 微 控 制 器 S3C44B0X 和S3C2410 ,介绍了通用异步收发器( UART
) 、 I2C 总 线 的 通 信 原 理 和 S3C44B0X/
S3C2410 的用作图形界面接口的 LCD 控制器,每种功能部件都列出了相应的典型开发实例。
3TM 3
内容提要
10. 1 S3C44B0/ S3C2410 UART
10. 2 S3C44B0/ S3C2410 I2C 总线接口
10. 3 S3C44B0/S3C2410 LCD 控制器
4TM 4
10. 1 S3C44B0/ S3C2410 UART
通用异步接收和发送 UART( Universal
Asynchronous Receiver and Transmitter
)协议作为一种低速通信协议 , 广泛应用于通信领域的各种场合。
5TM 5
10. 1. 1 UART 原理
1 .串行通信的工作方式
6TM 6
2 .串行通信的波特率
在串行通信中,用波特率来描述数据的传输速度。波特率是每秒钟传送的二进制位数,其单位是 bps(bits per second) 。
是衡量串行数据速度快慢的重要指标。异步串行通信要求通信双方的波特率必须相同。
7TM 7
3 .奇偶校验
在发送数据时,每个数据后要附加 1 个奇偶校验位,这个校验位可以为 1 也可以为 0 ,用来保证包括奇偶校验位在内的所有传输的数据帧中 1 的的个数为奇数(奇校验)或 1
的个数为偶数(偶校验)。
8TM 8
4 .数据帧格式
9TM 9
10TM 10
11TM 11
12TM 12
5. RS232、 EIA-422和 EIA-485 标准 RS232 接口是 1970 年由美国电子工业协会( EIA )联合贝尔公司、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。
全名是“数据终端设备( DTE )和数据通讯设备( DCE )之间串行二进制数据交换接口技术标准”
13TM 13
为扩展应用范围, EIA于 1983 年在 EIA-
422 基础上制定了 EIA-485 标准,增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为 TIA/EIA-485-A 标准。
14TM 14
10. 1. 2 S3C44B0/ S3C2410 UART 模块
S3C44B0的 UART 单元提供两个独立异步串行 I/O
( SIO )端口, S3C2410的 UART 提供 3 个独立异步串行 I/O ,每一个可以在基于中断和基于 DMA
的模式下操作。
S3C44B0的 UART 可以支持位速率高达 115.2K
bps, S3C2410的 UART 可支持高达 230.4K bps
。每个 UART 通道包含两个 16 字节先进先出缓存( FIFO ),负责数据的接收和发送。
15TM 15
S3C44B0 S3C2410
RxD0,TxD0, RxD1, TxD1带有基于 DMA或基于中断的操作 RxD0,TxD0, RxD1, TxD1,RxD2和 TxD2带有基于 DMA
或基于中断的操作
UART通道 0带 I rDA1. 0和 16字节 FI FO UART通道 0, 1和 2带 I rDA1. 0和 16字节 FI FO
UART通道 1带 I rDA1. 0和 16字节 FI FO UART通道 0和 1带 nRTS0, nCTS0,nRTS1和 nCTS1
支持握手发送/接收 支持握手发送/接收
16TM 16
S3C44B0/
S3C2410
UART 模块
17TM 17
10. 1. 3 S3C44B0/ S3C2410 UART 操作
1 .数据发送与接收
它包括一个起始位, 5~8 个数据位,一个可选的奇偶校验位和 1~2 个停止位,用户可以通过线控制寄存器( ULCONn )的编程来设定。
在数据传输完成后产生传输中止信号,在中止信号传输后,可以继续向 Tx FIFO (或在非 FIFO 模式下的 Tx 保持寄存器)中发送数据。
18TM 18
2 .自动流量控制( AFC ):
S3C44B0和 S3C2410 支持带有 nRTS和nCTS 信号的自动流量控制。如果希望连接UART到调制解调器,禁止 UMCONn 寄存器的自动流量控制位,然后通过软件控制nRTS 的信号。
19TM 19
20TM 20
3 .自环模式:
S3C44B0/S3C2410 提供一个测试模式称为自环模式,以解决在通信连接时的错误。在此模式下,发送的数据被直接接收。
21TM 21
4 .红外模式:
S3C44B0/S3C2410的 UART 模块支持红外( IR )发送和接收,可以通过设置 UART
控制寄存器中的红外模式位选定
22TM 22
红外模式功能框图
23TM 23
当 IR处于发送模式时,如果输送的的数据位为 0 ,传输周期是正常串口传输的 3/16脉冲;当 IR处于接收模式时,接收器必须侦测3/16脉冲周期来识别一个 0值。
红外模式数据位传输形式见教材《 ARM 嵌入式系统结构与编程》图 10-6 实例
24TM 24
10. 1. 4 UART 中断与波特率的计算
1. UART 中断
S3C44B0/S3C2410 每个 UART有 7 个状态信号:超时错误、奇偶错误、帧错误、通信中止、接收数据缓冲区就绪、发送数据缓冲区为空和发送移位寄存器为空
25TM 25
2 .波特率的产生
S3C44B0:UBRDIVn = (round_off)(MCLK/(bps x 16) ) -1
S3C2410:UBRDIVn = (round_off)(PCLK/(bps x 16) ) -1
其中:
除数的范围是 1到(216-1);
round_off表示取整
26TM 26
举例 若波特率为 115200bps ,时钟源频率 MCLK为 40MHz ,除数 UBRDIVn 应如何计算?
解: UBRDIVn =( round_off) (40000000/(115200 X 16))-1
=( round_off)(21.7)-1
=20
一般为了减小误差,采取四舍五入的原则: UBRDIVn =( round_off) (40000000/(115200 X 16)+0.5)-1
=( round_off)(21.7+0.5)-1
=21
27TM 27
10. 1. 5 S3C44B0/ S3C2410 UART专用功能寄存器
1. UART 线控制寄存器 (ULCONn)
S3C44B0有 2个 UART 线控制寄存器, ULCON0和 ULCON1 。
S3C2410 有三个 UART 控制寄存器, ULCON0, ULCON1和 ULCON2 。
28TM 28
寄存器 S3C44B0地址 S3C2410地址 读/写 描述 复位值
ULCON0 0x01D00000 0x50000000 R/W UART通道 0线性控制寄存器 0x00
ULCON1 0x01D04000 0x50004000 R/W UART通道 1线性控制寄存器 0x00
ULCON2 无 0x50008000 R/W UART通道 2线性控制寄存器 0x00
29TM 29
ULCONn 位 描述 初始状态
Reserved [7] 0
红外模式 [6] 指定是否使用红外模式
0 = 正常模式操作 1 = 红外 Tx/Rx 模式
0
奇偶模式 [5:3] 在 UART发送和接收操作过程中指定奇偶验类型
0xx = 无奇偶
100 = 奇数奇偶
101 = 偶数奇偶
110 = 强制奇偶/检测 1
111 = 强制奇偶/检测 0
000
停止位数目 [2] 指定停止位数
0 = 每帧 1停止位
1 = 每帧 2停止位
0
字宽 [1:0] 指定数据位数
00 = 5-bits 01 = 6-bits
10 = 7-bits 11 = 8-bits
00
30TM 30
2. UART 控制寄存器 UCONn
S3C44B0有 2个 UART 控制寄存器:UCON0和 UCON1。 S3C2410 有三个UART 控制寄存器: UCON0, UCON1和UCON2 。
31TM 31
寄存器 S3C44B0地址 S3C2410地址 读/写 描述 复位值
UCON0 0x01D00004 0x50000004 R/W UART通道 0控制寄存器 0x00
UCON1 0x01D04004 0x50004004 R/W UART通道 1控制寄存器 0x00
UCON2 - 0x50008004 R/W UART通道 2控制寄存器 0x00
32TM 32
33TM 33
3. UART FIFO 控制寄存器
S3C44B0有 2个 UART FIFO 控制寄存器:UFCON0和 UFCON1。 S3C2410有 3个UART FIFO 控制寄存器:UFCON0, UFCON1和 UFCON2 。
34TM 34
寄存器 S3C44B0地址 S3C2410地址 读/写 描述 复位值
UFCON0 0x01D00008 0x50000008 R/W UART通道 0 FIFO控制寄存器 0x0
UFCON1 0x01D04008 0x50004008 R/W UART通道 1 FIFO控制寄存器 0x0
UFCON2 - 0x50008008 R/W UART通道 2 FIFO控制寄存器 0x0
35TM 35
36TM 36
4. UART 调制解调器控制寄存器
S3C44B0有 2个 UART 调制解调器控制寄存器, UMCON0和 UMCON1 。
S3C2410有 3个 UART 调制解调器控制寄存器: UMCON0, UMCON1和 UMCON2
。
37TM 37
UART 调制解调器控制寄存器详细信息见教材《 ARM 嵌入式系统结构与编程》表 10-5
38TM 38
5. UART 发送 / 接收状态寄存器
S3C44B0有 2个 UART 发送 / 接收状态寄存器: UTRSTAT0和 UTRSTAT1 。
S3C2410有 3个 UART 发送 / 接收状态寄存器: UTRSTAT0, UTRSTAT1和UTRSTAT2 。
39TM 39
寄存器 S3C44B0地址 S3C2410地址 读/写 描述 复位值
UTRSTAT0 0x01D00010 0x50000010 R/W UART通道 0 Tx/Rx状态寄存器 0x6
UTRSTAT1 0x01D04010 0x50004010 R/W UART通道 1 Tx/Rx状态寄存器 0x6
UTRSTAT2 - 0x50008010 R/W UART通道 2 Tx/Rx状态寄存器 0x6
UTRSTATn 位 描述 初始状态
发送转移器为空 [2] 当发送转移寄存器没有有效数据被发送并且发送转移寄存器
为空时自动设置为 1
0 = 不为空
1 = 发送保持&转移寄存器为空
1
发送缓冲区为空 [1] 当发送缓冲寄存器不包含有效数据时自动设置为 1
0 = 缓冲寄存器不为空
1 = 空
1
接收缓冲区数据就绪 [0] 当接收缓冲寄存器包含有效数据,RXDn 端口接收完毕时被
自动设置为 1.
0 = 完全为空
1 = 缓冲寄存器有接收到的数据
如果 UART 使用 FIFO,用户需要检查 UFSTAT 寄存器中的
Rx FIFO Count位,而不是此位。如果是 S3C2410还需要检
查 Rx FIFO Full位。
0
40TM 40
6. UART错误状态寄存器
S3C44B0有 2个 UART错误状态寄存器:UERSTAT0和 UERSTAT1 。
S3C2410有 3个 UART错误状态寄存器:UERSTAT0, UERSTAT1和 UERSTAT2
详细信息见教材《 ARM 嵌入式系统结构与编程》表 10-7
41TM 41
7. UART FIFO状态寄存器
S3C44B0有 2个 UART FIFO状态寄存器:UFSTAT0和 UFSTAT1 。
S3C2410有 3个 UART FIFO状态寄存器:UFSTAT0, UFSTAT1和 UFSTAT2 。
42TM 42
寄存器 S3C44B0地址 S3C2410地址 读/写 描述 复位值
UFSTAT0 0x01D00018 0x50000018 R/W UART通道 0 FIFO状态寄存器 0x00
UFSTAT1 0x01D04018 0x50004018 R/W UART通道 1 FIFO状态寄存器 0x00
UFSTAT2 - 0x50008018 R/W UART通道 2 FIFO状态寄存器 0x00
UFSTATn 位 描述 初始状态
保留位 [15:10] 000000
发送 FIFO满 [9] 在数据发送期间,若发送 FIFO满,则该位自动设置为 1 0
接收 FIFO满 [8] 在数据接收期间,若接收 FIFO满,则该位自动设置为 1 0
发送 FIFO计数 [7:4] 发送 FIFO中数据的个数 0000
接收 FIFO计数 [3:0] 接收 FIFO中数据的个数 0000
43TM 43
8. UART 调制解调器状态寄存器
S3C44B0有 2个 UART 调制解调器状态寄存器: UMSTAT0和 UMSTAT1 。
S3C2410 也有 2个 UART 调制解调器状态寄存器: UMSTAT0和 UMSTAT1
详细信息见教材《 ARM 嵌入式系统结构与编程》表 10-9
44TM 44
9. UART 发送缓冲寄存器
S3C44B0有 2个 UART 发送缓冲寄存器:UTXH0和 UTXH1 。
S3C2410 也有 3个 UART 发送缓冲寄存器: UTXH0、 UTXH1和 UTXH2 。
45TM 45
寄存器 S3C44B0地址 S3C2410地址 读/写 描述 复位值
UTXH0 0x01D00020(小端)
0x01D00023(大端)
0x50000020(小端)
0x50000023(大端)
W UART通道 0 发送缓冲寄存器 -
UTXH1 0x01D04020(小端)
0x01D04023(大端)
0x50004020(小端)
0x50004020(大端)
W UART通道 1 发送缓冲寄存器 -
UTXH2 - 0x50008020(小端)
0x50008020(大端)
W UART通道 2 发送缓冲寄存器 -
UTXHn 位 描述 初始状态
TXDATA [7:0] 8位将要发送的数据 -
46TM 46
10. UART 接收缓冲寄存器
S3C44B0有 2个 UART 发送缓冲寄存器:URXH0和 URXH1 。
S3C2410 也有 3个 UART 发送缓冲寄存器: URXH0、 URXH1和 URXH2 。
47TM 47
寄存器 S3C44B0地址 S3C2410地址 读/写 描述 复位值
URXH0 0x01D00024(小端)
0x01D00027(大端)
0x50000024(小端)
0x50000027(大端)
R UART通道 0 接收缓冲寄存器 -
URXH1 0x01D04024(小端)
0x01D04027(大端)
0x50004024(小端)
0x50004027(大端)
R UART通道 1 接收缓冲寄存器 -
URXH2 - 0x50008024(小端)
0x50008027(大端)
R UART通道 2 接收缓冲寄存器 -
UTXHn 位 描述 初始状态
RXDATA [7:0] 8位接收到的数据 -
48TM 48
10. 1. 6 S3C44B0/ S3C2410 UART 设计实例
RS-232 接口设计
49TM 49
软件设计
串口通信的软件设计包括硬件设备的初始化、数据发送程序与数据接收程序,其中接收可以采用中断的方式,可以采用查询的方式。
具本编程实例见教材《 ARM 嵌入式系统结构与编程》第 314页
50TM 50
10. 2 S3C44B0/ S3C2410 I2C 总线接口
I2C( Inter- Integrated Circuit )总线是由 Philips半导体公司于上世纪 80 年为了实现在同一块电路板上的各个器件进行简单的消息传递而设计的。
51TM 51
1 . I2C 工作原理
I2C 的工作原理类似于电话网络,各种被控制电路均并联在这条总线上,只有拨通各自的号码被控电路才能工作,所以每个电路和模块都有唯一的地址。
52TM 52
53TM 53
开始信号: SCL 为高电平时, SDA 由高电平向低电平跳变,开始传送数据
54TM 54
结束信号: SCL 为高电平时, SDA 由低电平向高电平跳变,结束传送数据
55TM 55
传输状态与空闲状态:当 SCL 为高电平时,保持 SDA 高电平(或低电平)不变,那么I2C 总线保持在传输状态或者空闲状态。
56TM 56
应答信号:接收数据的组件在接收到 8bit 数据后,向发送数据的 I2C 器件发出特定的低电平脉冲,表示已收到数据。
57TM 57
2 . I2C 总线的操作 控制字节 在起始条件之后,必须是器件的控制字节
,其中高四位为器件类型识别符(不同的芯片类型有不同的定义),接着三位为片选,最后一位为读写位,当为 1 时为读操作,为 0 时为写操作。
写操作 分为“字节写”和“页面写”两种操作。对于页面写,根据芯片的一次装载的字节不同有所不同。
读操作 有三种基本操作:当前地址读、随机读和顺序读三种。
58TM 58
3 . I2C 总线地址地址 用途
0000000 0 广播地址
0000000 1 起始字节
0000001 X CBUS地址(一种三线总线,和 I2C不同)
0000010 X 保留地址,或者用做其他总线
0000011 X 保留地址
00001XX X 高速主设备地址(第三位用来确定主设备)
11110XX X 10位地址模式
11111XX X 保留地址
59TM 59
10. 2. 2 S3C44B0/S3C2410 I2C 总线功能模块
S3C44B0和 S3C2410 这两款 RISC 微处理器都支持多主控的 I2C 串行总线接口。
一条专门的串行数据线( SDA )和一条时钟信号线( SCL )在所有连接到 I2C 总线上的主控组件和周边设备之间进行信息的传送。 SDA和 SCL 都是可以双向传送的。
60TM 60
61TM 61
10. 2. 3 S3C44B0/S3C2410 I2C 总线操作
1. I2C 总线接口的工作模式
C44B0和 S3C2410的 I2C 总线接口有四种工作模式:
主控组件传送模式
主控组件接收模式
从组件传送模式
从组件接受模式
62TM 62
S3C44B0和 S3C2410的 I2C 总线的开始条件和终止条件
SCL
SDA
开始条件 终止条件
63TM 63
2 .数据传送格式
64TM 64
总线数据传输时序
65TM 65
10. 2. 4 S3C44B0/S3C2410 I2C专用功能寄存器
1 .多主控 I2C 控制寄存器( IICCON )寄存器 S3C44B0地址 S3C2410地址 读/写 描述 复位值
IICCON 0x01D60000 0x54000000 R/W I2C总线控制寄存器 0x0X
66TM 66
IICCON 位 描述 初始状态
应答使能 [7] I2C总线应答使能位
0 - 禁止应答产生;1 - 允许应答产生
在发送(Tx)模式下,应答时使 SDA线空闲;
在接收(Rx)模式下,应答时将 SDA线置低电平。
0
Tx时钟源选择 [6] I2C总线发送数据时钟源预分频选择位
0 - IICCLK = fMCLK /16
1 - IICCLK = fMCLK /512
0
Tx/Rx中断使
能
[5] I2C总线 Tx/Rx中断使能/禁止位
0 - 中断禁止;1 - 中断使能
0
中断请求标志 [4] I2C总线中断请求标志位
不能写 1,读到 1时,SCL保持在低电平,并且 I2C停止工作。将其清
0后,I2C继续工作。
0 - 读:没有中断请求;写:清除中断请求标志为,重新开始 IIC传送
1 - 读:有中断请求;写:禁止
0
传送时钟值 [3:0] I2C传送时钟分频值,I2C总线传送时钟的频率使用以下公式计算:
Tx时钟= IICCLK/(IICCON[3:0]+1)
不定
67TM 67
2 .多主控 I2C 总线控制 /状态寄存器( IICSTAT )
3. 多主控 I2C地址寄存器( IICADD )
4 .多主控 I2C 发送 / 接收数据转移寄存器( IICDS
)
详细信息见教材《 ARM 嵌入式系统结构与编程》表 10-14、 10-15、 10-16
68TM 68
10. 2. 5 S3C44B0/S3C2410 I2C总线设计实例
1 .I2C 总线接口设计
69TM 69
70TM 70
2. 软件设计
I2C 总线接口的软件设计包括硬件设备的初始化、数据发送程序、数据接收程序,其中接收可以采用中断和查询的方式。程序的主要源代码见教材《 ARM 嵌入式系统结构与编程》第 326页。
71TM
第 10章 S3C44B0/S3C2410通信与 LCD 接口技术
上半部完
72TM 72
下半部内容提示
10. 1 S3C44B0/ S3C2410 UART
10. 2 S3C44B0/ S3C2410 I2C 总线接口
10. 3 S3C44B0/S3C2410 LCD 控制器