tiny4412 基础(六)串口

串口对嵌入式必备的调试工具。

串口的操作不外乎以下几点:

1.设置对应gpio复用为uart

2.设置时钟,设置波特率,数据位等基本参数

3.使能

对于tiny4412的串口特性,这里不赘述。对于ch0,tx/rx各由256bytes的FIFO。

时钟

对于clock:
tiny4412 基础(六)串口

 

由上可知uart的时钟可选XusbXTI,前面说过是24M板载晶振,也可以SCLK_MPLL,由CLK_SRC_PERIL0来决定的。

Base Address: 0x1003_0000
 Address = Base Address + 0xC250, Reset Value = 0x0001_1111
低4位表示uart0, 默认值是0x01,

UART0_SEL [3:0] RW Controls MUXUART0
0000 = XXTI
0001 = XusbXTI
0010 = SCLK_HDMI24M
0011 = SCLK_USBPHY0
0101 = SCLK_HDMIPHY
0110 = SCLKMPLL_USER_T
0111 = SCLKEPLL
1000 = SCLKVPLL
Others = Reserved
MUXUART0 is the source clock of UART0.
0x1

即默认24M。
 

在这里可以先使用默认值, 然后把串口设置好后,反过来去读BL1里面设置情况。

上面分频器DIV由CLK_DIV_PERIL0寄存器控制

Base Address: 0x1003_0000
 Address = Base Address + 0xC550, Reset Value = 0x0000_0000

UART0_RATIO [3:0] RW DIVUART0 Clock Divider Ratio
SCLK_UART0 = MOUTUART0/(UART0_RATIO + 1)
0x0


因此,默认情况下SCLK UART时钟是24M

GPIO

对于tiny4412-1506板本来说,串口原理图:

tiny4412 基础(六)串口

最后连到核心板

UART_0_RXD Input Receives data for UART0 XuRXD_0 muxed
UART_0_TXD Output Transmits data for UART0 XuTXD_0 muxed

XuRXD_0 对应GPA0[0]/UART_0_RXD 
XuTXD_0 对应GPA0[1]/UART_0_TXD


波特率

由上面分析,默认的SCLK UART = 24M

根据手册:

DIV_VAL = (SCLK_UART/(bps * 16)) - 1
 

DIV_VAL  = (24 M)/(115200*16) - 1 = 12.02

UBRDIVn = 12(integer part of DIV_VAL)
UFRACVALn/16 = 0.2
Therefore, UFRACVALn = 3

即UBRDIVn = 12, UFRACVALn  = 3