大连理工大学软件学院 邱铁 办公楼 409 Tel : 87571521 E_mail: qiutie@dlut

Post on 02-Jan-2016

59 views 13 download

description

ARM 嵌入式系统结构与编程. 大连理工大学软件学院 邱铁 办公楼 409 Tel : 87571521 E_mail: qiutie@dlut.edu.cn 参考教材: 《ARM 嵌入式系统结构与编程 》 清华大学出版社 2009 年 3 月出版. 本章基于嵌入式微控制器 S3C44B0X 和 S3C2410 ,介绍了通用异步收发器( UART )、 I2C 总线的通信原理和 S3C44B0X/S3C2410 的用作图形界面接口的 LCD 控制器,每种功能部件都列出了相应的典型开发实例。. 第 10 章 S3C44B0/S3C2410 通信与 LCD 接口技术. - PowerPoint PPT Presentation

Transcript of 大连理工大学软件学院 邱铁 办公楼 409 Tel : 87571521 E_mail: qiutie@dlut

1TM 1

大连理工大学软件学院 邱铁

办公楼 409

Tel: 87571521

E_mail: qiutie@dlut.edu.cn

参考教材:《 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 控制器