OK6410 uart 簡單測試程式

2021-06-09 19:31:18 字數 2796 閱讀 1520

uart初始化。

1  我們可以通過原理圖可知道  串列埠的rxd,txd 分別連線在ok6410 gpa0,gpa1 口上的。。所以首先設定gpio 的輸入輸出狀態:0010=uart rxd[0]      0010=uart txd[0]   

同時設定相應的上下拉電阻關係。

2  uart 初始化:

2.1、配置uart 0 通道行控制暫存器。ulcon0格式如下圖所示

rulcon0=rulcon0&(0xffffffff)|(0<<6)|(0<<3)|(0<<2)|(3<<0);   //普通操作模式   無校驗  1位停止位   8位資料位

2.2 配置 ucon0暫存器。

2.3、配置ufcon0暫存器 

2.4、配置 rumcon0 暫存器

2.5、設定波特率   ubrdiv0,udivslot0  暫存器  

因為上面  配置ucon0暫存器的時候選擇 該模式 所以採用以下公式

div_val = (pclk / (b/s × 16 ) ) –1

pclk=66mhz  =66000000hz

div_val=66000000/(115200× 16)) - 1

=35.8-1

=34.8

ubrdivn = 20 (div_val 的整數部分)

(udivslotn 中 1 的數量)/16 = 0.8

這時, (udivslotn 中 1 的數量) = 12

因此, udivslotn 為 16』b1101_1101_1101_1101 或者 16』b0111_0111_0111_0101 等。 

num of 1』s udivslotn num of 1』s udivslotn

0 0x0000(0000_0000_0000_0000b)           8    0x5555(0101_0101_0101_0101b)

1 0x0080(0000_0000_0000_1000b)           9    0xd555(1101_0101_0101_0101b)

2 0x0808(0000_1000_0000_1000b)          10   0xd5d5(1101_0101_1101_0101b)

3 0x0888(0000_1000_1000_1000b)          11   0xddd5(1101_1101_1101_0101b)

4 0x2222(0010_0010_0010_0010b)          12   0xdddd(1101_1101_1101_1101b)

5 0x4924(0100_1001_0010_0100b)          13   0xdfdd(1101_1111_1101_1101b)

6 0x4a52(0100_1010_0101_0010b)          14   0xdfdf(1101_1111_1101_1111b)

7 0x54aa(0101_0100_1010_1010b)          15   0xffdf(1111_1111_1101_1111b)

根據上述分析:

rubrdiv0=34;

rudivslot0=0xdddd;

3   uart 傳送 

主函式呼叫  uart_printf()函式實現列印功能

uart 傳送的時候是通過判斷fifo緩衝器(utrstat0  的第二位 )是否為空,如果為空則傳送。  (這個是在 ufcon0 暫存器中第六位 設定的) 

最終工程檔案:

6410之uart的配置

主程式start.s define config periport base 0x70000000 define config periport size 0x13 define wtcon 0x7e004000 global start start 告訴cpu 外設的位址 ldr r0,confi...

關於ok6410 LED and BEEP驅動程式

苦於現在市面上的資料大多是關於arm9,關於6410的卻很少,但是我堅信,6410正以他的優勢席捲嵌入式這個行業,所以,在此寫下一些關於驅動的開端。當初自學微控制器,我跟大多數一樣,從點亮乙個led燈開始,然後流水燈,蜂鳴器,數碼管等開始微控制器程式設計,算是入了門,現在玩arm驅動,我想也通過這幾...

OK6410裸機程式 hello world

上面已經解決 了幾個問題。現在我們的狀態 可以在pc ok6410 之間進行tftp傳輸,確定了一下可用的位址 空間,下面我們來說一下printf除錯 因為沒有jlink,只能用printf除錯,你也許會問,我們自己實現printf麼?答曰 不是,我們只是弄個hello world,何必那麼認真呢?...