在戶用儀表(電能表、燃氣表、水表、熱能表等)自動
抄讀系統(tǒng)及工業(yè)控制系統(tǒng)中, 往往使用現(xiàn)場總線采用
有關通信規(guī)約進行數據交換以獲取有關信息。 而數據
通信一般使用主從應答的查詢方式, 其數據鏈路層一
般由前導字符、幀起始符、控制碼、數據長度、數據域(包
含地址)、校驗碼、結束符等組成。 由于不同的工作環(huán)境
要求系統(tǒng)有不一樣的通信波特率,因此,戶用儀表等必
須有波特率自適應的軟硬件模塊, 達到現(xiàn)場系統(tǒng)配置
靈活,提高系統(tǒng)數據通信的工作效率及可*性。
一、從機波特率的計算方法
設定通信時每字節(jié)的傳輸格式為:1個起始位、8個
數據位(低bit位在先)、1個停止位,如圖1所示。 服務器主
機在發(fā)送1幀信息之前先發(fā)送1個以上的前導字節(jié)FEh,
從機就是從1幀通信數據前的前導字符中提取相應的波
特率信息。 在發(fā)送前導字符FEh字節(jié)時bit位的傳輸如圖2
所示, 從機在起始位的下降沿CPU進行內部時鐘的開始
計數至上升沿時時鐘計數結束。 根據圖2可知,時鐘計數
的1/2即為波特率傳輸1個bit位所需的時間。
二、硬件的工作原理
本文選擇MSP430系列單片機作為從機的微控制
器,采用模擬串口的異步半雙工通信方式(因有些型號
單片機不帶串行通信口)。MSP430系列單片機是由美國
TI公司設計制造的,是一種具有超低功耗并且功能強大
的單片機,系列型號以FLASH芯片為主,單片機自身帶
有JTAG仿真接口,調試工具簡單、使用方便,非常適合
戶用儀表等低功耗產品的開發(fā)。
MSP430系列單片機的定時器系統(tǒng)由一個16位的定
時計數器及對應的多組具有輸入捕獲或比較功能的
CCRx寄存器組成。 每個CCRx寄存器能獨立選擇輸入捕
獲或比較功能中的一種模式, 通過簡單的控制字設置
就能相互轉換。 定時計數器有多種時鐘源選擇方式(如
外部輸入、晶體振蕩器、內部數控(DCO)的RC振蕩器
等),并有停止、增計數、連續(xù)、增/減計數4種工作模式。
每個CCRx寄存器都具有外接輸入信號及控制輸出功
能,當單個CCRx寄存器啟動捕獲功能時,輸入的邊沿觸
發(fā)信號能把定時計數器內的當時值拷貝到CCRx寄存器
并能響應中斷處理。 而當CCRx寄存器啟動比較功能,且
CCRx寄存器的值與定時計數器的值相同時,能產生預置
的bit位輸出信號并響應中斷處理。 在1幀數據的應答通
信過程中時間比較短,此時間內溫度變化很小,可認定
當時內部DCO的RC振蕩值是個相對穩(wěn)定值,而波特率的
計算只是1個bit位所占用的多少個定時器的時鐘數,因
此不必考慮高精度的晶體振蕩器作為時鐘源,可以使用
內部的DCO振蕩器作為數據通信的時鐘源, 因為通信時
的波特率計時的時鐘脈沖數對時鐘源的準確度沒有要
求,只要保證傳送1幀信息的時鐘穩(wěn)定性就能可*工作。
考慮到單片機波特率計算會產生的時鐘誤差及1個字節(jié)
可能產生時鐘累積誤差,一般要求定時器的時鐘頻率大
于最高波特率的100倍以上,使每傳輸1個字節(jié)時的時鐘
誤差積累不會引起通信誤碼。 對于仿真的模擬串口利用
定時器捕獲模式對端口上、下沿的信號進行捕捉,獲取
接收時第一個前導碼字節(jié)(FEh)兩個低電平bit位的時鐘
周期數,從而計算出波特率發(fā)生的正確時序。 從機定時
器的捕獲模式還能感應接收字節(jié)起始位的下降沿信號
以得到CCRx的時鐘值,利用波特率計算的時鐘數設置比
較模式的寄存器CCRx值, 下次比較模式產生中斷的
CCRx值=CCRx(當前值)+波特率計算的時鐘數。 注意,接
收時的D0位計算為1.5倍波特率計算的時鐘數,定時器的
比較模式中斷得到接收bit位的電平信號,如圖3所示。 當
從機發(fā)送數據時,定時器的比較模式使用了單片機定時
器的PWM輸出模式1、模式5的方法,確定了輸出bit位的
電平同步信號,如圖4所示。 上述接收、發(fā)送數據信息的
處理在定時器中斷處理程序中完成。
三、軟件流程
(見圖5)
為了充分利用MSP430單片機的低功耗功能, 單片
機平時可以工作在休眠狀態(tài),定時器初始化的工作模式
設為連續(xù)增計數方式, 根據相對應的捕獲/比較寄存器
CCRx初始化相應的通信輸入、輸出端口,設置定時器的
控制寄存器CCTLx為下降沿捕獲模式。 當有串行通信時
開啟定時器的時鐘, 同時產生定時器捕獲/比較模式
CCRx的中斷處理信號,在CCRx中斷處理程序中完成數
據通信。 為了防止通信過程中產生意外事故的死循環(huán),
可在通信過程中設置一個看門狗,當然可以使用定時器
另外一組CCRx的比較模式功能來仿真看門狗程序。 當
通信結束時設置定時器的CCTLx為下降沿捕獲模式,為
了降低功耗還可以關閉定時器時鐘。
此方法已成功應用在總線制網絡水表的自動抄讀
系統(tǒng)上,在DCO頻率為3MHz時波特率(300~9600)BPS均
能正常工作。 實施的方法也可以移植到別的單片機系
列,尤其是沒有串口功能的單片機系統(tǒng),有時還可以節(jié)
省系統(tǒng)硬件的通信資源
本文完整版本及圖列從這里下載:http://www.zg4o1577.cn/f/波特率自適應的模擬串行通信.kdh
程序詳見: http://www.zg4o1577.cn/mcu/1541.html
kdh閱讀器下載: http://www.xdowns.com/soft/4/136/2012/Soft_88914.html