1、初始化:
a、把使用到的引腳gph2、gph3定義為txd0、rxd0:
gphcon |= 0xa0
gphup |= 0xf0(禁止上拉)
b.ulcon0 ( uart channel 0 line control register ):設為0x03
此值含義為:8個資料位,1個停止位,無校驗,正常操作模式(與之相對的是infra-red mode,此模式表示0、1的方式比較特殊)。
c.ucon0 (uart channel 0 control register ):設為0x5
除了位[3:0],其他位都使用預設值。位[3:0]=0b0101表示:傳送、接收都使用「中斷或查詢方式」——本實驗使用查詢查詢方式。
d.ufcon0 (uart channel 0 fifo control register ):設為0x00
每個uart內部都有乙個16位元組的傳送fifo和接收fifo,但是本實驗不使用fifo,設為預設值0
e.umcon0 (uart channel 0 modem control register ):設為0x00
本實驗不使用流控,設為預設值0
f.ubrdiv0 ( r/w baud rate divisior register 0 ):設為26
本實驗未使用pll, pclk=50mhz,設定波特率為115200,則由公式
ubrdivn = (int)(pclk / (bps x 16) ) –1
可以計算得ubrdiv0 =26,請使用s3c2440資料手冊第314頁的誤差公式驗算一下此波特率是否在可容忍的誤差範圍之內,如果不在,則需要更換另乙個波特率。
2、傳送資料:
a.utrstat0 ( uart channel 0 tx/rx status register ):
位[2]:無資料傳送時,自動設為1。當我們要使用串列埠傳送資料時,先讀此位以判斷是否有資料正在占用傳送口。
位[1]:傳送fifo是否為空,本實驗未用此位
位[0]:接收緩衝區是否有資料,若有,此位設為1。本實驗中,需要不斷查詢此位一判斷是否有資料已經被接收,中斷模式下等待中斷觸發。
b.utxh0 (uart channel 0 transmit buffer register ):把要傳送的資料寫入此暫存器。
3、接收資料:
a.utrstat0:如同上述「2、傳送資料」所列,我們用到位[0]
b.urxh0 (uart channel 0 receive buffer register ):
當查詢到utrstat0 位[0]=1時,讀此暫存器獲得串列埠接收到的資料。
#define
global_clk
1#include
#include
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "mmu.h"
#include "profile.h"
#include "memtest.h"
#define led1_on
~(1<<5)
#define led1_off
(1<<5)
void delay(int times)//延時函式
void led_port_init(void)
void beep_init(void)//蜂鳴器初始化
void beep(void)
void uart0_init(void)
void main(void)}}
以下為中斷方式:
#define global_clk
1#include
#include
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "mmu.h"
#include "profile.h"
#include "memtest.h"
#define led1_on
~(1<<5)
#define led1_off
(1<<5)
void delay(int times)//延時函式
void led_port_init(void)//設定gpb5為輸出埠
void beep_init(void)//蜂鳴器初始化
void beep(void)
void uart0_init(void)
void inte_init()
void __irq uartisp(void)//中斷處理函式
else
//傳送資料處理部分 }
void main(void)//主函式
mini2440系統引導(五)串列埠UART
s3c2440a 的通用非同步收發器 uart 配有 3 個獨立非同步序列 i o sio 埠,每個都可以是基於中斷或基 於 dma 模式的操作。換句話說,uart 可以通過產生中斷或 dma 請求來進行 cpu 和 uart 之間的資料傳輸。uart 通過使用系統時鐘可以支援最高 115.2kbp...
移植dhcp到mini2440中 動態ip
開發板要上網,但是得動態獲取ip,使用busybox中的udhcpc,老是 sending discover.使用移植dhcp客戶端的方法,解決了問題。步驟如下 2.交叉編譯 解壓 3.拷貝生成的dhclient到目標板上,為方便使用,可以放在 usr bin 下 拷貝另外兩個配置檔案到開發板,分別...
微控制器UART中斷應用中TXE和TC的順序
今天回顧之前寫過的一些程式,發現了當時乙個比較有意思的修改記錄,想了會才回憶起當時的具體意圖,記錄下來備忘,也分享給看到的朋友們。案例是以stm32f107晶元為主控的乙個環境汙染物監測裝置,在裡面用到485通訊,因485晶元需要通過控制管腳設定傳送和接受狀態,所以就要求對uart的控制要有足夠的精...