久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 14719|回復: 8
打印 上一主題 下一主題
收起左側

STM8L的DAC詳解 含例程

[復制鏈接]
跳轉到指定樓層
樓主
ID:140343 發表于 2016-10-10 00:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
向STM8L的向DHR寄存器寫入數據,此數據被送入到DOR寄存器,最終被送到DA轉換器,DAC會輸出對應的電壓.我們使用用萬用表測量此電壓,與理論計算值對比,來學習STM8L的DAC.

下圖為STM8L152C6的DAC內部結構圖.

本例程使用的芯片型號為STM8L152C6,是中等容量,48腳的MCU,它只有一個輸出通道,輸出通道是PF0.如下圖數據手冊中的介紹



STM8L的DAC為12位DAC,寫入DHR寄存器中的數據最大為2^12=4096.下圖是數據手冊中給出的DAC輸出電壓計算公式:DACout=Vref*(DAC_DOR/4096)

①DACout是DAC輸出的電壓
②Vref是參考電壓,由于參考電壓引腳和MCU供電引腳連接在一起,所以Vref的電壓和單片機系統的供電電壓相等.實測為2.98V,這個值以實測為準.
根據這個公式,如果向DAC_DHR寫入數據為2048,那么DAC輸出電壓應該為2048/4096*2.98=1.490V


DAC連續輸出不同的電壓,可以達到輸出正弦波,三角波等各種波形,由于沒有示波器,沒法看到輸出波形,所以本例程,只是簡單的使用DAC最基本的輸出電壓的功能,使用萬用表測量輸出的電壓與計算值對比.

  1. /*硬件連接*/

  2. // PF0---->

  3. /****************************************************************************************

  4. *開發環境:IAR for stm8 v6.5.3

  5. *硬件平臺:STM8L-DISCOVERY

  6. *功能說明:向DHR寄存器寫入數據,DAC會輸出對應的電壓,用萬用表測量此電壓,與理論計算值

  7. *         對比.

  8. *作    者:茗風

  9. ****************************************************************************************/

  10. #include"iostm8l152c6.h"

  11. #include"stdint.h"

  12. #define    WRITE_TO_DHR(a)   DAC_RDHRH=(a&0x0F00)>>8;DAC_RDHRL=(0x00FF&a)   

  13. //帶參數宏,實現向DHR寄存器,寫入一個12位的數據   

  14. /******************************************************************************************************

  15. *  名    稱:void delay_10ms(uint8_t x_ms)

  16. *  功    能:延時10ms

  17. *  入口參數:無

  18. *  出口參數:無

  19. *  說    明:

  20. *  范    例:無

  21. ******************************************************************************************************/

  22. void delay_130ms(uint8_t x)

  23. {

  24.   uint8_t i,j;

  25.   for(;x>0;x--)

  26.   {

  27.       for(i=0;i<255;i++)//2*255個指令周期

  28.         for(j=0;j<255;j++);//2*255個指令周期

  29.       // 共 x_ms*2*255+2*x_ms個指令周期

  30.       // 即 255*2*255+2*255=130610us=130ms

  31.       // 綜上 i,j雙層for循環,延時時間為130ms

  32.   }

  33.   // 16M/8/2=1M 一個指令周期為1us

  34. }

  35. /******************************************************************************************************

  36. *  名    稱:void DAC12_Config(void)

  37. *  功    能:配置DAC,禁用DMA,不使用TIM4觸發,也不用軟件觸發,寫入DHR的數據被立即送入DOR寄存器,

  38. *            立即輸出對應電壓

  39. *  入口參數:無

  40. *  出口參數:無

  41. *  說    明:STM8L152C6屬于中等容量MCU,只有一路DAC輸出,輸出引腳為PF0

  42. *  范    例:無

  43. ******************************************************************************************************/

  44. void DAC12_Config(void)

  45. {

  46.   //------配置DAC輸出引腳PF0------

  47.   PF_CR1_C10  =0;//浮空輸入

  48.   PF_CR2_C20  =0;//無中斷功能

  49.   PF_DDR_DDR0 =0;//PF0輸入

  50.   

  51.   //------打開DAC時鐘------

  52.   CLK_PCKENR1_PCKEN17=1;//打開DAC時鐘

  53.   

  54.   //------選擇DAC觸發方式------

  55.   DAC_CR1_TSEL=0x0;//選擇TIM4觸發,由于TEN=0,所以此位設置無效

  56. /*  These bits are only used if TEN=1.

  57.     000: TIM4_TRGO (Timer 0 counter channel output) selected

  58.     111: SWTRIG (Software trigger) selected*/


  59.   //------不使用DAC的BUFFER------       

  60.   DAC_CR1_BOFF=1;//DAC Channel output buffer disabled

  61.   

  62.   //------配置寫入DHR寄存器中的數據是否需要觸發才能送到DOR中------

  63.   DAC_CR1_TEN=0;//此位為零時,寫入DHR寄存器中的數據被立即送到DOR中,輸出對應電壓,無需觸發

  64.   

  65.   DAC_CR2_DMAEN=0;//關閉DMA功能

  66.   DAC_CR2_DMAUDRIE=0;//關閉DMA中斷功能

  67.   

  68.   //DACout=Vref*(DAC_DORH/L/4096)

  69.   DAC_CR1_EN=1;//使能DAC

  70. }

  71. void main( void )

  72. {

  73.   DAC12_Config();

  74.   while(1)

  75.   {

  76.      //-------------------實測值--------------理論值----------

  77.      WRITE_TO_DHR(4095);//2.98V        4095/4096*2.98=2.979V

  78.      delay_130ms(15);//由于使用萬用表側臉電壓,所以這里延時一段時間

  79.      WRITE_TO_DHR(3072);//2.23V        3072/4096*2.98=2.235V

  80.      delay_130ms(15);

  81.      WRITE_TO_DHR(2048);//1.49V        2048/4096*2.98=1.490V

  82.      delay_130ms(15);

  83.      WRITE_TO_DHR(1024);//0.74V        1024/4096*2.98=0.745V

  84.      delay_130ms(15);

  85.      WRITE_TO_DHR(512); //0.37V        512/4096*2.98=0.372V

  86.      delay_130ms(15);

  87.      WRITE_TO_DHR(256); //0.19V         256/4096*2.98=0.186V

  88.      delay_130ms(15);

  89.   }

  90. }
復制代碼




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:204042 發表于 2017-5-23 20:48 | 只看該作者
我想請教下,我現在用的是c8DAC有兩路但我選擇其中一路DAC2 但又對應portb4,portb5 兩個口我該怎么設置呢
回復

使用道具 舉報

板凳
ID:18591 發表于 2019-1-20 21:12 | 只看該作者
感恩~~~~~~~~~~~~~~~~~
回復

使用道具 舉報

地板
ID:466148 發表于 2019-3-11 19:15 來自手機 | 只看該作者
大師你好,我用你的程序在stm8 discovery 芯片是stm8l152c6t6上運行,用萬用表和示波器看了,電壓與你測量的不同,分別是0.145、0.253、0.466、0.896、1.327、1.755和你的值對應,另外,我有stm8l152看4t6
回復

使用道具 舉報

5#
ID:466148 發表于 2019-3-11 19:30 來自手機 | 只看該作者
大師你好,我用你的程序在stm8 discovery 芯片是stm8l152c6t6上運行,dac輸出到f0腳,用萬用表和示波器看了,電壓與你測量的不同,分別是0.145、0.253、0.466、0.896、1.327、1.755和你的值對應,另外,我有stm8l152k4t6的一個例子程序運行后,dac輸出的數據也是和它說的不一樣,測的的電壓分別是0.324、0.610、0.897、1.177、1.475、1.744,對應它的設計輸出為0.5、1.0、1.5、2.、2.0、2.5、3.0伏,我每次都測量了3.3伏,基本是在2.98左右,+5.0伏在4.65左右,現在搞不清是那里問題,是不是stm8l152c6t6 dac輸出也有參考電壓,并且它的參考電壓就是1.75伏嗎?
回復

使用道具 舉報

6#
ID:466148 發表于 2019-3-11 19:44 來自手機 | 只看該作者
剛才換了個電源,用華為手機5伏4.5A充電器接上測量dac輸出電壓跟上次測的差不多,1.744伏變為1.752伏,別的都差不多,第三位稍有提高,不知道原因,請大師幫忙看看。
回復

使用道具 舉報

7#
ID:466148 發表于 2019-3-11 21:11 來自手機 | 只看該作者
我用例子程序點燈實驗輸出到pf0腳,用示波器和萬用表測量有2.98伏直流輸出,說明芯片輸出沒有問題。
回復

使用道具 舉報

8#
ID:466148 發表于 2019-3-11 22:08 來自手機 | 只看該作者
找到問題了,是dac_cr1_boff=1,dac channel output buffer disable,把它改為使能就好了。前面等號后的0改成1就好了。
回復

使用道具 舉報

9#
ID:308135 發表于 2019-12-12 10:49 | 只看該作者
DAC_CR1_BOFF=1;//DAC Channel output buffer disabled
請問為啥不適用BOFF位呢?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品99久久久久久久vr | 国产精品一区在线 | 国产精品久久精品 | 国产亚洲一区在线 | 午夜久草 | 午夜午夜精品一区二区三区文 | 亚洲欧美日韩电影 | 黑人久久 | 中文天堂在线一区 | 一区二区三区四区国产 | 国产91精品网站 | 国产精品一区二区三 | 亚洲精品www久久久 www.蜜桃av | 国产在线观看一区二区三区 | 黄 色 毛片免费 | 日韩在线 | 色黄网站 | 2019天天操 | 青青草华人在线视频 | 精品一区二区三区在线视频 | 一级片av| 国产视频精品在线 | 日韩精品在线观看免费 | 久久综合久色欧美综合狠狠 | 91精品国产91久久久久福利 | 国产精品久久 | 黄色福利 | 最新国产精品精品视频 | av在线播放免费 | 精品一区二区三区在线视频 | 久久中文字幕一区 | 亚洲91精品 | 五月花丁香婷婷 | 看一级黄色毛片 | 免费一区二区三区 | 亚洲人精品午夜 | 免费看啪啪网站 | 七七婷婷婷婷精品国产 | 国产电影精品久久 | 亚洲精品久久久蜜桃 | 欧美日韩精品免费 |