女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于CH32V103系列MCU的ADC采樣設計

CHANBAEK ? 來源:CSDN-借過風景 ? 作者:CSDN-借過風景 ? 2023-01-31 14:21 ? 次閱讀

簡介

CH32V103系列是以青稞V3A處理器為核心的32位通用RISC-V MCU,該處理器是基于RISC-V開源指令集設計。片上集成了時鐘安全機制、多級電源管理、通用DMA控制器。此系列具有1路USB2.0主機/設備接口、多通道12位ADC轉換模塊、多通道TouchKey、多組定時器、多路IIC/USART/SPI接口等豐富的外設資源。

本章教程使用CH32V103開發板的ADC1通道1對開發板的VCC引腳和GND引腳進行采樣,并將采樣結果通過串口調試助手打印顯示。

1、ADC及相關函數介紹

CH32V103的ADC模塊包含一個 12 位的逐次逼近型的模擬數字轉換器,最高14MHz的輸入時鐘。支持16個外部通道和2個內部信號源采樣源。可完成通道的單次轉換、連續轉換,通道間自動掃描模式、間斷模式、外部觸發模式等功能。可以通過模擬看門狗功能監測通道電壓是否在閾值范圍內。

關于ADC具體信息,可參考CH32V103應用手冊。ADC標準庫函數具體內容如下:

pYYBAGPYsp-AeiZbAAJBYCGU66k200.png

1.1、void ADC_DeInit(ADC_TypeDef* ADCx)

功 能:將ADCx外圍寄存器初始化為其默認重置值。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備。

1.2、void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct)

功 能:根據ADC_InitStruct中指定的參數初始化ADCx外圍設備。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;ADC_InitStruct:指向包含指定ADC外圍設備的配置信息的ADC_InitTypeDef結構的指針。

1.3、void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct)

功 能:用默認值填充每個ADC_InitStruct成員。

輸 入:ADC_InitStruct:指向包含指定ADC外圍設備的配置信息的ADC_InitTypeDef結構的指針。

1.4、無效ADC_Cmd(ADC_TypeDef* ADCx,函數狀態新狀態)

功 能:啟用或禁用指定的ADC外圍設備。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備; NewState:啟用或禁用。

1.5、無效ADC_DMACmd(ADC_TypeDef* ADCx,功能狀態新狀態)

功 能:啟用或禁用指定的ADC DMA請求。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備; NewState:啟用或禁用。

1.6、無效ADC_ITConfig(ADC_TypeDef* ADCx, uint16_t ADC_IT, FunctionalState NewState)

功 能:啟用或禁用指定的ADC中斷。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備; ADC_IT:指定要啟用或禁用的ADC中斷源。 NewState:啟用或禁用。

1.7、無效ADC_ResetCalibration(ADC_TypeDef* ADCx)

功 能:重置所選ADC校準寄存器。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備。

1.8、標志狀態ADC_GetResetCalibrationStatus(ADC_TypeDef* ADCx)

功 能:獲取所選ADC重置校準寄存器狀態。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備。

1.9、無效ADC_StartCalibration(ADC_TypeDef* ADCx)

功 能:啟動所選ADC校準過程。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備。

1.10、標志狀態ADC_GetCalibrationStatus(ADC_TypeDef* ADCx)

功 能:獲取所選ADC校準狀態。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備。

1.11、無效ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx,函數狀態新狀態)

功 能:啟用或禁用所選ADC軟件啟動轉換。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備; NewState:啟用或禁用。

1.12、FlagStatus ADC_GetSoftwareStartConvStatus(ADC_TypeDef* ADCx)

功 能:獲取所選ADC軟件開始轉換狀態。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備。

1.13、void ADC_DiscModeChannelCountConfig(ADC_TypeDef* ADCx, uint8_t Number)

功 能:為所選ADC常規組通道配置不連續模式。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;Number:指定不連續模式常規通道計數值。

1.14、void ADC_DiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState)

功 能:為指定的ADC啟用或禁用常規組通道上的不連續模式。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;NewState:啟用或禁用。

1.15、void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime)

功 能:為所選ADC常規通道配置其在序列器中的相應列組及其采樣時間。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;ADC_Channel:要配置的ADC信道;Rank:常規組序列器中的等級;ADC_SampleTime:要為所選通道設置的采樣時間值。

1.16、void ADC_ExternalTrigConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState)

功 能:通過外部觸發器啟用或禁用ADCx轉換。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;NewState:啟用或禁用。

1.17、uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx)

功 能:返回常規通道的最后一個ADCx轉換結果數據。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備。

1.18、uint32_t ADC_GetDualModeConversionValue(void)

功 能:以雙模式返回最后一個ADC1和ADC2轉換結果數據。

輸 入:無。

1.19、void ADC_AutoInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState)

功 能:啟用或禁用所選ADC在常規轉換后自動注入組轉換。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;NewState:啟用或禁用。

1.20、void ADC_InjectedDiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState)

功 能:為指定的ADC啟用或禁用注入組通道的不連續模式。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;NewState:啟用或禁用。

1.21、void ADC_ExternalTrigInjectedConvConfig(ADC_TypeDef* ADCx, uint32_t ADC_ExternalTrigInjecConv)

功 能:為注入通道轉換配置ADCx外部觸發器。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;ADC_ExternalTrigInjecConv:指定開始注入轉換的ADC觸發器。

1.22、void ADC_ExternalTrigInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState)

功 能:通過外部觸發器啟用或禁用ADCx注入通道轉換。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;NewState:啟用或禁用。

1.23、void ADC_SoftwareStartInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState)

功 能:啟用或禁用注入通道轉換的所選ADC啟動。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;NewState:啟用或禁用。

1.24、FlagStatus ADC_GetSoftwareStartInjectedConvCmdStatus(ADC_TypeDef* ADCx)

功 能:獲取所選ADC軟件開始注入轉換狀態。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備。

1.25、void ADC_InjectedChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime)

功 能:為所選ADC注入通道配置其在序列器中的相應秩及其采樣時間。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;ADC_Channel:要配置的ADC信道;Rank:注入組序列器中的秩;ADC_SampleTime:要為所選通道設置的采樣時間值。

1.26、void ADC_InjectedSequencerLengthConfig(ADC_TypeDef* ADCx, uint8_t Length)

功 能:配置注入通道的序列器長度。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;Length:序列器的長度。

1.27、void ADC_SetInjectedOffset(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel, uint16_t Offset)

功 能:設置注入通道轉換值偏移。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;Offset:所選ADC注入通道的偏移值。

1.28、uint16_t ADC_GetInjectedConversionValue(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel)

功 能:ADC返回注入通道的結果。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;ADC_InjectedChannel:轉換后的ADC注入通道。

1.29、void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, uint32_t ADC_AnalogWatchdog)

功 能:啟用或禁用單個/所有常規或注入通道上的模擬看門狗。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;ADC_AnalogWatchdog:ADC模擬看門狗配置。

1.30、void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx, uint16_t HighThreshold,uint16_t LowThreshold)

功 能:配置模擬看門狗的高閾值和低閾值。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;HighThreshold:ADC模擬看門狗高閾值;LowThreshold:ADC模擬看門狗低閾值。

1.31、void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel)

功 能:配置模擬看門狗保護的單通道。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;ADC_Channel:為模擬看門狗配置的ADC信道。

1.32、void ADC_TempSensorVrefintCmd(FunctionalState NewState)

功 能:啟用或禁用溫度傳感器和Vrefint通道。

輸 入:NewState:啟用或禁用。

1.33、FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t ADC_FLAG)

功 能:檢查是否設置了指定的ADC標志。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;ADC_FLAG:指定要檢查的標志。

1.34、void ADC_ClearFlag(ADC_TypeDef* ADCx, uint8_t ADC_FLAG)

功 能:清除ADCx的掛起標志。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;ADC_FLAG:指定要清除的標志。

1.35、ITStatus ADC_GetITStatus(ADC_TypeDef* ADCx, uint16_t ADC_IT)

功 能:檢查指定的ADC中斷是否已發生。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;ADC_IT:指定要檢查的ADC中斷源。

1.36、void ADC_ClearITPendingBit(ADC_TypeDef* ADCx, uint16_t ADC_IT)

功 能:清除ADCx的中斷掛起位。

輸 入:ADCx:其中x可以是1以選擇ADC外圍設備;ADC_IT:指定要清除的ADC中斷掛起位。

1.37、s32 TempSensor_Volt_To_Temper(s32 Value)

功 能:內部溫度傳感器電壓與溫度之間的關系。

輸 入:Value:電壓值。

以上函數均為庫函數內部函數,在進行使用時只需在程序中進行調用即可。

2、硬件設計

本章教程通過ADC1通道1讀取開發板VCC引腳和GND引腳ADC值,并通過串口調試助手打印顯示出來。

3、軟件設計

CH32V103C8T6的ADC_IN1在PC1和PA1引腳,本文使用PA1,通過PA1讀取開發板VCC引腳ADC值和GND引腳ADC值,具體程序如下:

adc.h文件

poYBAGPYsp-AS7GDAAAiYDJgDuY260.png

adc.c文件

poYBAGPYsp-AIZ8DAAGU2QUTIy0169.png

main.c文件

pYYBAGPYsp-ALylAAABPmwu5f7U645.png

main.c文件主要進行相關函數的初始化以及打印輸出通過ADC_IN1讀取到的ADC值。

4、下載驗證

將編譯好的程序下載到開發板并復位,用杜邦線將PA1引腳分別與VCC引腳和GND引腳連接,讀取ADC值。注意,此處VCC引腳連接3.3V。串口打印情況具體如下:

當連接GND引腳時:

pYYBAGPYsp-AOof4AACQezQnTZ0394.png

當連接VCC(3.3V)引腳時:

poYBAGPYsp-ARd7mAACYgCxi8sw513.png

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17831

    瀏覽量

    360300
  • adc
    adc
    +關注

    關注

    99

    文章

    6635

    瀏覽量

    548226
  • 采樣
    +關注

    關注

    1

    文章

    127

    瀏覽量

    25909
  • RISC-V
    +關注

    關注

    46

    文章

    2478

    瀏覽量

    48259
  • CH32V103
    +關注

    關注

    1

    文章

    13

    瀏覽量

    1186
  • ch32
    +關注

    關注

    0

    文章

    73

    瀏覽量

    855
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    酒店智能化都用到哪些芯片之高速互聯型MCU CH32V317

    PHY) 4.SDI0、DVP數字視頻接口 5.雙12位ADC,16路觸摸按鍵,雙12位DAC 憑借這些優勢,CH32V317芯片已在多個行業實現規模應用,成為智能設備開發的首選MCU之一。
    發表于 05-30 17:02

    CH32V303/305/307/317工業級通用微控制器數據手冊

    CH32V 系列是基于青稞 RISC-V 內核設計的工業級通用微控制器,包括 CH32V305 連接型 MCU
    的頭像 發表于 05-15 17:37 ?310次閱讀
    <b class='flag-5'>CH32V</b>303/305/307/317工業級通用微控制器數據手冊

    想使用2片ADS54Jxx系列ADC實現2G采用,照交錯采樣原理,ADS54JXX系列可以實現嗎?

    你好,曾經用過E2V公司的ADC,里面集成通過改變采樣時鐘的相位來實現提高采樣率(交錯采樣),現想使用TI 2 片ADS54Jxx(1G
    發表于 12-23 06:16

    基于ADS131m04和STM32F103搭建了一個簡單的采樣電路,如何獲得比較高的通道間采樣一致性?

    大家好,參照TI的參考設計,基于ADS131m04和STM32F103搭建了一個簡單的采樣電路,希望獲得比較高的通道間采樣一致性,就是希望兩個通道對同一對象電壓同時采樣時,通道間差別在
    發表于 11-21 07:08

    如何優化adc采樣

    在數字信號處理領域,ADC是將模擬信號轉換為數字信號的關鍵組件。采樣率,即ADC每秒采集樣本的次數,對信號的準確性和系統的整體性能有著直接的影響。 ADC
    的頭像 發表于 10-31 11:04 ?1446次閱讀

    STM32的ADC采樣及各式濾波算法實現

    本文為手把手教學ADC采樣及各式濾波算法的教程,本教程的MCU采用STM32F103ZET6。以HAL庫的ADC
    的頭像 發表于 10-28 10:51 ?6801次閱讀
    STM32的<b class='flag-5'>ADC</b><b class='flag-5'>采樣</b>及各式濾波算法實現

    CH32V103 使用中斷優先級分組0時報錯

    使用CH32V103C8TC設置中斷優先級分組時,設置為NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);而使用NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);卻不會報錯
    發表于 09-23 13:52

    采樣提高12位ADC的精度

    MCU。 **過采樣方案(電路圖): ** LDO給MCU和壓感供電: 12位ADCMCU和壓感: **過
    發表于 09-19 19:29

    ADC采樣

    電子發燒友網站提供《ADC采樣.pdf》資料免費下載
    發表于 08-30 09:39 ?0次下載
    <b class='flag-5'>ADC</b>過<b class='flag-5'>采樣</b>

    針對Stellaris?系列微控制器的ADC采樣技術

    電子發燒友網站提供《針對Stellaris?系列微控制器的ADC采樣技術.pdf》資料免費下載
    發表于 08-29 14:46 ?0次下載
    針對Stellaris?<b class='flag-5'>系列</b>微控制器的<b class='flag-5'>ADC</b>過<b class='flag-5'>采樣</b>技術

    使用OPA2369對NTC采樣進行放大到MCUADC采樣,遇到的兩個問題求解答

    你好,我使用的OPA2369對NTC采樣進行放大到MCUADC采樣,目前有兩個問題:1.非線性放大,2.實際的輸出誤差比仿真的大很多
    發表于 08-27 06:54

    CKS32F107xx系列MCU的雙重ADC模式

    獨立模式的ADC采集需要在一個通道采集并且轉換完成后才會進行下一個通道的采集。而雙重ADC的機制就是使用兩個ADC同時采樣一個或者多個通道。雙重AD
    的頭像 發表于 07-22 09:19 ?815次閱讀
    CKS32F107xx<b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的雙重<b class='flag-5'>ADC</b>模式

    ADC08DJ5200RF射頻采樣千兆采樣模數轉換器(ADC)數據表

    電子發燒友網站提供《ADC08DJ5200RF射頻采樣千兆采樣模數轉換器(ADC)數據表.pdf》資料免費下載
    發表于 07-19 09:16 ?0次下載
    <b class='flag-5'>ADC</b>08DJ5200RF射頻<b class='flag-5'>采樣</b>千兆<b class='flag-5'>采樣</b>模數轉換器(<b class='flag-5'>ADC</b>)數據表

    ADC12DJ5200-EP射頻采樣千兆采樣模數轉換器(ADC)數據表

    電子發燒友網站提供《ADC12DJ5200-EP射頻采樣千兆采樣模數轉換器(ADC)數據表.pdf》資料免費下載
    發表于 07-15 10:04 ?0次下載
    <b class='flag-5'>ADC</b>12DJ5200-EP射頻<b class='flag-5'>采樣</b>千兆<b class='flag-5'>采樣</b>模數轉換器(<b class='flag-5'>ADC</b>)數據表

    STM32F103 ADC利用DMA進行采樣遇到的幾個疑問求解

    STM32F103配置了ADC1 的4個通道,利用定時器的事件觸發進行10Hz 的數據采樣,數據通過DMA傳輸。然后希望每次采樣4*50個數據后觸發DMA的中斷進行數據的處理。 根據教
    發表于 07-02 07:04