<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于SH69P42 PWM的10位D/A轉(zhuǎn)換器

          基于SH69P42 PWM的10位D/A轉(zhuǎn)換器

          作者: 時間:2012-05-24 來源:網(wǎng)絡(luò) 收藏

          1引言

          本文引用地址:http://www.ex-cimer.com/article/148995.htm

          提高單片機片內(nèi)資源的利用率;縮小最終產(chǎn)品的體積,降低功耗,減輕重量,提高集成度,提高可靠性,是單片機應(yīng)用系統(tǒng)設(shè)計的基本原則。

          在單片機選型時,由于內(nèi)部資源針對不同應(yīng)用有多種組合,從而形成了單片機系列。例如:片內(nèi)程序存儲器的大小、RAM的大小、A/D精度及通道數(shù)、D/A精度及通道數(shù)、是否有LCD驅(qū)動、I/O數(shù)、是否有、精度、中斷數(shù)量及嵌套、定時器數(shù)及精度等。但在實際應(yīng)用中,也很難做到單片機的配置完全符合應(yīng)用要求。因為應(yīng)用是多樣化的,而單片機的型號、系列畢竟有限。因此,如果能方便地將單片機所提供的內(nèi)部功能元件轉(zhuǎn)為另一功能,將大大拓展單片機的應(yīng)用領(lǐng)域。

          當(dāng)應(yīng)用需要模擬量輸出時,就需要有D/A,一般地,還需有專門的元件以及外圍電路。這里闡述一種的一路實現(xiàn)D/A的方法。

          是中穎公司SH6610D內(nèi)核的4位RISC指令集的單片機,內(nèi)部集成有四通道8位SARA/D,兩通道輸出,三種兩級中斷(A/D中斷、端口中斷和定時器中斷)、兩個8位定時器,16個I/O引腳,內(nèi)有OTP型ROM:3072×16位,RAM:192×4位,內(nèi)置低電壓監(jiān)視復(fù)位和看門狗電路,振蕩器工作頻率從32768Hz至8MHz,可編程選擇片內(nèi)RC振蕩、片外RC振蕩、外接晶體振蕩等形式。共有43條指令,每條指令的執(zhí)行時間均等,是振蕩器周期的4倍。

          SH69P42符合工業(yè)規(guī)格,適用于對系統(tǒng)抗干擾能力要求極高的場合。

          3SH69P42的PWM編程

          3。1SH69P42的RAM編址

          SH69P42的內(nèi)部寄存器除累加器A、進位標(biāo)志CY、程序計數(shù)器PC之外,端口、定時器、A/D、PWM中斷、WDT與通用RAM一起統(tǒng)一編址。其地址由組成,源操作數(shù)的有效位為7位,因此采用了BANK概念,每128單元為一個BANK,用BANK值給出高3位地址。

          例如:LDAMx,bbb

          其中,Mx為取數(shù)單元地址的低7位,BANK值bbb為取數(shù)單元地址的高3位。

          LDA10H,01H

          表示將RAM單元90H的內(nèi)容送至累加器A。

          3。2SH69P42的PWM編程

          SH69P42具有兩通道PWM輸出,分別由三個寄存器控制。

          系統(tǒng)寄存器PWMC控制PWM輸出,系統(tǒng)寄存器PWMP設(shè)置PWM輸出信號周期,系統(tǒng)寄存器PWMD設(shè)置PWM輸出信號的占空比。如表1、表2、表3所列。

          4PWM實現(xiàn)D/A轉(zhuǎn)換

          4。1實現(xiàn)電路及參數(shù)計算

          圖1為SH69P42PWM1的D/A轉(zhuǎn)換的原理圖。

          (1)振蕩選擇

          由于PWM的周期、占空比與SH69P42的振蕩周期密切相關(guān),為保證高精度。尤其是避免溫度影響,采用外接晶體振蕩器的方法,而不采用內(nèi)部或外部RC振蕩方式。因為后者受工作環(huán)境溫度影響較大。

          4。1。210位D/A的實現(xiàn)方法

          從表2、表3看出,SH69P42的PWM輸出時,先設(shè)定周期再設(shè)定占空比,周期確定后,占空比其實就是在本周期內(nèi)有效高電平(正向,反之同理)脈沖的數(shù)量與周期電平數(shù)量的比。SH69P42允許最大的周期設(shè)定是10位,因此,采用周期固定,也就是3FFH,將待轉(zhuǎn)換數(shù)直接對應(yīng)為占空比的數(shù)值,就可以實現(xiàn)10位的D/A轉(zhuǎn)換。

          4。1。3輸出滿量程的分辨率假定輸出電壓為SH69P42的工作電壓為5V,10位數(shù)字量的數(shù)字分辨率為1/1024,轉(zhuǎn)換為模擬量為5V/1024=4。8mV,這就是模擬輸出的分辨率。

          4。1。4輸出端RC網(wǎng)絡(luò)的參數(shù)選擇

          輸出端根據(jù)后續(xù)電路的需要,可以采取一階RC積分網(wǎng)絡(luò)或二階RC低通網(wǎng)絡(luò)。圖1所示為二階RC低通網(wǎng)絡(luò),一方面可濾除高頻雜波,另一方面可根據(jù)PWM的周期頻率輸出滿足需要的不會過滯后隨動模擬電壓。

          當(dāng)PWM1輸出為高電平時,通過電阻R2、R3對電容C5、C4充電,Output電壓升高,當(dāng)PWM1輸出低電平時兩電容C5、C4通過兩電阻R2、R3放電,使得Output電壓降低。這樣,PWM1輸出時,在固定周期下隨著占空比的變化,Output電壓值上下波動,波動幅度與占空比的數(shù)值線性相關(guān)。

          4。2程序設(shè)計規(guī)則

          SH69P42單片機的PWM在軟件設(shè)計時需遵循以下規(guī)則:

          設(shè)置PWMn的周期或占空比時,先設(shè)置高四位,然后設(shè)置中四位,最后設(shè)置低四位;

          在PWM輸出狀態(tài)下,只有寫入PWMn周期或占空比的第四位數(shù)據(jù)后,數(shù)據(jù)才會裝入重裝入計數(shù)器并在下一個周期開始時計數(shù);

          當(dāng)選擇以PWMn輸出(PWMCbit0=1)時,PWMn輸出的第一個周期和第一個占空比是按3FFH計數(shù),系統(tǒng)寄存器PWMP和PWMD的數(shù)據(jù)從第二個周期開始計數(shù);

          PWM能在HALT方式下繼續(xù)工作,并在執(zhí)行STOP指令后自動停止工作。

          另外,SH69P42的振蕩方式編程不是在程序中實現(xiàn),而是在對OTP編程之前的燒寫設(shè)置中按照實際設(shè)定的。

          4。3轉(zhuǎn)換結(jié)果分析

          單片機外接振蕩器振蕩頻率為4MHz,PWM時鐘設(shè)定為8倍tOSC($21=0111),周期設(shè)定為3FFH($2A$29$28=0011,1111,1111)時,PWM的時鐘周期為2。048ms,占空比(這里相當(dāng)于D/A轉(zhuǎn)換的數(shù)字量)為0FFH($2D$2C$2B=000011111111)。理論計算輸出為1。25V(0FFH×5/3FFH),波形顯示約為1。25V,基本一致。此時PWM占空比的時間為125μs,周期為2。048ms,與理論值基本一致。

          5結(jié)束語

          常溫下實際轉(zhuǎn)換結(jié)果與理論計算結(jié)果基本一致。在45℃時,實際轉(zhuǎn)換結(jié)果和理論計算值的偏差為0。15%左右,能夠滿足大多數(shù)場合的需要。如果對振蕩系統(tǒng)、二階RC低通網(wǎng)絡(luò)的元件參數(shù)提高篩選要求的話,可以實現(xiàn)偏差值在0。1%以內(nèi)。

          pwm相關(guān)文章:pwm是什么


          pwm相關(guān)文章:pwm原理




          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();