HT46ru232單片機簡介
·
TIDLE是數(shù)據(jù)發(fā)送完成標志位。若 TIDLE=0,表明數(shù)據(jù)傳輸中。當TXIF=1且數(shù)據(jù)發(fā)送完畢或暫停字被發(fā)送時,TIDLE置位。TIDLE=1,TX引腳空閑。讀取 USR寄存器再寫TXR寄存器將清除TIDLE位。當數(shù)據(jù)字節(jié)或暫停字符排列好并準備發(fā)送時,TIDLE不發(fā)生變化。
·
RXIF 是接收寄存器狀態(tài)標志。當 RXIF=0,表明 RXR 寄存器為空;當 RXIF=1,表明 RXR 寄存器接收到新數(shù)據(jù)。當數(shù)據(jù)從移位寄存器加載到RXR寄存器,如果UCR2寄存器中的RIE=1,則會觸發(fā)中斷。當接收數(shù)據(jù)時檢測到一個或多個錯誤時,相應的標志位 NF、FERR或PERR會在同一周期內置位。讀取USR寄存器再讀RXR寄存器,如果RXR寄存器中沒有新的數(shù)據(jù),那么將清除RXIF標志。 ·
RIDLE是接收狀態(tài)標志。若 RIDLE=0,表明正在接收數(shù)據(jù);若RIDLE=1,表明接收器空閑。在接收到停止位和下一個數(shù)據(jù)的起始位之間,RIDLE被置位,表明 UART空閑。
·
OERR 是過速錯誤標志,表示接收緩沖器溢出。若 OERR=0,表明沒有數(shù)據(jù)溢出;若 OERR=1,表明發(fā)生了過速錯誤,它將禁止下一組數(shù)據(jù)的接收。先讀取 USR寄存器再讀RXR寄存器將清除此標志位。本文引用地址:http://butianyuan.cn/article/201611/321149.htm
·FERR
FERR 是幀錯誤標志位。若 FERR=0,表明沒有幀錯誤發(fā)生;若 FERR=1,表明當前的數(shù)據(jù)發(fā)生了幀錯誤。先讀取USR寄存器再讀 RXR寄存器將清除此位。
·
NF是噪聲干擾標志。若 NF=0,表明沒有受到噪聲干擾;若 NF=1,表明 UART接收數(shù)據(jù)時受到噪聲干擾。它與 RXIF 在同一個周期內置位,但不會與過速標志位同時置位。先讀取 USR 寄存器再讀 RXR寄存器將清除此標志位。
·
PERR 是奇偶校驗出錯標志。若 PERR=0,表明奇偶校驗正確;若 PERR=1,表明接收到的數(shù)據(jù)奇偶校驗出錯。只有使能了奇偶校驗此位才有效。先讀取 USR寄存器再讀RXR寄存器將清除此位。
UCR1寄存器bit0-7定義為:
·
此位只有在傳輸數(shù)據(jù)為 9 位的格式中有效,TX8 用來存儲發(fā)送數(shù)據(jù)的第 9 位。BNO 是用來控制傳輸位數(shù)是 8位還是 9位。
·
此位只有在傳輸數(shù)據(jù)為 9 位的格式中有效,RX8 用來存儲接收數(shù)據(jù)的第 9 位。BNO 是用來控制傳輸位數(shù)是 8位還是 9位。
·
TXBRK是暫停字發(fā)送控制位。若 TXBRK=0,表明沒有暫停字要發(fā)送,TX引腳正常操作;若 TXBRK=1,表明將會發(fā)送暫停字,發(fā)送器將發(fā)送邏輯 0。若 TXBRK 為高,緩沖器中數(shù)據(jù)發(fā)送完畢后,發(fā)送器將至少保持13位寬的低電平直至TXBRK復位。
·
此位用來設置停止位的長度。若 STOPS=1,表明有兩位停止位;若STOPS=0,表明只有一位停止位。
·
奇偶校驗選擇位。若PRT=1,表明選擇奇校驗;若PRT=0,表明選擇偶校驗。
·
此位為奇偶校驗使能位。若PREN=1,表明使能奇偶校驗;若 PREN=0,表明除能奇偶校驗。
·
選擇數(shù)據(jù)長度為 8位或 9位格式。若BNO=1,表明傳輸數(shù)據(jù)為 9位;若BNO=0,表明傳輸數(shù)據(jù)為8位。若選擇了9位數(shù)據(jù)傳輸格式,RX8和TX8將分別存儲接收和發(fā)送數(shù)據(jù)的第 9位。
·
此位為 UART 的使能位。若 UARTEN=0,表明 UART 除能,RX 和 TX 可用作普通輸入/輸出口;若UARTEN=1,表明UART使能,TX和RX將分別由TXEN和 RXEN控制。當 UART除能,系統(tǒng)將清除緩沖器,所有緩沖器中的數(shù)據(jù)將被忽略,另外波特率計數(shù)器、錯誤和狀態(tài)標志位被復位,TXEN、RXEN、TXBRK、
RXIF、OERR、FERR,PERR和NF清零;而 TIDLE、TXIF和RIDLE置位,UCR1、UCR2和BRG寄存器中的其它位保持不變。若 UART工作時UARTEN清零,所有發(fā)送和接收將停止,模塊也將復位成上述狀態(tài)。當UART再次使能時,它將在上次配置下重新工作。
UART2寄存器bit0-7定義為:
·
此位為發(fā)送寄存器為空時中斷的使能或除能位。若 TEIE=1,當發(fā)送器為空時 TXIF 將置位,UAR的中斷請求標志置位;若TEIE=0,UART中斷請求標志不受TXIF的影響。
·
此位為發(fā)送器空閑時中斷的使能或除能位。若 TIIE=1,當發(fā)送器空閑時 TIDLE 置位,UART 的中斷請求標志置位;若 TIIE=0,UART中斷請求標志不受 TIDLE的影響。
·
此位為接收器中斷使能或除能位。若RIE=1,當接收器過速或接收數(shù)據(jù)有效時OERR或 RXIF置位UART的中斷請求標志置位;若 RIE=0,UART中斷請求標志不受 OERR或RXIF影響。
·
此位為接收器喚醒功能的使能和除能位。若 WAKE=1 且在暫停模式下,RX 引腳的下降沿將喚醒單片機。若 WAKE=0且在暫停模式下,RX引腳的任何邊沿都不能喚醒單片機。
·
此位為地址檢測使能和除能位。若ADDEN=1,表明地址檢測使能,此時數(shù)據(jù)的第 8位(BON=0)或第 9位(BON=1)為高,接到的是地址而非數(shù)據(jù)。若相應的中斷使能且接收到的值最高位為1,那么中斷請求標志將會被置位,若最高位為 0,那么將不會產生中斷且收到的數(shù)據(jù)也會被忽略。
·
此位為波特率發(fā)生器高低速選擇位,它和 BRG 寄存器一起控制 UART 的波特率。若 BRGH=1,為高速模式;若 BRGH=0,為低速模式。
·
此位為接收使能位。若RXEN=0,接收器將被除能,接收器停止工作。另外緩沖器將被復位,此時RX引腳可作普通輸入/輸出端口使用。若 RXEN=1且UARTEN=1,則接收將被使能,RX引腳將由 UART來控制。在數(shù)據(jù)傳輸時清除RXEN將中止數(shù)據(jù)接收且復位接收器,此時 RX引腳可作為普通輸入輸出端口
使用。
·
此位為發(fā)送使能位。若 TXEN=0,發(fā)送器將被除能,發(fā)送器停止工作。另外緩沖器將被復位,此時TX引腳可作為普通輸入/輸出端口使用。若TXEN=1且UARTEN=1,則發(fā)送將被使能,TX引腳將由UART來控制。在數(shù)據(jù)傳輸時清除 TXEN將中止數(shù)據(jù)發(fā)送且復位發(fā)送器,此時TX引腳可作為普通的輸入輸出
口使用。
波特率發(fā)生器
UART內建一個波特率發(fā)生器,可以設定數(shù)據(jù)傳輸速率。波特率是由一個獨立的內部 8位計數(shù)器產生,由BRG寄存器和UCR2寄存器的第2位BRGH來控制。BRGH是決定波特率發(fā)生器處于高速模式還是低速模式,從而決定計算公式的選用。BRG寄存器的值 N可根據(jù)下表中的公式計算,范圍是 0到255。
為了得到相應的波特率,首先需要設置BRGH來選擇相應的計算公式從而算出BRG 的值。由于BRG的值不連續(xù),所以實際波特率和理論值之間有一個偏差。下面舉例怎樣計算BRG 寄存器中的值N 和誤差。
·
系統(tǒng)選用 8M 晶振且 BRGH=0,若期望的波特率為 9600,計算它的 BRG 寄存器的值 N,實際波特率和誤差。
例程會逐步補上。
其他相關資料請參見盛群公司官方芯片手冊。官方鏈接:http://www.holtek.com.cn/pdf/uc/sim46xu232v100.pdf
評論