首先根据原理图查看串口连接,如下:
根据BUF_XuTXD2/BUF_XuRXD2查看连接主芯片的位置,如下:
查找数据手册将GPA1_0/GPA1_1两个引脚配置为uart功能,如下图所示:
然后通过数据手册中uart章所描述公式,
根据公式描述,其中
SCLK为100M
UBRp2 = 100M/115200/16 -1 = 53
UFRACVAL2 = 0.25 * 16 = 4
配置以下寄存器值,进行串口的初始化。
void InitUart()
{
//set gpio1_0 is uart rx, gpio1_1 tx
GPA1CON = GPA1CON &~ (0xFF) | (0x22);
// normal mode | no parity | one stop bit | 8bits
ULCON2 = ULCON2 | (0 << 6) | (0 << 3) | (0 << 2)| 0x3;
// [3:2] transmit mode is poll(01) [1:0] receive mode is poll(01)
UCON2 = UCON2 &~ (0xF) | ( 0x5 );
/*
100M / 115200 / 16 - 1 = 53.25
set UBRp2 53
set UFRACVAL2 0.25 * 16
*/
UBRp2 = 53;
UFRACVAL2 = 4;
}
接收与发送需根据寄存器进行判断
判断接收与发送的代码如下:
char RecvFromUart()
{
while( !(UTRSTAT2 & 0x1) )
{
;
}
return URXH2;
}
void SendToUart(char c)
{
while( !(UTRSTAT2 & (0x1 << 1)) )
{
;
}
UTXH2 = c;
}