首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

S3C2440串口驱动(3)

S3C2440串口驱动(3)

通过MINI2440硬件CPU管脚图可以看出,RSTXD0和RSRXD0连接到CPU的GPH2和GPH3管脚上的,而GPH2和GPH3是CPU复用管脚,因此我们要对GPH2和 GPH3对应寄存器进行设置,其对应寄存器为GPHCON。
表2-23 GPIO端口H设置寄存器(GPHCON)
寄存器名
地址
是否读写
描述
复位默认值
GPHCON
0x56000070
R/W
GPIO端口H配置寄存器
0x0
GPHDAT
0x56000074
R/W
GPIO端口H数据寄存器
未定义
GPHUP
0x56000078
R/W
GPIO端口H上拉无效寄存器
0x000


GPHCON

描述
初始值




GPH3
[7:6]
设置当前管脚功能:
00 = 输入端口 01 = 输出端口
10 = RXD[0]配置为串口0的接收数据管脚
11 = 保留
0
GPH2
[5:4]
设置当前管脚功能:
00 = 输入端口 01 = 输出端口
10 = RXD[0]配置为串口0的接收数据管脚
11 = 保留
0





GPHCON[7:6]和GPHCON[5:4]为RSTXD0和RSRXD0管脚设置位,将其功能设置为了UART专用通信管脚,因此应该设置其为0b10,分别用于UART数据的接收和发送。

GPHCON | = 0xa0;


表2-24 GPIO端口H上拉电阻设置寄存器(GPHUP)
GPHUP

描述
初始值
GPH[10:0]
[10:0]
设置对应管脚GPHn的是否启用上拉功能
0 = 启用上拉功能
1 = 禁用上拉功能
0

GPHUP上拉电阻设置寄存器:上拉电阻用来稳定电平信号,保障传输数据的正确,GPHUP里设置其内部上拉。

GPHUP = 0x0;


表2-25 UART0串行控制寄存器(ULCON0)
寄存器名
地址
是否读写
描述
复位默认值
ULCON0
0x50000000
R/W
串口0串行控制寄存器
0x00


ULCON0

描述
初始值
保留
[7]

0
红外模式
[6]
选择串口0是否使用红外模式:
0 =正常通信模式
1 =红外通信模式
0
校验模式
[5:3]
设置串口0在数据接收和发送时采用的校验方式:
0xx =无校验
100 =奇校验
101 =偶校验
110 =强制校验/检测是否为1
111 =强制校验/检测是否为0
000
停止位
[2]
设置串口0停止位数:
0 =每个数据帧一个停止位
1 =每个数据帧二个停止位
0
数据位
[1:0]
设置串口0数据位数:
00 = 5个数据位 01 = 6个数据位
10 = 7个数据位 11 = 8个数据位
00

通过设置ULCON0来设置UART0通信方式,ULCON0[6]选择通信方式为一般通信模式或红外通信模式,ULCON0[5:3]设置串口0校验方式,ULCON0[2]设置串口0停止位数,ULCON0[1:0]设置串口0的数据位数。
我们选择一般通信模式,无校验位,1个停止位,8个数据位的数据通信方式。因此:

ULCON0 = 0x03;


表2-26 UART0串口控制寄存器(UCON0)
寄存器名
地址
是否读写
描述
复位默认值
UCON0
0x50000004
R/W
串口0控制寄存器
0x00


UCON0

描述
初始值
FCLK分频因子
[15:12]
当UART0选择FCLK作为时钟源时,设置其FCLK的分频因子
UART0工作时钟频率 = FCLK/ FCLK分频因子 + 6
0000
UART时钟源选择
[11:10]
选择UART0的工作时钟PCLK,UEXTCLK,FCLK/n:
00,10 = PCLK
01 = UEXTCLK
11 = FCLK/n
当选择FCLK/n作为UART0工作时钟时还要做其它设置,具体请读者自行查看硬件手册
00
发送数据中断
产生类型
[9]
设置UART0中断请求类型,在非FIFO传输模式下,一旦发送数据缓冲区为空,立即产生中断信号,在FIFO传输模式下达到发送数据触发条件时立即产生中断信号:
0 =脉冲触发
1 =电平触发
0
接收数据中断
产生类型
[8]
设置UART0中断请求类型,在非FIFO传输模式下,一旦接收到数据,立即产生中断信号,在FIFO传输模式下达到接收数据触发条件时立即产生中断信号:
0 =脉冲触发
1 =电平触发
0
接收数据超时
[7]
设置当接收数据时,如果数据超时,是否产生接收中断:
0 =不开启超时中断 1 = 开启超时中断
10 = 7个数据位 11 = 8个数据位
0
接收数据错误中断
[6]
设置当接收数据时,如果产生异常,如传输中止,帧错误,校验错误时,是否产生接收状态中断信号:
0 =不产生错误状态中断 1 = 产生错误状态中断
0
回送模式
[5]
设置该位时UART会进入回送模式,该模式仅用于测试
0 =正常模式 1 = 回送模式
0
发送终止信号
[4]
设置该位时,UART会发送一个帧长度的终止信号,发送完毕后,该位自动恢复为0
0 =正常传输 1 = 发送终止信号
0
发送模式
[3:2]
设置采用哪个方式执行数据写入发送缓冲区
00 =无效
01 =中断请求或查询模式
10 = DMA0请求
00
接收模式
[1:0]
设置采用哪个方式执行数据写入接收缓冲区
00 =无效
01 =中断请求或查询模式
10 = DMA0请求
00

通常UART串口采用PCLK作为输入工作时钟,采用简单的轮询方式进行数据接收和发送,不开启数据接收超时,数据产生错误时不产生错误状态中断,因此:

UCON0 = 0x05;


表2-27 UART FIFO控制寄存器(UFCON0)
寄存器名
地址
是否读写
描述
复位默认值

UFCON0

0x50000008
R/W

串口0 FIFO控制寄存器

0x00


UFCON0

描述
初始值
发送数据
触发级别
[7:6]
设置FIFO发送模式的触发级别:
00 = FIFO为空触发  01 = 16字节触发
10 = 32字节触发    11 = 48字节触发
00
接收数据
触发级别
[5:4]
设置FIFO接收模式的触发级别:
00 = FIFO为空触发  01 = 16字节触发
10 = 32字节触发    11 = 48字节触发
00
保留
[3]

0
发送FIFO重置
[2]
在重置FIFO后自动清除发送缓冲区
0 =正常模式      1 = 自动清除
0
接收FIFO重置
[1]
在重置FIFO后自动清除接收缓冲区
0 =正常模式      1 = 自动清除
0
启用FIFO
[0]
0 =不启用FIFO    1 = 启用FIFO
0

表2-28 UART MODEM控制寄存器(UMCON0)
寄存器名
地址
是否读写
描述
复位默认值

UMCON0

0x5000000C
R/W

串口0MODEM控制寄存器

0x00


UMCON0

描述
初始值
保留
[7:5]
必须全部置0
000
AFC自动流控
[4]
0 =不开启流控    1 = 开启流控
0
保留
[3:1]
必须全部置0
000
请求发送
[0]
如果启用AFC,该位无效,S3C2440会自动控制nRTS,如果不启用AFC,nRTS必须由软件控制
0 =高电平激活nRTS     1 = 低电平激活nRTS
0


表2-29 UART发送/接收状态寄存器(UTRSTAT0)
寄存器名
地址
是否读写
描述
复位默认值

UTRSTAT0

0x50000010
R/W

串口0发送/接收状态寄存器

0x06


UTRSTAT0

描述
初始值
发送器为空
[2]
当发送缓存寄存器中没有数据要发送且发送移位寄存器为空时,自动置1
0 =非空
1 =发送器为空(发送缓存和移位寄存器)
1
发送缓存寄存器为空
[1]
当发送缓存寄存器为空时,自动置1
0 =发送缓存寄存器非空
1 =发送缓存寄存器为空
1
接收缓存寄存器为空
[0]
当接收缓存寄存器有数据到达时,自动置1
0 =接收缓存寄存器为空
1 =缓存寄存器接收数据
0


表2-30 UART发送缓存寄存器(UTXH0)
寄存器名
地址
是否读写
描述
复位默认值

UTXH0

0x50000020(L)
0x50000023(B)
W

串口0发送缓存寄存器

-


表2-31 UART接收缓存寄存器(URXH0)
寄存器名
地址
是否读写
描述
复位默认值

URXH0

0x50000024(L)
0x50000027(B)
R

串口0接收缓存寄存器

-

表2-32 UART波特率除数寄存器(UBRDIV0)
寄存器名
地址
是否读写
描述
复位默认值
UBRDIV0
0x50000028
R/W
串口0波特率除数寄存器
-


UBRDIV0

描述
初始值
波特率除数
[15:0]
设置波特率除数(大于0)使用外部输入时钟时可以置0
-
继承事业,薪火相传
返回列表