GNU ARM匯編--(七)s3c2440的串口控制
UART MODEM CONTROL REGISTER
這個(gè)和MODEM控制相關(guān),設(shè)置為默認(rèn)值就行.
UART TX/RX STATUS REGISTER
這個(gè)寄存器是只讀的,負(fù)責(zé)反映發(fā)送接收的狀態(tài)
UART ERROR STATUS REGISTER
這個(gè)寄存器也是只讀的,負(fù)責(zé)反映錯(cuò)誤狀態(tài)
UART FIFO STATUS REGISTER
這個(gè)寄存器也是只讀的,負(fù)責(zé)反映FIFO的狀態(tài)
UART MODEM STATUS REGISTER
這個(gè)寄存器是MODEM狀態(tài)的,不用管它
UART TRANSMIT BUFFER REGISTER (HOLDING REGISTER & FIFO REGISTER)
發(fā)送緩沖寄存器:FIFO模式下叫FIFO寄存器,非FIFO模式下叫Holding寄存器
需要注意的就是大小端
UART RECEIVE BUFFER REGISTER (HOLDING REGISTER & FIFO REGISTER)
接收緩沖寄存器:FIFO模式下叫FIFO寄存器,非FIFO模式下叫Holding寄存器
UART BAUD RATE DIVISOR REGISTER
波特率除數(shù)寄存器
UBRDIVn = (int)( UART clock / ( buad rate x 16) ) –1
( UART clock: PCLK, FCLK/n or UEXTCLK )
看完datasheet后,我們看一下TQ2440的原理圖:
由原理圖可以看出,TQ2440使用的UART0,我們用MAX232芯片做電平轉(zhuǎn)換.
有了datasheet和原理圖,下面就開始寫匯編代碼了:
時(shí)鐘初始化和uart初始化用匯編寫的:
- @.externuart_test
- .equGPBCON,0x56000010
- .equGPBDAT,0x56000014
- .equGPB5_out,(1<<(5*2))
- .equGPB6_out,(1<<(6*2))
- .equGPB7_out,(1<<(7*2))
- .equGPB8_out,(1<<(8*2))
- .equGPHCON,0x56000070
- .equGPHDAT,0x56000074
- .equGPBVALUE,(GPB5_out|GPB6_out|GPB7_out|GPB8_out)
- .equLOCKTIME,0x4c000000
- .equMPLLCON,0x4c000004
- .equUPLLCON,0x4c000008
- .equM_MDIV,92
- .equM_PDIV,1
- .equM_SDIV,1
- .equU_MDIV,56
- .equU_PDIV,2
- .equU_SDIV,2
- .equCLKDIVN,0x4c000014
- .equDIVN_UPLL,0
- .equHDIVN,1
- .equPDIVN,1@FCLK:HCLK:PCLK=1:2:4
- .equULCON0,0x50000000
- .equIR_MODE,0x0@[6]正常模式
- .equParity_Mode,0x0@[5:3]無(wú)校驗(yàn)位
- .equNum_of_stop_bit,0x0@[2]一個(gè)停止位
- .equWord_length,0b11@[1:0]8個(gè)數(shù)據(jù)位
- .equUCON0,0x50000004
- .equFCLK_Div,0@[15:12]時(shí)鐘源選擇用PCLK,所以這里用默認(rèn)值
- .equClk_select,0b00@[11:10]時(shí)鐘源選擇使用PCLK
- .equTx_Int_Type,1@[9]中斷請(qǐng)求類型為L(zhǎng)evel
- .equRx_Int_Type,0@1@[8]中斷請(qǐng)求類型為L(zhǎng)evel
- .equRx_Timeout,0@[7]
- .equRx_Error_Stat_Int,1@[6]
- .equLoopback_Mode,0@[5]正常模式
- .equBreak_Sig,0@[4]不發(fā)送終止信號(hào)
- .equTx_Mode,0b01@[3:2]中斷請(qǐng)求或輪循模式
- .equRx_Mode,0b01@[1:0]中斷請(qǐng)求或輪循模式
- .equUFCON0,0x50000008
- .equTx_FIFO_Trig_Level,0b00@[7:6]
- .equRx_FIFO_Trig_Level,0b00@[5:4]
- .equTx_FIFO_Reset,0b0@[2]
- .equRx_FIFO_Reset,0b0@[1]
- .equFIFO_Enable,0b0@[0]非FIFO模式
- .equUMCON0,0x5000000C@這個(gè)寄存器可以不管的
- .equUTRSTAT0,0x50000010
- .equUERSTAT0,0x50000014
- .equUFSTAT0,0x50000018
- .equUMSTAT0,0x5000001C
- .equUTXH0,0x50000020@(L小端)
- .equURXH0,0x50000024@(L小端)
- .equUBRDIV0,0x50000028
- .equUBRDIV,0x35@PCLK=400M/4=100MUBRDIV=(int)(100M/115200/16)-1=53=0x35
-
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論