STM32H743+CubeMX-ADC+DMA采样四路AD
文章目錄
- 一、前言
- 二、CubeMX
- 2.1、Clock Configuration
- 2.2、CORTEX_M7(cache與MPU)
- 2.3、ADC3 Mode and Configuration
- 2.4、Parameter Settings
- 2.5、DMA Settings
- 2.6、GPIO settings
- 三、STM32H743IITX_FLASH.ld
- 四、代碼
- 4.1、adc.c
- 4.2、main.c
- 4.3、freertos.c
- 五、硬件接線
- 六、DEBUG
- 七、細(xì)節(jié)補充
- 7.1、在HAL_ADCEx_Calibration_Start()之前添加HAL_Delay
相關(guān)筆記:
STM32H743+CubeMX-梳理MPU的設(shè)置
STM32H743-梳理ADC模數(shù)轉(zhuǎn)換器在CubeMX上的配置
一、前言
在實際項目上,ADC采樣必須與DMA組合使用,實現(xiàn)并行采樣。這里的“并行采樣”并不是多個通道同時采樣,而是ADC控制器一邊采樣,CPU一邊干其他非常重要的活。當(dāng)CPU在需要ADC采樣的數(shù)據(jù)時,通過cache獲取內(nèi)存里模擬量的值即可。這個筆記實現(xiàn)ADC3+DMA采樣四路模擬量,其中三路從CPU外部獲取,另外一路從CPU內(nèi)部獲取(CPU的溫度)。
系統(tǒng)框圖如下(從右到左):
二、CubeMX
2.1、Clock Configuration
ADC的時鐘源設(shè)置72M,這個時鐘模板最多人使用。
2.2、CORTEX_M7(cache與MPU)
這一次ADC+DMA模擬量采樣使用的是RAM_D3內(nèi)存(AHB SRAM(D3域) ),即MPU管理的第二塊內(nèi)存。MPU管理的第一塊內(nèi)存AXI SRAM不配置也沒關(guān)系,這個配置是前面研究MPU時所留下來的配置。
2.3、ADC3 Mode and Configuration
使能4個通道。
2.4、Parameter Settings
各個參數(shù)的說明,參考筆記:STM32H743+CubeMX-梳理MPU的設(shè)置
2.5、DMA Settings
經(jīng)過測試,Data Width使用Word也可以。Data Width改用Word的話,代碼里的變量大小,HAL庫參數(shù)也要跟著改動。
2.6、GPIO settings
三、STM32H743IITX_FLASH.ld
將全局?jǐn)?shù)組ADC_Data[4]定義到內(nèi)存RAM_D3域。參考筆記:STM32H743+CubeMX-將變量定義到指定的內(nèi)存
首先確認(rèn)芯片的內(nèi)存架構(gòu),找到所需的內(nèi)存名字。
用戶定義一段內(nèi)存_D3_Area。芯片的SRAM需要定義一個名字后才能使用,我嘗試過跳開這一個步驟,結(jié)果失敗了。
四、代碼
4.1、adc.c
全局?jǐn)?shù)組ADC3_Date[4]放在內(nèi)存RAM_D3,全局變量adc_f[4]放在默認(rèn)的DTCM內(nèi)存。
在函數(shù)void MX_ADC3_Init(void)的用戶代碼段編寫代碼,使用HAL庫校準(zhǔn)ADC。
在文件最下方,編寫函數(shù),用戶將模擬量的值轉(zhuǎn)換成電壓值與溫度值。
4.2、main.c
聲明外部變量。
啟動ADC+DMA采樣。
4.3、freertos.c
在freertos的一個任務(wù)里調(diào)用剛才編寫的轉(zhuǎn)換函數(shù)。這個任務(wù)很簡單,每隔300ms獲取一次模擬量的值。
五、硬件接線
- PH5直接連接到板子的3.3V。
- PF4直接連接到板子的GND(0V)。
- PF3連接到安富萊設(shè)計的H7-TOOL的模擬量輸出通道上。(我讓它輸出約2.4V)
六、DEBUG
將剛才的兩個全局變量添加到STM32CubeIDE的現(xiàn)場表達(dá)式上,實時觀察變量的值。
- adc_f[0]采樣的是PF3的值,非常接近H7-TOOL輸出的2.41V。采樣到的數(shù)值與實際的值不完全相等,因為模擬量采樣都是有誤差的。
- adc_f[1]采樣的是PF4的值,這個通道直接連接到板子的GND,所以非常接近0V。
- adc_f[2]采樣的是PH5的值,這個通道直接連接到板子的3.3V,所以非常接近3.3V。
- adc_f[3]采樣的是內(nèi)部CPU的溫度,經(jīng)過官方提供的公式,轉(zhuǎn)換后得到約45℃。
七、細(xì)節(jié)補充
7.1、在HAL_ADCEx_Calibration_Start()之前添加HAL_Delay
有一些網(wǎng)友說,在某些板子上電時,電容正在充電,最好在HAL_ADCEx_Calibration_Start()之前延時一會會,等待電容充滿電,板子的3.3V電源網(wǎng)絡(luò)穩(wěn)定后再執(zhí)行HAL_ADCEx_Calibration_Start()。
總結(jié)
以上是生活随笔為你收集整理的STM32H743+CubeMX-ADC+DMA采样四路AD的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 远程计算机怎么安装软件安装,轻松一步把电
- 下一篇: 华师大数据科学考研_21考研择校 | 华