ARM·串行接口電路
*串口的數(shù)據(jù)傳輸是以串行方式進(jìn)行的。串口在數(shù)據(jù)通信中,一次只傳輸一個(gè)比特的數(shù)據(jù)。
*串行數(shù)據(jù)的傳輸速度用bps或波特率來描述
【UART】
發(fā)送數(shù)據(jù)時(shí),CPU將數(shù)據(jù)寫入U(xiǎn)ART,UART按照一定的格式從一個(gè)管腳TxD上串口發(fā)出;
接受數(shù)據(jù)時(shí),UART檢測另一個(gè)管腳RxD上的信號(hào),將串行數(shù)據(jù)放在緩沖區(qū)中,CPU即可讀。
(UART之間是以全雙工方式傳輸數(shù)據(jù))
UART使用標(biāo)準(zhǔn)TTL/CMOS邏輯電平表示數(shù)據(jù)
*0-5v,0-3.3v,0-2.5v或0-1.8v
*高電平表示1,低電平表示0
但是在外圍電平中,為了增強(qiáng)數(shù)據(jù)的抗干擾能力、提高傳輸長度,通常將TTL/CMOS邏輯電平轉(zhuǎn)換為RS-232邏輯電平。例如可使用電平轉(zhuǎn)換芯片:MAX3232
RS-232邏輯電平(反邏輯)
3-12V:表示0
-3~-12V:表示1
傳輸數(shù)據(jù)前的準(zhǔn)備(約定好波特率和傳輸格式)
*有多少個(gè)數(shù)據(jù)位
*是否使用校驗(yàn)位
*是奇校驗(yàn)還是偶校驗(yàn)
*有多少個(gè)停止位
【奇校驗(yàn)/偶校驗(yàn)】
奇校驗(yàn):就是讓原有數(shù)據(jù)數(shù)列中,(包括你要加上的一位)1的個(gè)數(shù)為奇數(shù) ;
1000110(0)你必須添0這樣原來的3個(gè)1已經(jīng)是奇數(shù)了所以添上0還是奇數(shù) ;
偶校驗(yàn):就是讓原有數(shù)據(jù)序列中,(包括你要加上的一位)1的個(gè)數(shù)為偶數(shù) ;
1000110(1)你必須加1了這樣原來的3個(gè)1已經(jīng)是奇數(shù)了所以添上1還是奇數(shù) ;
【停止位】
有效幀之間的空閑位 ;
【異步數(shù)據(jù)傳輸方式】
發(fā)送數(shù)據(jù)時(shí),SOC先講數(shù)據(jù)寫入發(fā)送FIFO中,然后UART會(huì)自動(dòng)將FIFO的數(shù)據(jù)復(fù)制到發(fā)送移位器中,發(fā)送移位器將數(shù)據(jù)一位一位的發(fā)送到TxDn數(shù)據(jù)線上
接受數(shù)據(jù)時(shí),接收移位器將RxDn數(shù)據(jù)線上的數(shù)據(jù)一位一位的接收進(jìn)來,然后復(fù)制到接受FIFO中,SOC即可從中讀取數(shù)據(jù)
【硬件流控制】
*如果打開串口硬件流程控制后,串口A只有在nCTS被(串口B的nRTS)激活后才能把數(shù)據(jù)發(fā)送出去 ;
*當(dāng)串口A可以接受數(shù)據(jù)時(shí),激活nRTS,準(zhǔn)備好接受數(shù)據(jù)
【UBRDIVn】
*在UART模塊中有三個(gè)UART波特率除數(shù)因子寄存器UBRDIV0,UBRDIV1,UBRDIV2,存儲(chǔ)在波特率除數(shù)寄存器UBRDIVn中的值用于決定波特率
UBRDIVn = (int)(UART Clock / (buad rate*16))- 1
【ULCON】
【UCONn】(選擇UART時(shí)鐘源、設(shè)置UART中斷方式)
【UFCONn】(該寄存器用于設(shè)置是否使用FIFO,設(shè)置各個(gè)FIFO的觸發(fā)深度)
【UTRSTATn寄存器】
(用來表明數(shù)據(jù)是否已經(jīng)被發(fā)送完畢,是否已經(jīng)接收數(shù)據(jù))
【UTXHn/URXHn】
UTXHn寄存器:SOC將數(shù)據(jù)寫入這個(gè)寄存器,UART會(huì)將它保存到發(fā)送位移寄存器中,并自動(dòng)發(fā)送出去
URXHn寄存器:當(dāng)UART收到數(shù)據(jù)時(shí),SOC讀取這個(gè)寄存器,即可獲得數(shù)據(jù)
評(píng)論