S3C2440 UART串口驱动
时间:11-20
来源:互联网
点击:
其错误容忍率大于1.86%,因此在12MHz频率下,波特率不能设置为115200,现在将波特率设置为56700bps,采用8N1数据帧格式通信,那么:
图2-61 MINI2440开发板串口硬件图
UART的接口
图2-61为MINI2440开发板引出UART串口接线图,它采用DB9接口公头(有接线柱的端口,只有接线孔的为母头),其有9根信号线,UART通信过程中用到了信号线2 RSTXD0(数据发送管脚)它和串口线母头TXDx信号线相接(x代表0号,1号,2号串口),信号3 RSRXD0(数据接收管脚)和串口线母头RXDx相接(x代表0号,1号,2号串口),信号线5(接地管脚),信号线7 RSCTS0(数据发送流控制管脚)和串口线母头nCTSx相接,信号线8 RSRTS0(数据接收流控制管脚)和串口线母头nRTSx相接。如果UART中没有开启AFC流控的话,只要用到信号线2,信号线3和信号线5。
图2-62 MINI2440串口管脚接线
通过MINI2440硬件CPU管脚图可以看出,RSTXD0和RSRXD0连接到CPU的GPH2和GPH3管脚上的,而GPH2和GPH3是CPU复用管脚,因此我们要对GPH2和GPH3对应寄存器进行设置,其对应寄存器为GPHCON。
表2-23 GPIO端口H设置寄存器(GPHCON)
GPHCON[7:6]和GPHCON[5:4]为RSTXD0和RSRXD0管脚设置位,将其功能设置为了UART专用通信管脚,因此应该设置其为0b10,分别用于UART数据的接收和发送。
GPHUP上拉电阻设置寄存器:上拉电阻用来稳定电平信号,保障传输数据的正确,GPHUP里设置其内部上拉。
通过设置ULCON0来设置UART0通信方式,ULCON0[6]选择通信方式为一般通信模式或红外通信模式,ULCON0[5:3]设置串口0校验方式,ULCON0[2]设置串口0停止位数,ULCON0[1:0]设置串口0的数据位数。
我们选择一般通信模式,无校验位,1个停止位,8个数据位的数据通信方式。因此:
UBRdivn = (int)(12M / (57600 * 16)) - 1 = 12
tUPCLK = 13 * 16 * 10 / 12M = 0.000173
tUEXACT = 10 / 57600 = 0.0001736
UART Error = | 0. 000173 - 0. 0001736 | / 0. 0001736 = 0.345%
图2-61 MINI2440开发板串口硬件图
UART的接口
图2-61为MINI2440开发板引出UART串口接线图,它采用DB9接口公头(有接线柱的端口,只有接线孔的为母头),其有9根信号线,UART通信过程中用到了信号线2 RSTXD0(数据发送管脚)它和串口线母头TXDx信号线相接(x代表0号,1号,2号串口),信号3 RSRXD0(数据接收管脚)和串口线母头RXDx相接(x代表0号,1号,2号串口),信号线5(接地管脚),信号线7 RSCTS0(数据发送流控制管脚)和串口线母头nCTSx相接,信号线8 RSRTS0(数据接收流控制管脚)和串口线母头nRTSx相接。如果UART中没有开启AFC流控的话,只要用到信号线2,信号线3和信号线5。
图2-62 MINI2440串口管脚接线
通过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 | = 0xa0;
表2-24 GPIO端口H上拉电阻设置寄存器(GPHUP)GPHUP | 位 | 描述 | 初始值 |
GPH[10:0] | [10:0] | 设置对应管脚GPHn的是否启用上拉功能 0 =启用上拉功能 1 =禁用上拉功能 | 0 |
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 |
我们选择一般通信模式,无校验位,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 |
S3C2440UART串口驱 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)