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

CH32內部參考電壓的自學筆記

發布者:Qinghua2022最新更新時間:2024-12-16 來源: elecfans關鍵字:內部參考電壓  單片機 手機看文章 掃描二維碼
隨時隨地手機看文章

CH32V/F單片機能夠在一定的電壓范圍內進行工作,以CH32V203C8T6 芯片為例,在不使用 USB 外設時,最低工作電壓能夠達到 2.4V。較為寬泛的工作電壓,允許單片機直接使用電池供電,但由于 CH32V203C8T6 芯片沒有獨立的 Vref 引腳,使用 ADC 的過程中無法換算出真實的電壓。為解決無法獲得真實電壓的問題,可以使用內置參考電壓換算當前供電電壓(即 ADC參考電壓)。對于項目要求精確測量時,也可嘗試使用該方法對 ADC 進行校準。


電源電壓的換算

CH32V203C8T6 芯片內部參考電壓是典型值為 1.2V,正負偏差為 0.04V 的電壓范圍,在 ADC 轉換精度要求不高的應用場景下,可以直接使用 1.2V 換算芯片供電電壓。

d97045dc-9a13-11ee-9788-92fbcf53809c.png

如果需要更加精確的轉換結果,就應在穩定的供電條件下,先對內部參考電壓進行測量并將結果保存在 Flash 中,實際的使用過程中,再根據已知的內部參考電壓進行換算。

d9830ac8-9a13-11ee-9788-92fbcf53809c.png


實現上述操作,可參考以下代碼


u16 ADC_val = 0;s32 val_mv = 0;u16 Vref = 0; // Flash中存儲的內部參考電壓實測值s32 Vref_To_VDD = 0; // 由Vref的實測值換算出的電源電壓值
if ( *(u32*)(FAST_FLASH_PROGRAM_START_ADDR) == 0xe339e339 ) { // 判斷Flash中是否有內部參考電壓的實測值 printf('Address:0x%08x -> %08xrn', FAST_FLASH_PROGRAM_START_ADDR, *(u32*)(FAST_FLASH_PROGRAM_START_ADDR)); // 獲取內部參考電壓實測值,此時務必保證電源電壓或參考電壓(如果有)的準確 ADC_val = Get_ADC_Average(ADC_Channel_Vrefint, 255); // 255次取平均 ADC_val = Get_ConversionVal(ADC_val); val_mv = (ADC_val * 3300 / 4096); printf('Vref_mv -> %drn', val_mv); // 將測得的結果存儲在Flash中 buf[0] = val_mv; FLASH_Unlock_Fast(); FLASH_ProgramPage_Fast(FAST_FLASH_PROGRAM_START_ADDR, buf); FLASH_Lock_Fast(); printf('Address:0x%08x -> %08xrn', FAST_FLASH_PROGRAM_START_ADDR, *(u32*)(FAST_FLASH_PROGRAM_START_ADDR));} else { printf('Address:0x%08x -> %08xrn', FAST_FLASH_PROGRAM_START_ADDR, *(u32*)(FAST_FLASH_PROGRAM_START_ADDR)); Vref = *(u32*)(FAST_FLASH_PROGRAM_START_ADDR); ADC_val = Get_ADC_Average(ADC_Channel_Vrefint, 255); // 255次取平均 ADC_val = Get_ConversionVal(ADC_val); Vref_To_VDD = (4096 * Vref / ADC_val); printf('Vref_To_VDD_mV -> %drn', Vref_To_VDD); }


ADC 初始化過程中的校準

ADC 初始化函數中完成了一次校準過程,經過校準環節可大幅減小因內部電容器組的變化而造成的精準度誤差。校準過程中 ADC 僅獲取了 Vcc 的采樣值,與實際電壓大小無關,因此,在浮動電壓供電的場景中,不會引入額外的誤差。獲取校準值函數,通過寫 ADC_CTLR2 寄存器的 RSTCAL 位置 1 初始化校準寄存器,等待 RSTCAL 硬件清 0完成初始化。置位 CAL 位,啟動校準功能,校準結束后,硬件自動清除 CAL 位,將校準碼存儲到 ADC_RDATAR 中。使用多次校準結果,計算 ADC 補償。


int16_t Get_CalibrationValue(ADC_TypeDef *ADCx){ __IO uint8_t i, j; uint16_t buf[10]; __IO uint16_t t;#if defined (CH32V20x_D6) __IO uint16_t p;#endif

for(i = 0; i < 10; i++){ ADC_ResetCalibration(ADCx); while(ADC_GetResetCalibrationStatus(ADCx)); ADC_StartCalibration(ADCx); while(ADC_GetCalibrationStatus(ADCx)); buf[i] = ADCx->RDATAR;// printf('CalibrationValue[%d]->%drn', i, buf[i]); }

for(i = 0; i < 10; i++){ for(j = 0; j < 9; j++){ if(buf[j] > buf[j + 1]) { t = buf[j]; buf[j] = buf[j + 1]; buf[j + 1] = t; } } }

#if defined (CH32V20x_D8) || defined (CH32V20x_D8W) t = 0; for( i = 0; i < 6; i++ ) { t += buf[i + 2]; }

t = ( t / 6 ) + ( ( t % 6 ) / 3 );

return ( int16_t )( 2048 - ( int16_t )t );#else t = 0; p = 0; /* 1024 */ for(i = 0; i < 6; i++ ){ if(buf[i+2] > 1536) break; t += buf[i+2]; }

if(i > 0){ t = ( t / i ) + ( (( t % i )*2) / i ); } else t = 1024;

/* 2048 */ j = 6-i; if(j > 0){ for(; i < 6; i++ ){ p += buf[i+2]; }

p = ( p / j ) + ( (( p % j )*2) / j ); } else p = 2048;

return ( int16_t )(((( int16_t )( 1024 - ( int16_t )t ) + ( int16_t )( 2048 - ( int16_t )p ))/2) + ((( int16_t )( 1024 - ( int16_t )t ) + ( int16_t )( 2048 - ( int16_t )p ))%2));

#endif}

可以在校準值轉換的 for 循環中添加打印,觀察每次校準值結果是否隨芯片供電電壓(即 ADC 參考電壓)的改變而改變。

d996f196-9a13-11ee-9788-92fbcf53809c.png


關鍵字:內部參考電壓  單片機 引用地址:CH32內部參考電壓的自學筆記

上一篇:ch32優勢 ch32v307可以做什么?
下一篇:ch32單片機的參數 ch32V307工作溫度

推薦閱讀最新更新時間:2025-04-17 06:13

恩智浦S32K3系列MCU:重塑汽車電子核心的智能引擎
S32K3系列MCU:重塑汽車電子核心的智能引擎 在汽車智能化與電氣化浪潮的推動下,微控制器(MCU)作為電子系統的 大腦 ,正面臨前所未有的性能與安全挑戰。NXP推出的S32K3系列MCU,憑借其強大的Arm Cortex-M7內核和創新的系統架構,正在為下一代汽車電子系統樹立新標桿。 技術背景:汽車電子的進化需求 傳統汽車電子系統多采用分散式架構,但隨著ADAS、智能座艙、域控制器等技術的普及,系統復雜度呈指數級增長。原有MCU在算力、安全性和功能集成度上逐漸顯現瓶頸。S32K3系列應運而生,基于Armv7架構的Cortex-M7內核,最高主頻達320MHz,配合雙精度浮點單元和專用DSP指令集,可實現2.14 D
[汽車電子]
(3)趣味單片機Thinkercad-儀器儀表使用①
我們在搭建電路的過程中,有個時候會碰到難以捉摸的情況,而電流、電壓在很多情況下看不見、摸不著,這個時候我們就要借助于儀器儀表來觀察電路是否工作正常,同時也輔助我們進一步加深對電路原理的理解,接下來我們同樣結合電路一起來理解,Let‘s do it!! 萬用表:用來測量電壓,電壓和電阻 可調電源:為電路提供可調的電壓和電流,也是我們實際實驗室中常備儀器 我們先介紹這么兩樣,后面再繼續補充 相同阻值電阻分壓電路 電路原理 兩個電阻都是1KΩ,每個電阻分得得電壓都相等,根據歐姆定律可以算出電流,進而可以算出電阻兩端得電壓。 不同阻值電阻分壓電路 根據色環可以得出上面得電阻是1KΩ,下面得電阻是2KΩ,根據歐姆定律
[單片機]
(13)趣味單片機新玩法-仿真的同時偶爾也要回歸實物
我們先來看同一個呼吸燈代碼在不同軟件及實物上的運行效果,這時一個呼吸燈的示例,PWM周期是200us 200us 實物效果 200usThinkerCAD在線軟件效果 200usProteus效果 200us 代碼: 如果說這個對比感覺看不出什么,我們接下來把周期弄長一點,刷新率改低一點,延時是5000us=5ms 5ms 實物效果 5msThinkerCAD在線軟件效果 5ms Proteus效果 5ms代碼: 總結: 從上面的對比實驗可以很明顯的看到,Proteus軟件的效果與實物的效果相差甚遠,亮度調節過程中有明顯的“頓挫感”;當我們在使用仿真軟件看到的結果不符合我們預期時,我們最好
[單片機]
ST宣布汽車MCU新戰略:左手Stellar,右手STM32A
在汽車行業,“軟件定義汽車”(SDV)的概念早已深入人心。隨著汽車架構的變化,供應體系也正在不斷顛覆,芯片廠商在汽車領域的角色正在發生轉變。 ST(意法半導體)作為汽車MCU領域的領先者,很少系統性談及其MCU產品在汽車領域的整體戰略與布局。日前,在STM32媒體溝通會上,意法半導體中國區微控制器、數字 IC 與射頻產品部 (MDRF) 汽車微控制器產品營銷高級經理黃延球(Yanqiu HUANG)就系統性地分享了ST在汽車MCU方面的策略與產品。 ST正在加強對汽車MCU 的專注 “ST現在決定采取全新的策略,重點提升汽車MCU的關注度,做到百分之百關注和注重汽車MCU?!秉S延球在媒體會上強調,當前車載應用中
[單片機]
ST宣布汽車<font color='red'>MCU</font>新戰略:左手Stellar,右手STM32A
單片機stm32 USART串口應用
  stm32作為現在嵌入式物聯網單片機行業中經常要用多的技術,相信大家都有所接觸,今天這篇就給大家詳細的分析下有關于stm32的出口,還不是很清楚的朋友要注意看看了哦,在最后還會為大家分享有些關于stm32的視頻資料便于學習參考。   什么是串口   UART : Universal Asynchronous Receiver/Transmitter 通用異步收發器   USART : Universal Synchronous Asynchronous Receiver/Transmitter   通用同步/異步收發器   一種是常用也是最簡單的串行數據傳輸協議。數據線只需要兩根就可以實現全雙工。   Tx: 發送數據線   
[單片機]
MCU上電不啟動的可能原因分析
相信很多朋友們都遇到過,自信滿滿的將程序下載到板子上,發現MCU居然沒啟動。 那這個現象可能有很多問題會導致,讓我們來看看會有哪些原因。 1、BOOT引腳電平不對: 在GD32 MCU上,BOOT引腳決定了MCU的啟動方式,通常BOOT0引腳下拉時是flash啟動,如果BOOT電平不對就不會執行我們下載的程序了。 2、NRST拉高了嗎? NRST是MCU的復位引腳,如果復位引腳沒有拉高,程序也不會啟動,復位引腳一般和電源以及連接電路有關,電源上升到POR 2ms后NRST一般會拉高,如果沒有拉高那還要進一步檢查電源和電路。 3、VDD和VDDA電壓滿足工作范圍了嗎? 平時大家一般關注VDD電壓,但VDDA電壓也很關鍵,
[單片機]
<font color='red'>MCU</font>上電不啟動的可能原因分析
GD32 MCU上電跌落導致啟動異常如何解決
大家是否碰到過MCU上電過程中存在電源波動或者電壓跌落導致MCU啟動異常的問題?本視頻將會為大家講解可能的原因以及解決方法: GD32 MCU上下電復位波形如下圖所示,上電過程中如果存在吃電的模塊,比如wifi模塊/4G模塊/開啟某塊電路等,可能存在電源電壓跌落的情況,此時若MCU在啟動過程中可能會造成MCU加載代碼異常,進而導致啟動異常。電壓跌落到POR和PDR之間會有可能出現啟動異常,因為該段電壓區間為非正常工作電壓且不會發生PDR復位。 解決方法上可以有以下兩種:1、硬件整改上電波形,在VDD端增加電容,提升VDD的供電能力,進而降低電源波動;2、修改NRST引腳對應的RC阻容,調整MCU啟動時間,避開電源電壓跌落的
[單片機]
貿澤開售Microchip WBZ350射頻就緒多協議MCU模塊 簡化無線應用開發并加快上市速度
2024年10月18日 – 提供超豐富半導體和電子元器件?的業界知名新品引入 (NPI) 代理商貿澤電子 (Mouser Electronics) 即日起開售Microchip Technology的WBZ350射頻就緒多協議MCU模塊。 WBZ350模塊是PIC32CX-BZ系列的一款安全型32位MCU,內置了藍牙和Zigbee?無線功能。此射頻就緒模塊專為需要可靠無線連接的應用而設計,包括用于智能工廠和過程自動化的物聯網(IoT)設備、家庭自動化和智能照明系統、具有無線數據控制功能的健康和健身可穿戴設備以及樓宇自動化系統。 Microchip Technology WBZ350射頻就緒多協議MCU模塊配備64MHz Arm
[半導體設計/制造]
貿澤開售Microchip WBZ350射頻就緒多協議<font color='red'>MCU</font>模塊   簡化無線應用開發并加快上市速度
小廣播
設計資源 培訓 開發板 精華推薦

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

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

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 应用必备| 靖州| 紫云| 高平市| 博罗县| 上饶县| 建宁县| 尉犁县| 合山市| 海城市| 大港区| 汝阳县| 达日县| 滨海县| 铜梁县| 海原县| 龙江县| 谷城县| 江口县| 徐州市| 项城市| 安康市| 海晏县| 达拉特旗| 潜江市| 贵定县| 乌恰县| 西吉县| 泽州县| 叶城县| 凤翔县| 香格里拉县| 沅江市| 都匀市| 炎陵县| 如皋市| 芜湖市| 延吉市| 栾川县| 镇赉县| 宁强县|