microblaze之uartlite收發控制

2021-08-13 15:47:05 字數 1324 閱讀 5908

xps中提供的

uart ip

只有lite

(精簡版)可用,相容

16550

模式的uart ip

是要付費的。

lite

模式的uart

比較簡單,但是使用時也帶來諸多問題,比如中斷只有一種模式,即收發都會觸發中斷並且無法區分,這個確實比較讓人惱火。還好在大多數應用場合影響不大。

uart

的收發控制有兩種方式,一種是查詢方式(

polled

),另一種是中斷方式(

interrupt

)。查詢方式比較簡單,不斷查詢狀態暫存器即可。比較常用的是中斷方式,

ok,來看一段**吧:

#include "xparameters.h"

#include "xgpio.h"

#include "xutil.h"

#include "xintc.h"

#include "xuartlite.h"

#include "xuartlite_l.h" //

首先定義中斷函式

void uart_rev_handler(void)}

int main()

可以看出,在

uart

中斷函式中我們只做了一件事情,就是看接收

fifo

中是否有數,如果有數的話就讀出來。而不對傳送產生的中斷做出響應。

需要注意的是,要慎用

xps給出的

api驅動函式,因為有些函式在呼叫的時候當條件不滿足時會停下來等待,使得整個程式被掛起。

讓我比較困惑的乙個問題是:

xps驅動給出的

api驅動中有兩個函式分別是

void xuartlite_setrecvhandler(xuartlite * instanceptr,  xuartlite_handler  funcptr,  void * callbackref)

和void xuartlite_setsendhandler(xuartlite * instanceptr,  xuartlite_handler  funcptr,  void *  callbackref)

,看介紹是說設定中斷函式當中斷發生的時候被呼叫。但是在用這個兩個函式的時候卻無法正常呼叫

uart

中斷函式,而且看這兩個函式就很奇怪,因為我在系統中用了中斷管理模組,所有的中斷必須連線到中斷管理模組上,但是這兩個函式明顯沒有這個介面,那就不是這麼用的!或許是當系統中只有

uart

中斷時直接接到

processor

上的。maybe, who konws?

MicroBlaze程式寫入Flash

1.在 settings bitstream 中選中 bin file 2.在約束檔案中新增 set property bitstream.general.compress true current design set property bitstream.config.configrate 33...

Uart之資料溢位

在專案現場實施專案的過程之中,出現了乙個問題。stm32的控制器,莫名其妙會宕機,不定時會出現這個問題。出現之後系統指示燈不在閃爍,網路宕機,伺服器再也ping不同,下位機的控制器。經過debug發現了抓到了這個宕機的點。我發現並不是硬體錯誤,沒有呼叫hart fault這個中斷服務函式。但是主線程...

6410之uart的配置

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