大多數(shù)SCI模塊硬件不支持自動(dòng)波特率檢測(cè)。一般情況下嵌入式控制器的SCI時(shí)鐘由PLL提供,設(shè)計(jì)的系統(tǒng)工作會(huì)改變PLL復(fù)位時(shí)的工作狀態(tài),這樣很難支持自動(dòng)波特率檢測(cè)功能。而在TMS320F2812處理器上,增強(qiáng)功能的SCI模塊硬件支持自動(dòng)波特率檢測(cè)邏輯。寄存器SCIFFCT位ABD和CDC位控制自動(dòng)波特率邏輯,使能SCIRST位使自動(dòng)波特率邏輯工作。增加自動(dòng)波特率檢測(cè)功能的SCI通信接口除了能夠滿足正常通信自動(dòng)檢測(cè)系統(tǒng)的通信速率外,還支持采用SOl接口上電引導(dǎo)裝載程序?這對(duì)于通過(guò)上位機(jī)采用SCI接口實(shí)時(shí)更新系統(tǒng)軟件非常重要。
當(dāng)CDC為1時(shí),如果ABD也置位表示自動(dòng)波特率檢測(cè)開(kāi)始工作,就會(huì)產(chǎn)生SCI發(fā)送FIFO中斷(TXINT)。同時(shí)在中斷服務(wù)程序中必須使用軟件將CDC位清0,否則如果中斷服務(wù)程序執(zhí)行完CDC仍然為1,則以后不會(huì)產(chǎn)生中斷。具體操作步驟如下。
(1)將SCIFFCT中的CDC位(位13)置位,清除ABD位(位15),使能SCI的自動(dòng)波特率檢測(cè)模式。
(2)初始化波特率寄存器為1或限制在500 Kb/s內(nèi)。
(3)允許SCI以期望的波特率從一個(gè)主機(jī)接收字符“A”或字符“a”。如果第一個(gè)字符是“A”或“a”,則說(shuō)明自動(dòng)波特率檢測(cè)硬件已經(jīng)檢測(cè)到SCI通信的波特率,然后將ABD位置1。
(4)自動(dòng)檢測(cè)硬件將用檢測(cè)到的波特率的十六進(jìn)制值刷新波特率寄存器的值,這個(gè)刷新邏輯器也會(huì)產(chǎn)生一個(gè)CPU中斷。
(5)通過(guò)向SCIFFCT寄存器的ABD CLR位(位13)寫(xiě)入1清除ABD位,響應(yīng)中斷。寫(xiě)0清除CDC位,禁止自動(dòng)波特率邏輯。
(6)讀到接收緩沖為字符“A”或“a”時(shí),清空緩沖和緩沖狀態(tài)位。