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