MSP430F413利用Timer_A做一個虛擬串口詳解
HT824按鍵板與主板之間采用串口通信的方式,在做高低溫試驗時候,經(jīng)常出現(xiàn)無法通信問題。使用示波器追蹤通信波形,發(fā)現(xiàn)波特率在溫度變化時候發(fā)生了變化。理論上不應(yīng)該變化的,使用的delay_us()函數(shù)。感覺不妥,打算使用定時器去做一個收發(fā)串口。之前做過曼徹斯特解碼,比這個復(fù)雜。串口的還是第一次做,因為一般的MCU上都有這個外設(shè)。
參照了TI的官方歷程,采用比較捕獲的方式。413有3個定時器,帶著3個比較捕獲模塊。32K的外部晶振,DCO輸出1M的MCLK。了解了串口的方式就可以模擬了。串口是第一位是起始位,為低電平。后面8位是數(shù)據(jù)位,采用地位在前的方式。最后2位或1位是停止位,高電平。
數(shù)據(jù)發(fā)送時候,設(shè)置起始位,定時器比較器+1位的時間,打開中斷,在中斷中進行數(shù)據(jù)的變化。每次中斷,定時器比較器都會加上1位的時間,這樣下次中斷就是等時的了。直到數(shù)據(jù)發(fā)送完成,關(guān)閉中斷。