三星soc平臺Exynos4412平臺裸機開發介紹(六)之基於ARM裸機實現UART驅動

基於ARM裸機的UART驅動

UART:

  • 軟件協議:通用異步收發器,使用的是rs232協議。

  • 硬件接口:db9接口,9根插針,實際使用 2,3,5
    2 ----> 接收
    3 ----> 發送
    5 ----> 接地

rs232協議

串行、全雙工、異步的通信協議。

  • 串行:所有的數據排隊進行發送。
  • 全雙工:同一時刻,可以接收,也可以發送。
  • 異步:沒有同時時鐘源。

電平規則

邏輯1: -3v — -15v
邏輯0: 3v — 15v

rs232協議的一些規則

波特率:115200
發送速率:115200bit/s
發送格式 8 N 1:8bit發送, N 無奇偶校驗 1位停止位

寄存器配置

int uart0_init(void)
{
	GPA0CON	&= ~0xff;
	GPA0CON	|= 0x22;			/* 設置引腳爲uart功能 */

	ULCONn	&= ~0x3f;
	ULCONn	|= 0x3;				/* 設置8N1模式 */

	UCONn	&= ~0xf;
	UCONn	|= 0x5;				/* 設置收發倫循模式 */

	UBRDIVn	= 53;
	UFRACVALn = 4;
	return 0;
}
int put_char(char ch)
{
	while (!(UTRSTATn & 0x2));
	UTXHn = ch;
	if (ch == '\n')
		put_char('\r');
	return 0;
}
char get_char(void)
{
	char ch;
	while (!(UTRSTATn & 0x1));
	ch = URXHn;
	if (ch == '\r')
		ch = '\n';
	put_char(ch);
	return ch;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章