LPC111X、LPC13XX 軟件化的全雙工UART
該文檔描述了運行在LPC111X/LPC13XX 處理器上的軟件如何實現(xiàn)標準的通用異步收發(fā)(UART)
1.簡介
LPC111X、LPC13XX 系列微控制器提供了豐富的通訊接口。每一個微控制器都包含一 個片上UART(通用異步收發(fā))。而實際上,很多實際應(yīng)用需要更多的UART。在這種情況 下,可以考慮增加一個外部獨立的UART 芯片,軟件化的UART 不僅可以減少物料成本, 而且又不占用額外的PCB 空間。這樣,設(shè)計人員就可以滿足小型化的要求,達到降低成本 的目的。該文檔描述了全雙工UART 軟件化的實現(xiàn)方法。
LPC111X/LPC13XX 的軟件UART 是從LPC2000 移值而來。軟件UART 的實現(xiàn)原理的 細節(jié),請參考AN10689-LPC2000 software UART。該文檔使用Artists’ LPCXpresso 1114 Rev A ,LPCXpresso Base Board Rev A evaluation kits 和Code Red LPCXpresso 3.3.4。值得注意 的是,請確保開發(fā)板(the Base Board)上的跳線處于正確的位置,特別是熱敏元件不是連 接到P1.5,電位計不是連接到P0.11。
須知,示例軟件包并不是最優(yōu)的。當增加軟件UART 功能時,可能需要1KB 的額外空間, 在優(yōu)化代碼密度時請注意。在某一特定應(yīng)用中,如果全雙工操作不是必需的,可以裁減沒用 的UART 功能達到減小代碼體積的目的。
2.實現(xiàn)
該方案依賴一個通用32 位定時器(timer),定時器可以在觸發(fā)一個指定的pin 的同時, 監(jiān)聽另一個pin 的狀態(tài)。當啟動定時器的捕獲和觸發(fā)功能時,接收程序還要使用定時器的一 個匹配寄存器。每一個定時器都有4 個匹配寄存器,表1 指明了它們的配置。在本文檔中, 使用的是Timer32_0。示例代碼中的轉(zhuǎn)換格式見表2。
表1 匹配寄存器的使用 | |
Timer MRn | Function |
MR0 | RX |
MR1 | RX |
MR2 | Available to user |
MR3 | TX |
該軟件方案采用深度可變的先入先出的形式(variable depth FIFOs)作為發(fā)送和接收的緩 沖。請注意,UART 的波特率以及發(fā)送器、接收器的FIFO 深度,是在編譯過程中配置的,并且 在運行時無法改變。
表2 | |
Parameter | Value |
Start Bits | 1 |
Data Bits | 8 |
Stop Bits | 1 |
Parity | None |
演示源代碼利用了LPC111X 和LPC13XX 的引腳兼容性的優(yōu)點,在目標平臺之間只需 要做最少量的修改。表3 列出了源代碼使用的引腳功能。本文檔中使用的兩個目標評估模塊 配備了硬件電路以轉(zhuǎn)換外圍的UART 信號到RS232 或者USB。軟件UART 引腳必須與這些 信號相連接才能與PC 通信。因為LPC111X/LPC13XX 的引腳默認使用上拉電阻,P1.6 和 P1.7 必須設(shè)置為閑置模式(inactive mode)避免與軟件UART 信號發(fā)生沖突。
3.軟件環(huán)境
本文檔中包含了幾個版本的示例軟件工程。這些工程在表4 所列明的環(huán)境中進行測試。示例 工程的默認大小(沒有優(yōu)化)列在表5 中。
4.硬件配置——IAR LPC1114 SK
圖1 所示為一個連線的例子。請注意,跳線連接P0.11 和P1.7,使用20pin 標準連接器 進行調(diào)試。這樣的話不會影響JLink 調(diào)試,但是仍然需要一個外部的調(diào)試器,例如Keil ULINK2,使用10pin SWD 頭。
5.硬件配置——LPC1114 LPCXpresso
圖2 所示為軟件UART 信號與USB 轉(zhuǎn)換芯片的連接方法。
6.操作
LPC13XX 系列演示代碼在以下幾種條件下進行測試:1,沒有使用系統(tǒng)的PLL,連接 外部12MHz 晶振;2,使用系統(tǒng)的PLL 分別產(chǎn)生24MHz,60MHz,72MHz 系統(tǒng)時鐘。LPC111X 系列在以下環(huán)境中測試:1,外部12MHz 晶振;2,使用PLL 分別產(chǎn)生24MHz 和48MHz 系統(tǒng)時鐘。
請注意,UART 的波特率依賴于系統(tǒng)時鐘頻率。因此,系統(tǒng)使用一個不同于示例代碼中 的48MHz/72MHz 的時鐘頻率時,必須在工程源代碼中更新BIT_LENGTH 的定義。例如, 在12MHz 的系統(tǒng)中傳送串行數(shù)據(jù)的速率為9600bit/s , 則BIT_LENGTH 為: 12000000/9600=1250 。如果系統(tǒng)時鐘變?yōu)?8MHz , BIT_LENGTH 應(yīng)該改為: 48000000/9600=5000。
演示程序先發(fā)出一個用戶提示信息,然后進入一個永恒循環(huán),把接收到的字符回傳給用戶, 如圖3 所示。
7.結(jié)果
信號線的示波圖(The oscilloscope screenshots)在調(diào)試過程中很有幫助。這些類似于LPC2000 軟件UART,細節(jié)請參考AN10689。表6 和表7 所示為,演示程序在不同的系統(tǒng)時鐘頻率 下,波特率最大的速率。
表6 LPC111X測試結(jié)果 | ||
System clock(MHz) | Max.transmit(bit/s) | Max.receive(bit/s) |
12 | 9600 | 4800 |
24 | 38400 | 9600 |
48 | 57600 | 19200 |
表7 LPC13XX測試結(jié)果 | ||
System Clock(MHz) | Max.transmit(bit/s) | Max.reveive(bit/s) |
12 | 9600 | 4800 |
24 | 38400 | 9600 |
60 | 115200 | 19200 |
72 | 115200 | 38400 |
8.結(jié)論
盡管部分LPC11XX/LPC13XX 只配置了單一的UART,通過這個例程,設(shè)計人員使用 額外的軟件UART 通道,可以增強產(chǎn)品的性能。采用這種軟件化方案,不必在PCB 上增加 額外的IC,這樣既節(jié)省了空間,又降低了生產(chǎn)的成本。
文檔下載:
聲明:本站部分內(nèi)容根據(jù)互聯(lián)網(wǎng)資料整理而成,若侵犯您的權(quán)益,請聯(lián)系我們,我們會盡快處理。