1 硬件電路 TMS320F206(簡稱F206)有1個通用輸入引腳BIOS和1個通用輸出引腳XF,此外還有IO0、IO1、IO2和IO3引腳,分別對應 I/O狀態寄存器的IO0~IO3。這4個引腳通過異步串行口寄存器(ASPCR)和I/O狀態寄存器(IOSR)實現軟件可控,可被單獨配置成輸入或輸出。本文中使用IO0作為CPU卡(江蘇意源公司iCos/Mil v1.0)的復位引腳,IO2作為CPU卡的I/O(輸入/輸出)引腳,電路圖如圖1所示。 2 軟件實現 異步串行通信,傳輸協議bit流為:1位寬的低電平為起始位,8位寬的數據位,1位校驗位,以及1位高電平的停止位。軟件實現時,通過配置異步串行口寄存器(AS-PCR)和I/O狀態寄存器(IOSR),并使用定時器功能,完成F206與CPU卡之間數據的發送與接收。 2.1 數據發送 F206發送數據時,將IO2配置成輸出狀態,然后啟動定時器,按照設置的波特率,分別將發送的數據按字節(8位)加上起始位、校驗位和停止位發送給CPU卡的IO2口。 數據發送子程序為: 2.2 數據接收 接收數據一般采用軟件輪詢的方式實現。數據接收子程序為: 2.3 定時器設置 定時器中斷頻率由TDDR(定時器divide-down寄存器,定時計數寄存器TIM的低4位)和定時周期寄存器PRD共同確定。當兩者都為0 時,定時器中斷頻率為(CLKOUT1rate)/2;兩者不全為0時,由如下公式確定: 舉例:為了實現9 600 bps的有效傳輸速率,實際傳輸速率(額外增加1位起始位、1位校驗位、1位停止位)應該為: 9 600 bps÷8×(8+1+1+1)=13 200 bps 故在晶振頻率為20 MHz的條件下,PRD=20×106/13200-1=1514。 此時,將PRD設置為1514,每兩次定時器中斷的時間間隔即為1位數據的保持時問。一般來說,讀取的時機靠近位寬的中間位置,讀取的數據比較可靠和穩定,如圖2所示。 3 軟件改進 圖2中,如果讀取的起始位的位置正好處在起始位的開始,此時就會出現將起始位的末尾誤判為第1位;或者讀取的起始位的位置處在起始位的末尾,將可能丟失數據的第1位,都會導致讀取數據出錯,如圖3所示。 為了降低讀取數據出錯的概率,將起始位的判斷周期定為位寬的1/3,并在檢測到起始位后,繼續等待1/3位寬(再等待一個定時中斷),對起始位進行確認(讀取的值為0)。此時才認定是一個正常的起始位,將定時周期修改為正常的位寬。此后每個定時器中斷可以正確讀取1位的數據,且保證了讀取的時機處在 1/3~2/3位寬的中間部分,如圖4所示。 此時,圖3中出錯的問題也得到解決,如圖5所示。 此外,還解決了毛刺引起的起始位誤判的問題。因為一個毛刺的持續時間不會延續1/3位寬的時間,否則該應用將因穩定性太差而不能得到實用。 4 硬件改進 除了單純使用定時器實現外,還可以結合INT2中斷實現起始位的確認,電路如圖6所示。 此時,建議延后1/3或者1/2個位寬時間,再讀取起始位的狀態。若還是為低電平,則作為一個有效的起始位,關閉INT2中斷,然后按照一個完整位寬的時問啟動定時器,每次讀取1位,完成接收1字節后,關閉定時器,開啟INT2中斷,啟動下一個字節的接收流程。 參考文獻 1. 北京聞亭科技發展有限公司.TMS320C2XX高速數字信號處理器原理與應用[OL]. (1998-04).http://www.DSPChina.com. 2. TI 公司.TMS320C1x/C2x/c2xx/C5x Assembly Language Tools User's Guide,1995. 作者:江南計算技術研究所 李德兵 李德勇 尹戰文 來源:單片機與嵌入式系統應用 2009(10) |