您好,登錄后才能下訂單哦!
本篇內容介紹了“arm9 uart怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
首先講一下常見的串口出現的地方: 電腦 與開發板. 在pc上串口是RS232電平, 該電平中 表示高的為: -5v~-15v; 表示低的為: +5v~+15v , 注意這里電平反相了一次. 而單片機上出來的一般都是5v以下的電壓, 所以需要轉換一下才能連接. 有幾種串口上常用的芯片, 這里簡要說明一下: MAX232/MAX3232: RS232-TTL電平轉換, 可以將單片機和pc的電平互相轉換
PL2303: usb轉串口芯片, 現在帶串口的pc越來越少. 質量好一點的usb轉串口線就是這個芯片, 比如力特, 還有openjtag上都用了這個芯片
CH340: usb轉串口(TTL), 南京沁恒公司的芯片, 多用于低端的轉接線/板
HL340:usb轉串口(RS232電平). HL340 = CH340 + MAX232
串口接線示意圖:
數據格式:
每次都發都以 幀 的格式發送, 幀 的格式事先確定好, 比如: 多少個數據位, 是否有校驗位(奇/偶), 幾個停止位, 以及波特率等
以下為TTL電平, 7個數據位, 偶校驗, 2個停止位的格式輸出 'A'.
ULCON0 = 0x3; //8 N 1 普通模式
UCON0 = 0x5; //查詢方式, 時鐘源PCLK
UFCON0 = 0; //不使用FIFO
UMCON0 = 0; //不使用流控
波特率:
#define PCLK 50000000 // init.c中的clock_init函數設置PCLK為50MHz #define UART_CLK PCLK // UART0的時鐘源設為PCLK #define UART_BAUD_RATE 115200 // 波特率 #define UART_BRD ((UART_CLK / (UART_BAUD_RATE * 16)) - 1) UBRDIV0 = UART_BRD;
還有串口的狀態寄存器:
rx/tx狀態寄存器
//接收字符 #define TXD0READY (1<<2) unsigned char getc(void) { /* 等待,直到接收緩沖區中的有數據 */ while (!(UTRSTAT0 & RXD0READY)); /* 直接讀取URXH0寄存器,即可獲得接收到的數據 */ return URXH0; }
//發送一個字符 #define RXD0READY (1) void putc(unsigned char c) { /* 等待,直到發送緩沖區中的數據已經全部發送出去 */ while (!(UTRSTAT0 & TXD0READY)); /* 向UTXH0寄存器中寫入數據,UART即自動將它發送出去 */ UTXH0 = c; }
還有 錯誤/fifo/modern狀態寄存器等
“arm9 uart怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。