STM32 DAC 無法輸出0V 的問題分析與解決


問題:
該問題由某客戶提出,發生在STM32F100R8T6器件上。據其工程師講述:在使用 STM32F100 的DAC
時,不管如何設置輸出的值,最低只能輸出到63mV,無法輸出0V,而63mV 的電壓經過他的放大電
路,對產品的性能產生較大的影響。故其工程師詢問是否有辦法可以輸出0V?

調研:
經過對DAC 的輸出口PA4 進行測量,發現將DAC 的輸出值設置為0x000 的時候,電壓輸出確實在
63mV。檢查客戶的程序,可以看到客戶對DAC 的配置如下:
DAC_InitStructure.DAC_Trigger = DAC_Trigger_None;
DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bits8_0;
DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
DAC_Init(DAC_Channel_1, &DAC_InitStructure);
將 DAC 配置程序修改為:
DAC_InitStructure.DAC_Trigger = DAC_Trigger_None;
DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bits8_0;
DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;
DAC_Init(DAC_Channel_1, &DAC_InitStructure);
修改后編譯,測試:對PA4 的電壓進行測量,發現可以輸出0V 了。所以問題就是在於使能了Output
Buffer。

我們來看一下參考手冊是如何描述Output Buffer 的:

 

可以看出,在STM32F100 的DAC 中,內嵌了兩個Output Buffer,其作用是減小輸出阻抗,可以在不使
用外部運放的情況下就可以直接驅動外部負載。可以通過DAC_CR 寄存器的BOFFx 位來使能或禁止
Output Buffer

再來看數據手冊的描述:

 

 可以看到Output Buffer 的位置,當其被禁止時,直接被旁路掉。
再繼續從數據手冊里看一下DAC 外設電氣特性里關於 Buffer 的相關參數,我們可以看到:

 

 這個表告訴我們,當Output Buffer 被禁止,輸出電壓最低電壓典型值在0.5mV,輸出最高電壓最大值
為(VREF+-1LSB)V。當Output Buffer 被使能,能保證的的輸出最低電壓為0.2V,輸出最高電壓為VDDA-
0.2V。所以,Output Buffer 並不是軌對軌的輸出驅動器,無法輸出0V。再來看一下它的注釋:當VREF+
為3.6V,其響應范圍從0x0E0 到0xF1C 的12 位輸出值;當VREF+為2.4V,其響應范圍從0x155 到0xEAB
的12 位輸出值。也就是說,當VREF+為3.6V,DAC 的輸出電壓范圍大約為0.197V~3.4V;當VREF+為
2.4V,DAC 的輸出電壓范圍大約為0.2V~2.212V。當然,這只是能保證的數據,並不是說使能了Output
Buffer,最低輸出電壓就一定是0.2V,只是在應用中,應該以從0.2V 到VDDA-0.2V 這個范圍來進行設
計。STM32F100 在使能Output Buffer 后,其最低輸出電壓為63mV 屬於正常現象。

結論:
由於打開了DAC 的Output Buffer,導致了DAC 無法輸出0V。
處理:
禁止DAC 的Output Buffer 即可,也就是在配置中將DAC_InitStructure.DAC_OutputBuffer 一項設置成
DAC_OutputBuffer_Disable。

 

建議:
客戶的實際應用中,如果對於DAC 的輸出電壓范圍的要求在於0.2V~VDDA-0.2V 的范圍之內,可以直接使
用DAC 的Output Buffer,將Output Buffer 使能。如果對於DAC 的輸出電壓范圍超出0.2V~VDDA-0.2V
或者需要軌對軌輸出,那么建議禁止Output Buffer,並在外部使用合適的運放器件增強其輸出能力。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM