在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

讀取STM32芯片溫度與當前供電電壓

撞上電子 ? 2023-11-20 08:00 ? 次閱讀

在做低功耗產品的時候讀取芯片溫度和當前電壓是十分重要的一件事情。通過當前供電電壓可以知曉電池電量是否低于水平值實現電池缺電報警。讀取芯片溫度也很重要,可以在使用內部振蕩器的時候通過校準算法根據溫度變化來實現實時校準芯片。如果不使用或盡量少使用外部元器件來實現這兩個功能是擺在我們面前一個很重要的事情,遺憾的是現在網上的資料非?;靵y,基本上直接使用總有點那么別扭。如何讀取芯片電壓?當然肯定是需要用ADC了。不過這個時候需要有一個參考電壓作為比對,很多人提出在外面使用一組LDO實現參考電壓,那樣其實LDO本身也有一定能耗,在我們追求極致低消耗的時候也不適合。當然很多人說了為什么不使用PVD來做,那么我來說說,PVD本身是做電壓曲線檢測的,如果你要求低于2.5V就報警,你會發現如果你啟動電壓<2.5V的時候無法檢測出來。所以還是自己做。還好STM32L0單片機在內部有一個核心電壓,并且有一個寄存器VREFINT_CAL值可以用作基準參考從而計算出相當比較精準的電壓。經過測量,誤差還是基本滿足電池供電檢測的要求。如何讀取芯片溫度?在STM32L0下,只要讀到當前電壓,配合溫度寄存器,就可以取得當前溫度了。當前溫度誤差比較大,即使高精度采樣,為了節省運算時間,誤差還是有3度的誤差,因此這個地方需要寬泛一些。

#include "stm32l0xx_ll_adc.h" //需要這個庫實現公式計算//初始化void init_adc1(void){ ADC_ChannelConfTypeDef sConfig;
hadc.Instance = ADC1; hadc.Init.OversamplingMode = DISABLE; hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV1; hadc.Init.Resolution = ADC_RESOLUTION_12B;//ADC_RESOLUTION_12B; hadc.Init.SamplingTime = ADC_SAMPLETIME_160CYCLES_5; //160.5cycles如果低于39.5cycles溫度采樣精準度不夠 hadc.Init.ScanConvMode = ADC_SCAN_DIRECTION_FORWARD; hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc.Init.ContinuousConvMode = DISABLE; hadc.Init.DiscontinuousConvMode = DISABLE; hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; hadc.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc.Init.DMAContinuousRequests = DISABLE; hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV; hadc.Init.Overrun = ADC_OVR_DATA_PRESERVED; hadc.Init.LowPowerAutoWait = DISABLE; hadc.Init.LowPowerFrequencyMode = DISABLE; hadc.Init.LowPowerAutoPowerOff = DISABLE; if (HAL_ADC_Init(&hadc) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); }/**Configure for the selected ADC regular channel to be converted. */ sConfig.Channel = ADC_CHANNEL_VREFINT; //初始化VREFINT_CAL參考電壓 sConfig.Rank = ADC_RANK_CHANNEL_NUMBER; if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); } sConfig.Channel = ADC_CHANNEL_TEMPSENSOR; //初始化芯片溫度傳感器 sConfig.Rank = ADC_RANK_CHANNEL_NUMBER; if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); }}//讀取adc1值uint16_t readchannel_adc1(uint32_t Channel){ ADC_ChannelConfTypeDef adcConf; uint16_t adcData = 0; /* wait the the Vrefint used by adc is set */ while (__HAL_PWR_GET_FLAG(PWR_FLAG_VREFINTRDY) == RESET) {};//啟動CLK時鐘 __HAL_RCC_ADC1_CLK_ENABLE();
/*calibrate ADC if any calibraiton hardware*/ HAL_ADCEx_Calibration_Start(&hadc, ADC_SINGLE_ENDED );
/* Deselects all channels*/ adcConf.Channel = ADC_CHANNEL_MASK; adcConf.Rank = ADC_RANK_NONE; HAL_ADC_ConfigChannel( &hadc, &adcConf);
/* configure adc channel */ adcConf.Channel = Channel; adcConf.Rank = ADC_RANK_CHANNEL_NUMBER; HAL_ADC_ConfigChannel( &hadc, &adcConf);

/* Start the conversion process */ HAL_ADC_Start(&hadc);
/* Wait for the end of conversion */ HAL_ADC_PollForConversion( &hadc, HAL_MAX_DELAY );
/* Get the converted value of regular channel */adcData+=HAL_ADC_GetValue(&hadc);
__HAL_ADC_DISABLE(&hadc);
__HAL_RCC_ADC1_CLK_DISABLE();
return adcData;}//具體調用代碼void main(void){ init_adc1(); //完成初始化 uint16_tvdda_mV=__LL_ADC_CALC_VREFANALOG_VOLTAGE(readchannel_adc1(ADC_CHANNEL_VREFINT),LL_ADC_RESOLUTION_12B);//取得當前VDDA的電壓,單位mV uint16_t temp_degress = __LL_ADC_CALC_TEMPERATURE(vdda_mV,readchannel_adc1(ADC_CHANNEL_TEMPSENSOR),LL_ADC_RESOLUTION_12B); //取得當前的溫度,單位攝氏度}

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

    關注

    459

    文章

    52282

    瀏覽量

    437517
  • 電壓
    +關注

    關注

    45

    文章

    5698

    瀏覽量

    117392
  • STM32
    +關注

    關注

    2290

    文章

    11018

    瀏覽量

    362914
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    通過stm32控制AD9914遇到芯片問題

    控制程序,使用的usb5V供電,上電就很燙,這正常嗎?如果給芯片寫代碼,初始化時候,如果控制了里面的寄存器CFR3,就會把供電電壓拉低一半??刂破渌拇嫫鰿FR1或者CFR2與CFR4
    發表于 06-04 11:08

    ADS8699模數轉換讀取模擬電壓數值不正確

    我用STM32F103C8T6主控芯片,ADS8699模數轉換芯片對模擬電壓進行采集?,F在遇到的問題1是對控制芯片輸入范圍的寄存器寫不進去數
    發表于 03-24 09:45

    motor pilot的母線電壓檢測、溫度檢測讀取錯誤的原因?怎么解決?

    參考ST的Motor Control開發板,我畫了自己的板子。兩種板子,使用MotorControl Workbench生成的代碼,都能跑。目前的問題是,我自己的板子,無法讀取電壓、溫度等信號。實際
    發表于 03-14 08:33

    XTR117芯片支持HART協議嗎?XTR117的電壓輸出5v的電流是多少,能不能正常給STM32單片機供電?

    1、XTR117芯片支持HART協議嗎? 2、XTR117的電壓輸出5v的電流是多少,能不能正常給STM32單片機供電?就是說能不能滿足功耗! 謝謝!
    發表于 01-07 08:23

    ADS1243如何確保當前通道數據已經采集完成,可以開始讀取數據了?

    我們有使用貴司得ADS1243芯片,但目前沒后找到該芯片得使用demo,可否告知,感謝! 主要疑惑點: 1. 硬件上需要確保那些連接(PDWN,CS,DRDY)? 2.如何切換通道? 3.如何確保當前通道數據已經采集完成,可以
    發表于 12-16 06:04

    使用STM32F103讀取ADS8515數據,當stm32端接通電源ADS8515未接通電源時會有電壓干擾怎么解決?

    使用5V電源,分別供電?,F在數據讀取都正常,有一個問題,當stm32端接通電源,ADS8515未接通電源時,測量ADS8515電源引腳會有大約2.15V電壓;當
    發表于 12-09 06:28

    ADS1158輸入電壓越大,讀取數據偏差越大,為什么?

    為3.3v時,讀取數據只有3.05v。而讀取供電電壓和參考電壓數據偏差便很小。為什么輸入電壓越大
    發表于 11-29 15:48

    關于某芯片輸出電壓波動噪聲與其供電開關電源關系的疑問?

    題主在驅動PA194高壓運放輸出電壓至高阻負載時,因為沒有合適的高壓線性電源,我選用的DCDC供電模塊為HRA12150D-20W提供±150V供電,發現其電壓輸出噪聲頻率跟
    發表于 11-14 17:34

    ADS1299的配套軟件不支持讀取級聯的其他芯片的數據,如何實現讀取級聯的多個芯片的數據呢?

    ADS1299的配套軟件不支持讀取級聯的其他芯片的數據,如何實現讀取級聯的多個芯片的數據呢,是用stm32進行spi通信嗎,如何實現呢
    發表于 11-13 06:36

    給INA116芯片供電時,供電電壓采用正負3.3V可行嗎?

    給INA116芯片供電時,供電電壓采用正負3.3V可行么。技術手冊上給的是4.5~18,但是我在測試某型號表時發現INA116供電
    發表于 09-03 06:06

    stm32讀取boot引腳狀態

    STM32微控制器中,Boot引腳(通常指的是BOOT0和BOOT1引腳)的狀態決定了設備啟動時的引導模式。這些引腳的狀態在復位時被讀取,并據此選擇啟動哪塊存儲器。比如,STM32F103系列
    的頭像 發表于 08-22 09:48 ?2592次閱讀

    AMC1200進行采樣電壓,測試時發現給芯片供電,無輸入電壓時仍有紋波,為什么?

    AMC1200芯片進行采樣電壓,輸入前端用電阻分壓,測試時發現給芯片供電,無輸入電壓時仍有紋波;去掉
    發表于 08-20 06:37

    第六章-V1.5 STM32 ADC讀取電壓 ADC采樣電壓 STM32f103c8t6adc采集電壓

    STM32智能小車 庫函數開發。功能:循跡、避障、跟隨、遙控、電池電壓顯示等。
    的頭像 發表于 08-15 16:23 ?1811次閱讀
    第六章-V1.5 <b class='flag-5'>STM32</b> ADC<b class='flag-5'>讀取</b><b class='flag-5'>電壓</b> ADC采樣<b class='flag-5'>電壓</b> <b class='flag-5'>STM32</b>f103c8t6adc采集<b class='flag-5'>電壓</b>

    ESP8285 ADC可以讀取的最大電壓是多少?

    到接近 0V,但在 0oC 以下,電壓將上升到 1.5V 或 2V。ADC引腳上的這種電壓會損壞ESP8285芯片嗎?我們不需要在低于0oC的溫度下進行測量,因此我們不介意始終
    發表于 07-08 06:55

    CS1237讀取內部溫度如何處理為溫度?

    現在想讀取CS1237內部溫度,放到恒溫箱中,恒溫箱中溫度=25度,讀取到的值為0x75cdc(轉為十進制=482524),恒溫箱中溫度升高
    發表于 06-19 08:32
    主站蜘蛛池模板: 黑人又大又粗又长又深受不了 | 黄色免费网站在线 | 一本大道加勒比久久 | 国产在线视欧美亚综合 | 欧洲一级鲁丝片免费 | 好紧好爽的午夜寂寞视频 | 一本到卡二卡三卡福利 | 天天干狠狠插 | 激情婷婷六月天 | xxx亚洲日本| 一级aaaaa毛片免费视频 | a免费在线 | 窝窝午夜在线观看免费观看 | 窝窝视频成人影院午夜在线 | 永久免费观看午夜视频在线 | 成年人黄色大片大全 | 欧美又粗又硬又大久久久 | 亚洲天堂成人在线 | 天天操天天谢 | 日韩怡红院 | 新版bt天堂资源在线 | 国产午夜不卡在线观看视频666 | 在线网站黄色 | 亚色成人 | 欧美日韩一级视频 | 天天干夜夜叭 | 成人亚洲欧美在线电影www色 | 婷婷丁香激情 | 欧美在线视频免费 | 日本欧美一区二区 | 第四色激情 | 亚洲黄色三级 | 特黄特色网站 | 男人透女人超爽视频免费 | 黄网站在线观看永久免费 | 五月婷婷之婷婷 | 国产成人v爽在线免播放观看 | 天堂网在线播放 | 丁香六月色婷婷综合网 | 91久久国产青草亚洲 | 午夜国产精品理论片久久影院 |