1 引言 提高單片機片內資源的利用率;縮小最終產品的體積,降低功耗,減輕重量,提高集成度,提高可靠性,是單片機應用系統設計的基本原則。 在單片機選型時,由于內部資源針對不同應用有多種組合,從而形成了單片機系列。例如:片內程序存儲器的大小、RAM的大小、A/D精度及通道數、D/A精度及通道數、是否有LCD驅動、I/O數、是否有PWM、精度、中斷數量及嵌套、定時器數及精度等。但在實際應用中,也很難做到單片機的配置完全符合應用要求。因為應用是多樣化的,而單片機的型號、系列畢竟有限。因此,如果能方便地將單片機所提供的內部功能元件轉為另一功能,將大大拓展單片機的應用領域。 當應用需要模擬量輸出時,就需要有D/A轉換器,一般地,還需有專門的元件以及外圍電路。這里闡述一種基于SH69P42的一路PWM實現D/A轉換器的方法。 SH69P42是中穎公司基于SH6610D內核的4位RISC指令集的單片機,內部集成有四通道8位SAR A/D轉換器,兩通道10位PWM輸出,三種兩級中斷(A/D中斷、端口中斷和定時器中斷)、兩個8位定時器,16個I/O引腳,內有OTP型ROM:3072×16位,RAM: 192×4位,內置低電壓監視復位和看門狗電路,振蕩器工作頻率從32 768 Hz至8 MHz,可編程選擇片內RC振蕩、片外RC振蕩、外接晶體振蕩等形式。 SH69P42共有43條指令,每條指令的執行時間均等,是振蕩器周期的4倍。 SH69P42符合工業規格,適用于對系統抗干擾能力要求極高的場合。 3 SH69P42的PWM編程 3.1 SH69P42的RAM編址 SH69P42的內部寄存器除累加器A、進位標志CY、程序計數器PC之外,端口、定時器、A/D、PWM中斷、WDT與通用RAM一起統一編址。其地址由10位組成,源操作數的有效位為7位,因此采用了BANK概念,每128單元為一個BANK,用BANK值給出高3位地址。 例如:LDA Mx,bbb 其中,Mx為取數單元地址的低7位,BANK值bbb為取數單元地址的高3位。 LDA 10H,01H表示將RAM單元90H的內容送至累加器A。 3.2 SH69P42的PWM編程 SH69P42具有兩通道10位PWM輸出,分別由三個寄存器控制。 系統寄存器PWMC控制PWM輸出,系統寄存器PWMP設置PWM輸出信號周期,系統寄存器PWMD設置PWM輸出信號的占空比。如表1、表2、表3所列。 4 PWM實現D/A轉換 4.1 實現電路及參數計算 圖1為基于SH69P42 PWM1的D/A轉換的原理圖。 (1) 振蕩選擇 由于PWM的周期、占空比與SH69P42的振蕩周期密切相關,為保證高精度。尤其是避免溫度影響,采用外接晶體振蕩器的方法,而不采用內部或外部RC振蕩方式。因為后者受工作環境溫度影響較大。 4.1.2 10位D/A的實現方法 從表2、表3看出,SH69P42的PWM輸出時,先設定周期再設定占空比,周期確定后,占空比其實就是在本周期內有效高電平(正向,反之同理)脈沖的數量與周期電平數量的比。 SH69P42允許最大的周期設定是10位,因此,采用周期固定,也就是3FFH,將待轉換數直接對應為占空比的數值,就可以實現10位的D/A轉換。 4.1.3 輸出滿量程的分辨率 假定輸出電壓為SH69P42的工作電壓為5 V,10位數字量的數字分辨率為1/1 024,轉換為模擬量為5 V/1024=4.8 mV,這就是模擬輸出的分辨率。 4.1.4 輸出端RC網絡的參數選擇 輸出端根據后續電路的需要,可以采取一階RC積分網絡或二階RC低通網絡。圖1所示為二階RC低通網絡,一方面可濾除高頻雜波,另一方面可根據PWM的周期頻率輸出滿足需要的不會過滯后隨動模擬電壓。 當PWM1輸出為高電平時,通過電阻R2、R3對電容C5、C4充電,Output電壓升高,當PWM1輸出低電平時兩電容C5、C4通過兩電阻R2、R3放電,使得Output電壓降低。這樣,PWM1輸出時,在固定周期下隨著占空比的變化,Output電壓值上下波動,波動幅度與占空比的數值線性相關。 4.2 程序設計規則 SH69P42單片機的PWM在軟件設計時需遵循以下規則: 設置PWMn的周期或占空比時,先設置高四位,然后設置中四位,最后設置低四位; 在PWM輸出狀態下,只有寫入PWMn周期或占空比的第四位數據后,數據才會裝入重裝入計 數器并在下一個周期開始時計數; 當選擇以PWMn輸出(PWMC bit0=1)時,PWMn輸出的第一個周期和第一個占空比是按 3FFH計數,系統寄存器PWMP和PWMD的數據從第二個周期開始計數; PWM能在HALT方式下繼續工作,并在執行"STOP"指令后自動停止工作。 另外,SH69P42的振蕩方式編程不是在程序中實現,而是在對OTP編程之前的燒寫設置中按照實際設定的。 4.3 轉換結果分析 單片機外接振蕩器振蕩頻率為4 MHz,PWM時鐘設定為8倍tOSC($21=0111),周期設定為3FFH($2A$29$28=0011,1111,1111)時,PWM的時鐘周期為2.048 ms,占空比(這里相當于D/A轉換的數字量)為0FFH($2D$2C$2B=0000 1111 1111)。理論計算輸出為1.25 V(0FFH×5/3FFH),波形顯示約為1.25 V,基本一致。此時PWM占空比的時間為125μs,周期為2.048 ms,與理論值基本一致。 5 結束語 常溫下實際轉換結果與理論計算結果基本一致。在45℃時,實際轉換結果和理論計算值的偏差為0.15%左右,能夠滿足大多數場合的需要。如果對振蕩系統、二階RC低通網絡的元件參數提高篩選要求的話,可以實現偏差值在0.1%以內。 |