chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MindSDK應(yīng)用基礎(chǔ)—ADC模塊樣例

靈動(dòng)MM32MCU ? 來(lái)源:靈動(dòng)MM32MCU ? 2023-08-17 17:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

引言

MindSDK為MM32主流的微控制器,實(shí)現(xiàn)了一組ADC樣例工程。本文通過(guò)講解ADC模塊的樣例工程,介紹ADC模塊的功能和用法。關(guān)于ADC模塊對(duì)應(yīng)的驅(qū)動(dòng)程序,以及ADC外設(shè)模塊硬件的實(shí)現(xiàn)細(xì)節(jié),可具體查閱MindSDK工程的源文件,以及MM32微控制器(例如MM32F5270)的用戶手冊(cè)。

樣例工程

MindSDK中為ADC驅(qū)動(dòng)設(shè)計(jì)的樣例工程包括:

adc_basic

adc_interrupt

adc_dma

adc_seq

adc_fixed_seq

adc_ext_seq

adc_awdg

adc_oversample

adc_sw_write_calib

其中, adc_baic 、 adc_interrupt 、 adc_dma 分別演示了ADC最典型的功能,包括通過(guò)輪詢、中斷、DMA來(lái)獲取一個(gè)ADC轉(zhuǎn)換通道的轉(zhuǎn)換結(jié)果。adc_awdg 來(lái)展現(xiàn)ADC模擬看門狗的功能, adc_seq 、 adc_fixed_seq 、 adc_ext_seq 則展現(xiàn)ADC按照不同的轉(zhuǎn)換序列來(lái)進(jìn)行轉(zhuǎn)換。還有一些用于特殊場(chǎng)景的功能,例如通過(guò)軟件寫入校準(zhǔn)值,以及硬件實(shí)現(xiàn)的多次采樣取平均值、基本濾波等。

adc_basic

adc_basic 描述了使用ADC模塊最基本的方式,通過(guò)輪詢方式對(duì)一個(gè)通道進(jìn)行轉(zhuǎn)換,并獲取通道的轉(zhuǎn)換值。在樣例工程中,通過(guò) ADC_Init() 函數(shù),配置ADC數(shù)據(jù)有效數(shù)據(jù)位 ADC_Resolution_Alt0 ,ADC的轉(zhuǎn)換模式為單通道單次轉(zhuǎn)換模式 ADC_ConvMode_SingleSlot 、轉(zhuǎn)換數(shù)據(jù)對(duì)其方式為右對(duì)齊 ADC_Align_Right 、通道轉(zhuǎn)化結(jié)果通過(guò)單端轉(zhuǎn)換方式,將通道與ADC內(nèi)部參考電壓VREF的差數(shù)字量化后輸出 ADC_SingleDiffConvMode_SingleEnd 、配置單端轉(zhuǎn)換方式的參考電壓為內(nèi)部參考電壓 ADC_SingleConvVref_Internal ,配置待轉(zhuǎn)換通道的序列和每個(gè)轉(zhuǎn)換通道的采樣周期。之后,每次通過(guò) ADC_DoSwTrigger() 函數(shù),使用軟件觸發(fā)的方式啟動(dòng)ADC轉(zhuǎn)換。

實(shí)際運(yùn)行程序時(shí),用戶在串口調(diào)試終端中每次輸入任意字符,改變轉(zhuǎn)換通道的輸入電壓,會(huì)看到串口終端界面對(duì)應(yīng)數(shù)值的變化。

adc_interrupt

adc_interrupt 相對(duì)于 adc_basic 樣例工程,實(shí)現(xiàn)了ADC轉(zhuǎn)換完成后觸發(fā)中斷服務(wù),在中斷服務(wù)中獲取轉(zhuǎn)換值的用法。

其實(shí)現(xiàn)原理,是在 adc_basic 的配置的基礎(chǔ)上,通過(guò) ADC_EnableInterrupts() 函數(shù)和 NVIC_EnableIRQ()函數(shù)開(kāi)啟ADC的中斷。當(dāng)ADC轉(zhuǎn)換通道完成轉(zhuǎn)換后,就進(jìn)入中斷服務(wù)函數(shù)。

實(shí)際運(yùn)行程序時(shí),用戶在串口調(diào)試終端每次輸入任意字符,改變轉(zhuǎn)換通道的輸入電壓,會(huì)看到串口終端界面對(duì)應(yīng)數(shù)值的變化。

adc_dma

adc_dma 在 adc_basic 的基礎(chǔ)上增加對(duì)DMA外設(shè)模塊的使用。在應(yīng)用層 app_adc_init() 函數(shù)中添加對(duì)DMA通道的配置,通過(guò) DMA_InitChannel() 函數(shù), DMA_XferMode_PeriphToMemory 配置傳輸方向?yàn)橥庠O(shè)到內(nèi)存、 MemAddr 和 PeriphAddr 配置內(nèi)存和外設(shè)地址、 MemAddrIncMode 和 PeriphAddrIncMode 配置內(nèi)存和外設(shè)的增量模式、 XferCount 傳輸?shù)臄?shù)據(jù)量、 DMA_ReloadMode_AutoReloadContinuous 自動(dòng)重載傳輸量、 DMA_XferWidth_32b 以32位的數(shù)據(jù)進(jìn)行傳輸。外設(shè)映射的DMA通道初始配置完成后,通過(guò) DMA_EnableChannel() 函數(shù)使能DMA通道,通過(guò) NVIC_EnableIRQ() 和 DMA_EnableChannelInterrupts() 函數(shù)開(kāi)啟DMA中斷。之后,每次通過(guò) ADC_DoSwTrigger() 函數(shù)觸發(fā)ADC開(kāi)始轉(zhuǎn)換,當(dāng)轉(zhuǎn)換完成后DMA開(kāi)始搬運(yùn),當(dāng)DMA搬運(yùn)完成后進(jìn)入中斷服務(wù)函數(shù),以此循環(huán)往復(fù)。

實(shí)際運(yùn)行程序時(shí),用戶在串口調(diào)試終端中每次輸入任意字符,改變轉(zhuǎn)換通道的輸入電壓,會(huì)看到串口終端界面對(duì)應(yīng)數(shù)值的變化。

adc_fixed_seq

adc_fixed_seq 在 adc_dma 樣例的基礎(chǔ)上,將轉(zhuǎn)換的ADC通道由一個(gè)通道,設(shè)置為多個(gè)通道形成一個(gè)序列來(lái)進(jìn)行轉(zhuǎn)換,當(dāng)序列轉(zhuǎn)換完成后,就停止轉(zhuǎn)換。通過(guò) ADC_EnableSeqSlotFixed() 函數(shù)來(lái)配置轉(zhuǎn)換序列的順序?yàn)橛械偷礁叩捻樞蜻M(jìn)行轉(zhuǎn)換。DMA將ADC每個(gè)通道數(shù)據(jù)搬運(yùn)到指定內(nèi)存。通過(guò)在循環(huán)中調(diào)用 ADC_DoSwTrigger() 函數(shù)來(lái)進(jìn)行一個(gè)序列的多次轉(zhuǎn)換?;蛘咄ㄟ^(guò) ADC_ConvMode_SeqContinues 啟用序列的連續(xù)轉(zhuǎn)換模式。通過(guò) ADC_DoSwTrigger() 函數(shù)可以停止序列轉(zhuǎn)換。

實(shí)際運(yùn)行程序時(shí),用戶在串口調(diào)試終端中每次輸入任意字符,改變配置的轉(zhuǎn)換序列中每個(gè)通道的輸入電壓值,會(huì)看到串口調(diào)試終端界面對(duì)應(yīng)數(shù)值變化。

adc_seq

adc_seq 與 adc_fixed_seq 樣例的不同之處在于, adc_fixed_seq 樣例只能實(shí)現(xiàn)一個(gè)由高到低或者由低到的通道轉(zhuǎn)換序列進(jìn)行轉(zhuǎn)換,例如ch0-ch1-ch3或者ch3-ch1-ch0的轉(zhuǎn)換順序。adc_seq 樣例則實(shí)現(xiàn)任意通道序列的轉(zhuǎn)換,例如ch3-ch0-ch5,任意的序列。通過(guò)ADC_EnableSeqSlot () 函數(shù)配置具體的轉(zhuǎn)換序列。ADC根據(jù)配置的轉(zhuǎn)換序列開(kāi)始進(jìn)行轉(zhuǎn)換。當(dāng)序列轉(zhuǎn)換完成后,停止轉(zhuǎn)換??梢灾貜?fù)的調(diào)用 ADC_DoSwTrigger() 開(kāi)啟下一個(gè)序列的轉(zhuǎn)換,一次循環(huán)往復(fù)?;蛘咄ㄟ^(guò) ADC_ConvMode_SeqContinues 啟用序列的連續(xù)轉(zhuǎn)換模式。通過(guò) ADC_DoSwTrigger() 函數(shù)可以停止序列轉(zhuǎn)換。

實(shí)際運(yùn)行程序時(shí),用戶在串口調(diào)試終端中每次輸入任意字符,改變轉(zhuǎn)換通道的輸入電壓,會(huì)看到串口終端界面對(duì)應(yīng)數(shù)值的變化。

adc_ext_seq

adc_ext_seq 實(shí)現(xiàn)在當(dāng)前任意序列轉(zhuǎn)換過(guò)程中插入額外的序列,當(dāng)插入額外的序列時(shí),當(dāng)前任意序列中正在轉(zhuǎn)換的通道完成,將切換到插入的序列中進(jìn)行轉(zhuǎn)換,當(dāng)轉(zhuǎn)換完成后在繼續(xù)之前任意序列中剩余通道的轉(zhuǎn)換。通過(guò) ADC_EnableExtSeqSlot() 函數(shù)配置額外的序列。例如當(dāng)前任意序列為ch3-ch0-ch5,額外的序列為ch1-ch4。ADC_EnableAutoExtSeqSlot() 函數(shù)開(kāi)啟自動(dòng)注入模式,即任意序列轉(zhuǎn)換完成后,開(kāi)啟注入通道的轉(zhuǎn)換,轉(zhuǎn)換額外的序列。這種注入模式增加了整個(gè)序列的長(zhǎng)度。當(dāng)一個(gè)完整序列轉(zhuǎn)換完成后,停止轉(zhuǎn)換,調(diào)用 ADC_DoSwTrigger() 函數(shù)來(lái)進(jìn)行一個(gè)序列的多次轉(zhuǎn)換?;蛘咄ㄟ^(guò) ADC_ConvMode_SeqContinues 啟用序列的連續(xù)轉(zhuǎn)換模式。通過(guò) ADC_DoSwTrigger() 函數(shù)可以停止序列轉(zhuǎn)換。

實(shí)際運(yùn)行時(shí),用戶在串口調(diào)試終端中每次輸入任意字符,改變轉(zhuǎn)換通道的輸入電壓,會(huì)看到串口終端界面對(duì)應(yīng)數(shù)值的變化。

adc_awdg

adc_awdg 在 adc_basic 的基礎(chǔ)上增加對(duì)轉(zhuǎn)換結(jié)果進(jìn)行監(jiān)控,通過(guò) ADC_EnableHwComp() 函數(shù)配置需要監(jiān)控的轉(zhuǎn)換通道 ChnNum 、設(shè)置的上限值 HighLimit 和下限值 LowLimit ,可以根據(jù)上限值和下限值的大小關(guān)系設(shè)置監(jiān)控范圍,當(dāng)上限值大于或等于下限值時(shí),監(jiān)控通道的轉(zhuǎn)換值在兩個(gè)閾值之外的數(shù)值,若開(kāi)啟中斷則會(huì)進(jìn)入中斷服務(wù)函數(shù);同理,當(dāng)上限值小于下限值時(shí),監(jiān)控通道轉(zhuǎn)換值在兩個(gè)閾值之間的數(shù)值,若開(kāi)啟中斷則會(huì)進(jìn)入中斷服務(wù)函數(shù)。之后,每次通過(guò) ADC_DoSwTrigger() 函數(shù),使用軟件觸發(fā)的方式啟動(dòng)ADC轉(zhuǎn)換。

實(shí)際運(yùn)行時(shí),用戶在串口調(diào)試終端中每次輸入任意字符,改變轉(zhuǎn)換通道的輸入電壓,當(dāng)電壓值滿足監(jiān)控區(qū)間時(shí),會(huì)看到串口終端界面當(dāng)前轉(zhuǎn)換數(shù)據(jù)。

adc_oversample

adc_oversample 在 adc_seq 的基礎(chǔ)上通過(guò) ADC_SetOverSample()`函數(shù)啟動(dòng)硬件的過(guò)采樣模式, ADC_OverSampleRatio_256 配置過(guò)采樣率為256, ADC_OverSampleDataDiv_8 配置數(shù)據(jù)右移8位, ADC_OverSampleTriggerMode_Multi 配置為所有通道的過(guò)采樣轉(zhuǎn)換只需要進(jìn)行一次觸發(fā)。injectOverSampleMode 配置是否開(kāi)啟注入通道的過(guò)采樣模式。之后,每次通過(guò) ADC_DoSwTrigger() 函數(shù),使用軟件觸發(fā)的方式啟動(dòng)ADC轉(zhuǎn)換。

adc_sw_write_calib

adc_sw_write_calib 在 adc_basic 的基礎(chǔ)上實(shí)現(xiàn)使用軟件保存ADC的校準(zhǔn)值,然后通過(guò)軟件將校準(zhǔn)值寫入寄存器中。通過(guò) ADC_GetCalibFactor() 函數(shù)獲取校準(zhǔn)值,通過(guò) ADC_SetCalibFactor() 來(lái)寫入校準(zhǔn)值。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7953

    瀏覽量

    155125
  • 濾波器
    +關(guān)注

    關(guān)注

    162

    文章

    8138

    瀏覽量

    182106
  • 串口中斷
    +關(guān)注

    關(guān)注

    0

    文章

    67

    瀏覽量

    14344
  • ADC轉(zhuǎn)換器
    +關(guān)注

    關(guān)注

    1

    文章

    28

    瀏覽量

    8515
  • ADC模塊
    +關(guān)注

    關(guān)注

    1

    文章

    19

    瀏覽量

    11245

原文標(biāo)題:靈動(dòng)微課堂 (第268講)|MindSDK應(yīng)用基礎(chǔ)——ADC模塊樣例

文章出處:【微信號(hào):MindMotion-MMCU,微信公眾號(hào):靈動(dòng)MM32MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    關(guān)于cc2541程序代碼

    CC2541哪里有cc2541的模數(shù)轉(zhuǎn)換模塊和藍(lán)牙模塊的程序代碼呀?初學(xué)不懂
    發(fā)表于 01-20 07:14

    FRDM-KL02_Mini-Dock

    kl02代碼、以及驅(qū)動(dòng)模塊等介紹。
    發(fā)表于 10-29 15:47

    Hardware Semaphore 2 工程

    介紹了Hardware Semaphore 2的使用方法以及工作模式(Direct和Indirect),本工程基于CCSv4,可在C6678EVM板上運(yùn)行,內(nèi)附模塊介紹以及代碼流程的PPT文件。
    發(fā)表于 06-21 14:21

    STM32多個(gè)ADC模塊同時(shí)采樣轉(zhuǎn)換的應(yīng)用示例

    STM32多個(gè)ADC模塊同時(shí)采樣轉(zhuǎn)換的應(yīng)用示例(深圳市普德新星電源技術(shù)有限公司怎么)-本文重點(diǎn)介紹利用含有3個(gè)ADC模塊的STM32F4、
    發(fā)表于 08-04 18:47 ?67次下載
    STM32多個(gè)<b class='flag-5'>ADC</b><b class='flag-5'>模塊</b>同時(shí)采樣轉(zhuǎn)換的應(yīng)用示例

    MindSDK概述、使用方法及應(yīng)用案例

    MindSDK(mm32-mcu-sdk)是由靈動(dòng)官方的軟件團(tuán)隊(duì)開(kāi)發(fā)和維護(hù)的基于靈動(dòng)微控制器的軟件開(kāi)發(fā)平臺(tái)。
    的頭像 發(fā)表于 08-12 09:10 ?1925次閱讀

    基于OpenHarmony開(kāi)發(fā)的步驟

    單絲不成線,獨(dú)木不成林,一個(gè)社區(qū)想要健康蓬勃發(fā)展離不開(kāi)社區(qū)參與者的持續(xù)貢獻(xiàn)。而社區(qū)貢獻(xiàn)點(diǎn)有很多種,本文以貢獻(xiàn)OpenAtom OpenHarmony(以下簡(jiǎn)稱“OpenHarmony”)開(kāi)發(fā),圍繞以下5個(gè)問(wèn)題,帶大家了解
    的頭像 發(fā)表于 09-20 10:30 ?1731次閱讀

    31107液晶C語(yǔ)言編程

    31107液晶 C語(yǔ)言編程
    發(fā)表于 10-17 15:17 ?4次下載

    PCF8563時(shí)鐘芯片 C語(yǔ)言編程

    PCF8563 時(shí)鐘芯片 C語(yǔ)言編程
    發(fā)表于 10-17 14:46 ?32次下載

    AUTOSAR MCAL-基于Infineon TC3xx芯片的ADC模塊

    ADC模塊了,由于最近開(kāi)始使用Infineon TC3xx芯片,在配置ADC模塊的時(shí)候發(fā)現(xiàn)ADC模塊
    的頭像 發(fā)表于 01-29 16:45 ?1.1w次閱讀

    MindSDK搭建Keil MDK開(kāi)發(fā)環(huán)境

    本文介紹基于Windows操作系統(tǒng)構(gòu)建嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境過(guò)程中需要使用的主要軟件Keil MDK,并對(duì)一些需要特別關(guān)注的要點(diǎn)重點(diǎn)說(shuō)明。Keil MDK是靈動(dòng)官方的軟件開(kāi)發(fā)平臺(tái)MindSDK支持的主要編譯工具之一。
    的頭像 發(fā)表于 05-04 10:42 ?2092次閱讀
    為<b class='flag-5'>MindSDK</b>搭建Keil MDK開(kāi)發(fā)環(huán)境

    MindSDK中FlexCAN驅(qū)動(dòng)程序及工程

    和MM32F0140微控制器,其中就有FlexCAN外設(shè)模塊的驅(qū)動(dòng)程序以及工程,以及對(duì)CAN總線通信協(xié)議CANopen的適配工程。本文將介紹MindSDK中FlexCAN驅(qū)動(dòng)程序及
    的頭像 發(fā)表于 06-23 15:41 ?1770次閱讀
    <b class='flag-5'>MindSDK</b>中FlexCAN驅(qū)動(dòng)程序及<b class='flag-5'>樣</b><b class='flag-5'>例</b>工程

    MindSDK應(yīng)用基礎(chǔ)—TIM模塊

    MindSDK為MM32使用星辰處理器內(nèi)核的系列微控制器,實(shí)現(xiàn)了一組TIM工程,MindSDK中的TIM模塊對(duì)應(yīng)硬件定時(shí)器TIM外設(shè)。
    的頭像 發(fā)表于 06-29 17:16 ?1222次閱讀

    MindSDK為MM32實(shí)現(xiàn)了一組TIM工程

    MindSDK為MM32使用星辰處理器內(nèi)核的系列微控制器,實(shí)現(xiàn)了一組TIM工程,MindSDK中的TIM模塊對(duì)應(yīng)硬件定時(shí)器TIM外設(shè)。
    的頭像 發(fā)表于 06-30 17:32 ?1137次閱讀

    MindSDK應(yīng)用基礎(chǔ)—SPI模塊簡(jiǎn)介

    MindSDK為MM32主流的微控制器,實(shí)現(xiàn)了一系列SPI驅(qū)動(dòng)的工程。本文通過(guò)講解 SPI 模塊
    的頭像 發(fā)表于 08-10 17:14 ?1340次閱讀

    MindSDK應(yīng)用基礎(chǔ)——TIM模塊

    MindSDK應(yīng)用基礎(chǔ)——TIM模塊
    的頭像 發(fā)表于 10-25 16:25 ?914次閱讀