最近做的采集設備,采用低功耗的MSP430,。主控芯片需要完成完成三個功能:恒流芯片的驅動(四個管腳輸出),8通道ADC轉換,波特率230400串口通信。調試完成,每1ms啟動一次轉換與串口發送數據,沒50 ms更改一次GPIO管腳輸出,作為橫流芯片驅動信號。
遇到的問題以及解決方案:
1. 恒流芯片驅動。恒流芯片需要單片機輸出八個脈沖信號完成一次驅動,最開始采用TimerA中斷進行延時,一個周期下來最小也要10ms,對采樣率影響很大。后面發現驅動的高低電平之間不加延時,恒流芯片也能正常驅動,因此每50ms在GPIO引腳輸出八個脈沖,進行一次驅動,耗時小于1ms,可以忽略。
2.中斷。ADC采樣和發送數據均在TimerB的中斷中完成。TimerB有兩個中斷,TBIE和CCIE,前者是計數器從0計數到65535觸發一次中斷,后者是從0計數到TBCCR0觸發中斷。且進入的中斷服務程序不同,TBIFG 一般進 TIMERB1_VECTOR;CCIFG 的話要看用的是哪個定時器如果是 CCR0 的話就進TIMERB0_VECTOR,如果是CR1,CCR2……則進TIMERB1_VECTOR。啟動計數器,通過將其模式由停止計數設置為增計數即可。SMCLK采用8M,8分頻,TBCCR0=1000,準確達到1ms中斷一次。
3.ADC轉換。先使能通道,打開轉換內核,由于采樣率較高,設置較低的采樣保持時間。MSC置位,使一次采樣轉換完成后立即進行下一次。SHP置位,采用采樣觸發器。第一次采樣由ADC12SC啟動,中斷程序中直接disable中斷ENC,停止采樣。中斷結尾處,使能ENC。
4.串口通信,波特率230400,較高。極限傳輸數據230400/(10*16)=1440.大于1000,1ms能夠完成數據傳輸任務。注意:串口通信需要p3.5,p3.4一定不要用這兩個管腳作為輸出。選擇SMCLK,8M,通過工具計算即可設置波特率發生寄存器的值。
|