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