##S3C2440串口##

1、RTS/CTS
RTS : Request to send
CTS : Clear to send

应用场合:半双工收发切换,工业控制应用较多

2、时钟频率管理
2.1、基本知识
FCLK:CPU工作频率
HCLK:中断控制器、存储管理器、DMA控制器、LCD控制器、FLASH控制器、USB Host(不用PLL时)、总线控制器、片外设备
PCLK:SPI、II2C、GPIO、ADC、PWM、UART、RTC、WDT、SD卡接口

MPLL = (2 * m * FIN) / (p * 2^s) //MPLL值计算方式
m = M + 8; p = P + 2; s = S;

UPLL = (m * FIN) / (p * 2^s)
m = M + 8; p = P + 2; s = S;

重要:在设置系统时钟的时候不要使PMS任何一个值等于0,不然设置到的串口时钟不对,出现乱码,即可能压根系统的时钟设置就不对

若时钟分配HCLK != PCLK,在进行系统时钟设定的时候要使系统进入异步模式,具体设定CPU核(ARM920T)协处理器CP15的寄存器C1的iA与nF位

iA nF mode
0 0 FastBus
0 1 synchronous
1 0 Reserved
1 1 Asynchronous
2.2、系统时钟设置步骤
2.2.1、设置UPLL与MPLL
2.2.2、设置PCLK,FCLK,HCLK
2.2.3、使能相应的时钟W位

3、OM模式选择

OM1 OM0 mode
0 0 NAND Flash
0 1 16 bit
1 0 32 bit
1 1 test mode
本实验板的OM1接地,OM0接由拨码开关选择NAND Flash启动和Nor Flash启动
OM3 OM2 mode
value mainclk USBclk
0 0 Crystal
0 1 Crystal
1 0 EXTCLK
1 1 EXTCLK
本实验板的OM2和OM3脚都接地了,所以使用的时钟源都是Crystal(外部晶振)
4、UART

4.1、错误种类
Frame error:帧差错
Parity error:奇偶校验错误
Break error:传输中断错误

4.2、波特率计算
UBRDIV = (int)(UART Clock / (buad rate * 16)) - 1;

4.3、配置步骤(不使用FIFO)

4.3.1、配置引脚模式,使能上拉
4.3.2、配置UARTn模块模式
4.3.3、设置波特率(包括系统时的设定)
4.3.4、开启UARTn时钟

5、lds链接文件
代码如下

SECTIONS {
. = 0x00000000;
.init : AT(0){ head.o init.o uart.o}
. = 0x30000000;
.text : AT(4096) { *(.text) }
.rodata ALIGN(4) : AT((LOADADDR(.text)+SIZEOF(.text)+3)&~(0x03)) {(.rodata)}
.data ALIGN(4) : AT((LOADADDR(.rodata)+SIZEOF(.rodata)+3)&~(0x03)) { *(.data) }
__bss_start = .;
.bss ALIGN(4) : { (.bss) (COMMON) }
__bss_end = .;
}

在本UART实验中,lds文件中有如下的代码

AT(LOADADDR(.text) + SIZEOF(.text) + 3) & ~0x03 { *(.rodata) }

此行代码的意思是设置.rodata的地址起点为.text结束点之后的最小四字节倍数地址

&(~0x03)的意思是进行4字节的代码对齐操作,即抹掉地址的低两位,此时地址为4的倍数,也即实现了4字节对齐

+3的意思是万一.text的结束地址不是4的倍数,此时若抹掉地址低两位会造成.rodata地址与.text地址交叠的情况,所以要加3之后再进行低两位抹除

. = 0x30000000;
.text : AT(4096) { *(.text) }
0x30000000是链接地址(也即程序运行地址),AT(4096)是程序存储地址,在程序运行的时候需要将4096的代码存储区拷贝到0x30000000地方再运行程序,这个过程需要在该段程序运行之前准备好

PS:在程序内部不能使用诸如uart_init(void)的方式引用,这样会被认为是函数的声明,在带返回值的时候会出现错误,rx_data = uart_rx(void)是错误的调用方式

JZ2440串口代码链接:使用中断方式,实现中断函数体的调用
http://download.csdn.net/detail/u013904227/9252191

你可能感兴趣的:(##S3C2440串口##)