基于AT90S8515的串行通信及其應(yīng)用
位3———OR:超越出錯,當(dāng)UDR寄存器的數(shù)據(jù)沒有在新的數(shù)據(jù)被移入到接收移位寄存器之前被讀走,該位置1,即OR位被緩沖。意味著移入移位寄存器的最后數(shù)據(jù)字節(jié)不能被送到UDR中而丟失。
1.2.3 波特率發(fā)生器
依據(jù)以下等式的分頻器產(chǎn)生波特率: BAUD=f/[16(UBRR+1)]
BAUD表示波特率,f為晶振頻率;UBRR表示UART波特率寄存器的值(0~255)。例如,波特率確定為9600波特時,選用標準的晶振頻率1.8432MHz(誤差為0),則可計算出UBRR的初始化值為11;波特率確定為9600波特時選用晶振頻率為3.6864MHz,UBRR的初始化值為23。
2 AT90S8515與上位PC機的串行通信應(yīng)用
2.1 與上位PC機的硬件連接
AT90S8515與上位PC機通信采用RS485總線,通過RS-485接收/發(fā)送器連接,使用MAXIM公司的MAX3080CPD芯片,為了使電磁干擾及終端末匹配的連接所產(chǎn)生的反射最小,MAX3080適合速率為115Kbps以下的應(yīng)用,而且具有平衡發(fā)送,差分接收,抑制共模干擾和故障保護的特點,適合遠距離傳送。為提高系統(tǒng)可靠性,在MAX3080與CPU之間還可增加光電耦合器6N137,更好地與上位機電氣隔離。硬件連接原理圖如圖1所示。
2.2 與PC機的串行通信軟件設(shè)計
應(yīng)用AT90S8515的串行接口UART與PC機進行串行通信軟件設(shè)計可以采用中斷接受與查詢發(fā)送的方式,通過判斷UART中的UDR發(fā)送數(shù)據(jù)寄存器是否為空決定是否發(fā)送,并激活接收完成中斷。
下面的程序采用查詢方式向上位PC機發(fā)送數(shù)據(jù),采用中斷方式接收數(shù)據(jù),字符數(shù)據(jù)位為8位,接受數(shù)據(jù)塊將包含數(shù)據(jù)幀幀頭及幀尾(各占一個字節(jié)),還有符合本節(jié)點的標識碼(地址),從而提高數(shù)據(jù)接收的安全性及可靠性,并適合多個AVR微控制器與PC機通信。
選用標準的晶振頻率3.864MHz(誤差為0),波特率確定為19200波特,且用PD7引腳控制MAX3080發(fā)送的開啟與關(guān)閉。
評論