娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年08月31日(星期六)

2021年08月31日 | 玩轉STM32CubeMX | DAC數模轉換

發布者:煙雨江湖 來源: eefocus關鍵字:STM32CubeMX  DAC  數模轉換 手機看文章 掃描二維碼
隨時隨地手機看文章

1.DAC數模轉換

DAC(digital to analog converter)即數模轉換器,它可以將數字信號轉換為模擬信號,它的功能與ADC相反。在常見的數字信號系統中,大部分傳感器信號被轉化成電壓信號,而ADC把電壓模擬信號轉換成易于計算機存儲、處理的數字編碼,由計算機處理完成后,再由DAC輸出電壓模擬信號來驅動某些執行器件,使人類易于感知。如音頻信號的采集和還原就是這樣的一個過程


STM32F1的DAC模塊是12位數字輸入,電壓輸出型的DAC。可以配置為8位或12位模式,也可以與DMA控制器配合使用,DAC工作在12位模式下時,數據可以設置為左對齊或右對齊。DAC模塊有2個輸出通道,每個通道都有單獨的轉換器。在雙DAC模式下,2個通道可以獨立地進行轉換,也可以同時進行轉換并同步地更新2個通道的輸出。DAC可以通過引腳輸入參考電壓VREF+以獲得更精確的轉換結果。DAC結構框圖如下示:

  • VDDA和VSSA是DAC模塊的供電引腳,VREF+是DAC模塊的參考電壓,DAC_OUTx是DAC的輸出通道;當參考電壓為VREF+時,DAC的輸出電壓是線性的(0~ VREF+),12位模式下DAC輸出電壓計算公式如下:
    ** DACx 輸出電壓 = VREF+ * ( DORx / 4095 )**

  • DAC輸出是受DORx 寄存器直接控制的,但是不能直接往DORx 寄存器寫入數據,而是要通過DHRx間接的傳給DORx 寄存器,實現對DAC輸出的控制。如果未選擇硬件觸發,1個APB1時鐘周期后,DHRx中存儲的數據將自動轉移到DORx 寄存器;如果選擇硬件觸發,將在3個APB1時鐘周期后進行轉移

  • 當DORx加載了DHRx內容時,模擬輸出電壓將在一端時間tSETTING后可用,具體取決于電源電壓和模擬輸出負載,可以從數據手冊查到tSETTING的典型值為3us,最大值為4us,因此DAC的轉換速度最快是250K左右

  • DAC可通過外部事件(定時器、外部中斷線)觸發轉換,外部觸發源列表如下示

2.硬件設計

本實驗通過D1指示燈來提示系統運行狀態,K_UP用來增加DAC輸入值,K_DOWN用來減少DAC輸入值,輸入值的改變將控制DAC_OUT1的電壓輸出,通過USART1將輸出的電壓值打印出來


* 指示燈D1

* USART1串口

* DAC_OUT1(PA4)

* K_UP和K_DOWN按鍵


3.軟件設計

3.1 STM32CubeMX設置
?? RCC設置外接HSE,時鐘設置為72M
?? PC0設置為GPIO推挽輸出模式、上拉、高速、默認輸出電平為高電平
?? USART1選擇為異步通訊方式,波特率設置為115200Bits/s,傳輸數據長度為8Bit,無奇偶校驗,1位停止位
?? PA0設置為GPIO輸入模式、下拉模式;PE3設置為GPIO輸入模式、上拉模式
?? 激活DAC_OUT1,關閉輸出緩沖,不使用觸發功能


??輸入工程名,選擇路徑(不要有中文),選擇MDK-ARM V5;勾選Generated periphera initialization as a pair of ‘.c/.h’ files per IP ;點擊GENERATE CODE,生成工程代碼


3.2 MDK-ARM軟件編程

?? 在dac.c文件中可以看到DAC初始化相關函數


void MX_DAC_Init(void){

  DAC_ChannelConfTypeDef sConfig = {0};

  /** DAC Initialization */

  hdac.Instance = DAC;

  if (HAL_DAC_Init(&hdac) != HAL_OK){

    Error_Handler();

  }

  /** DAC channel OUT1 config */

  sConfig.DAC_Trigger = DAC_TRIGGER_NONE; //不使用觸發功能

  sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_DISABLE; //輸出緩沖關閉

  if (HAL_DAC_ConfigChannel(&hdac, &sConfig, DAC_CHANNEL_1) != HAL_OK){

    Error_Handler();

  }

}


void HAL_DAC_MspInit(DAC_HandleTypeDef* dacHandle){

  GPIO_InitTypeDef GPIO_InitStruct = {0};

  if(dacHandle->Instance==DAC)  {

  /* DAC clock enable */

  __HAL_RCC_DAC_CLK_ENABLE(); //使能DAC時鐘

  __HAL_RCC_GPIOA_CLK_ENABLE();

  GPIO_InitStruct.Pin = GPIO_PIN_4;

  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;    //模擬

  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  }

}


?? 添加按鍵驅動文件key.c 和相關頭文件key.h,參考按鍵輸入例程

?? 在main.c文件下編寫DAC測試代碼


int main(void){

  /* USER CODE BEGIN 1 */

  uint16_t dac_val; //讀取的DAC值

  float dac_vol; //轉換后的電壓值

  uint8_t t = 0;

  uint16_t dac_setval = 0; //DAC設置值

  uint8_t key;

  /* USER CODE END 1 */

  HAL_Init();

  SystemClock_Config();

  MX_GPIO_Init();

  MX_DAC_Init();

  MX_USART1_UART_Init();

  /* USER CODE BEGIN 2 */

  HAL_DAC_Start(&hdac,DAC_CHANNEL_1); //開啟DAC通道1

  HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_12B_R,0);//置初始值為0

  /* USER CODE END 2 */

  while (1){

    t++;

    key = KEY_Scan(0);

    if(key == KEY_UP_PRES){

      if(dac_setval < 4000)

      dac_setval += 200;

      HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_12B_R,dac_setval);

    }

    else if(key == KEY_DOWN_PRES){

      if(dac_setval > 200)

dac_setval -= 200;

      else

dac_setval = 0;

      HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_12B_R,dac_setval);

    }

    /按鍵按下了或定時時間到

    if(t == 10 || key == KEY_UP_PRES || key == KEY_DOWN_PRES){ /

      dac_val = HAL_DAC_GetValue(&hdac,DAC_CHANNEL_1);

      printf("DAC_OUT1 DAC value: %drn",dac_val);

      dac_vol = dac_val * (3.3/4096);

      printf("DAC_OUT1 VOL value: %.2fVrn",dac_vol);

      printf("rn");

      t = 0;

    }

    HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_0);

    HAL_Delay(100);

  }

}


4.下載驗證

圖片

編譯無誤后下載到開發板,可用看到D1指示燈不斷閃爍,同時打印出DAC通道1的DAC值和電壓值,當按下K_UP按鍵輸出電壓增大,按下K_DOWN按鍵輸出電壓減小

關鍵字:STM32CubeMX  DAC  數模轉換 引用地址:玩轉STM32CubeMX | DAC數模轉換

上一篇:玩轉STM32CubeMX | SPI總線
下一篇:玩轉STM32CubeMX | 跑馬燈

推薦閱讀

據外媒報道,近日,特斯拉(Tesla)又向有關部門申請了一項新專利,該專利跟自動轉向燈有關。令人驚訝的是,該技術實際并不適用于自動駕駛汽車,而適用于忘記或是不使用轉向燈的駕駛員。大家或多或少都會發生過忘記使用或不使用轉向燈的情況。經常有車在不打轉向燈的情況下,轉入他人車道,或是有人不打轉向燈就突然減速從高速路口出去。該情況不僅很討厭...
如今,“收快遞”已經成為人們日常生活不可或缺的一部分,根據中國智慧物流研究院報告顯示,自2017年5月以來,全國快遞服務企業日均快遞業務量超過1億件,標志著我國已經常態化進入單日快遞“億件時代”。在快遞業務配送單量、外賣頻次與日俱增的情況下,消費者對于配送速度、服務質量等個性化的需求越來越高。尤其在快遞業務旺季,劇增的訂單業務往往導致...
  近年不少汽車陸續加入自動輔助駕駛系統,希望藉此為一眾車主在駕駛時提供更多選擇。不過近日美國汽車協會 (AAA) 在進行的一項研究中發現,部分配備駕駛輔助系統的汽車在啟動功能后的表現并不一致,甚至潛在一定的危險性,平均每 13 公里就遇到一次問題。  美國汽車協會在日前就目前市面上配備了駕駛輔助系統的車輛進行測試,以試圖測試可控制...
在觀察具有毛刺的波形時,按下ZDS2022示波器操作面板上的【Persist】按鍵,就可以一鍵打開無限余輝功能,這時候在屏幕上可以觀察所有毛刺的歷史軌跡。如果我們想要把某一個毛刺的波形單獨抓出來觀察特征,模板觸發肯定是你理想的選擇。圖1 無限余輝模式下的波形模板觸發功能的開啟非常簡便。圖2 調整模板窗口的位置和大小首先,按下操作面板上的【Trigge...

史海拾趣

問答坊 | AI 解惑

具備無線通訊的三相多功能電能表設計方案

隨著經濟體制改革的深入,在市場的推動下,數字電能表發展迅猛,中國目前已成為世界電能計量行業最具有活力的市場。隨著用戶用電負荷的增加,供電質量的要求也越來越高,供電部門需要了解電網質量和用戶的各種用電參數,如功率、電壓、電流、頻率 ...…

查看全部問答∨

給一個人鬧的鬧鐘

我跟老婆睡在同的房間....(好像是廢話.... ) 但是想起床的時間是不同的 我想 8:30 起床 但是老婆想睡到飽才起床 所以每當 8:30的鬧鐘響起 我就會被罵了 ,我苦她也苦啊。。。。。。。。。。。。。 看到有那么多專治鬧不醒的鬧鐘。為何沒有 ...…

查看全部問答∨

LED恒壓恒流求助

小弟最近在做LED,副邊控制用的是BCD的ap4313,是一款恒壓恒流芯片 恒壓當然是通過Bandgap的分壓,恒流當然是通過選擇限流電阻,這些都不廢話 我好奇的是:它個兩個運放的輸出是接一起的,應該只有一個運放工作, 那么是否有檢測電路,讓它先恒 ...…

查看全部問答∨

VxWorks下使用USB攝像頭問題

我注冊了應用程序,調用usbdDynamicAttachRegister(),用USBD_NOTIFY_ALL作為參數,運行時插入攝像頭沒有反應,而插入USB鍵盤則有顯示,能正確顯示設備類型、次類型、協議等信息。這是什么原因呢? 例外我想重新編譯usb的源文件,就是target/src/u ...…

查看全部問答∨

省電!看藍牙4.0掀新一輪無線革命

    在藍牙4.0出生之前,如果把鈕扣電池安裝在無線技術上,它只能用不到一個月。而現在,你可用一到兩年。     設想,你可以一邊跑步,一邊用藍牙耳機在MP3中聽音樂。同時,你的心率信息也可以通過這個設備自動傳 ...…

查看全部問答∨

視頻演示:改編德州儀器eZ430-Chronos無線運動手表為具釣魚輔助功能

這兩天發現6月份月度獎里有我,主要是因為這個帖子:我改的EZ430-Chronos無線釣魚運動手表初步功能算是按計劃都實現了因為當時只是上了張圖片,寫的也簡單,所以現在拍了個視頻,還是有點啰嗦,感興趣的湊合看看吧,也不重拍了。不多介紹一下感覺有 ...…

查看全部問答∨

大家有誰完全了解狀態機在單片機編程的實際應用價值

最近在做實驗項目,做了一個出來了后,我們老師開始讓我用狀態機的方法來寫,可是我看了很多資料,還是對狀態機不是太了解,算是似懂非懂吧? 那位大蝦懂都的話,請給小弟指點一二吧!!!…

查看全部問答∨

RTSP/RTP和live555通信詳解,搭建流媒體服務器

replyreload += \',\' + 1624542; 本帖最后由 37°男人 于 2014-1-19 11:03 編輯 1、從下圖可以發現,rtsp是基于tcp可靠連接,而rtp是基于udp不可靠連接,所以在創建網絡socket的時候需要分別經行創建。 2、創建rtsp網絡連接sfd = socket(A ...…

查看全部問答∨

CMEMS,誰吃過這個螃蟹?

有用過Silicon Labs的CMEMS振蕩器嗎?性能如何啊?感覺是個新事物啊,誰吃過這個螃蟹?呵呵~ 今天深圳世強的幾個筒子到公司來推他們的振蕩器,我們智能穿戴設備用的方案其實就是世強提供的Silicon Labs的MCU(成本、功耗優勢非常突出,通用M0內核 ...…

查看全部問答∨

單片機關于enum的討論

enum枚舉型可以替?#define的作用,但是在編譯一下程序的時候就出現錯誤不知道什么原因? enum KER_SWITCH {      KEY1 =    0x00010,           KEY2 =    ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 平舆县| 布拖县| 策勒县| 巴林左旗| 太仆寺旗| 秦安县| 商水县| 柘城县| 安多县| 乐都县| 高邮市| 革吉县| 南京市| 安阳县| 尼勒克县| 永泰县| 乐至县| 山阴县| 栾川县| 吉隆县| 辽中县| 安阳县| 福鼎市| 琼海市| 拉萨市| 健康| 安达市| 阳信县| 万山特区| 太仆寺旗| 道真| 陈巴尔虎旗| 晋州市| 丹阳市| 南和县| 伊金霍洛旗| 翼城县| 友谊县| 阿拉善盟| 科技| 江城|