色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

GD32開發實戰指南(基礎篇) 第14章 內部溫度傳感器

嵌入式大雜燴 ? 來源:嵌入式大雜燴 ? 作者:嵌入式大雜燴 ? 2023-05-17 08:58 ? 次閱讀

開發環境:

MDK:Keil 5.30

開發板:GD32F207I-EVAL

MCU:GD32F207IK

1 內部溫度傳感器工作原理

GD32 有一個內部的溫度傳感器,可以用來測量 CPU 及周圍的溫度(TA)。該溫度傳感器在內部和 ADCx_IN16 輸入通道相連接,此通道把傳感器輸出的電壓轉換成數字值。溫度傳感器模擬輸入推薦采樣時間是 17.1μs。GD32 的內部溫度傳感器支持的溫度范圍為: -40~125度。精度比較差,為±1.5℃左右。

GD32 內部溫度傳感器的使用很簡單,只要設置一下內部 ADC,并激活其內部通道就差不多了。關于 ADC 的設置,我們在前面的章節已經進行了詳細的介紹,這里就不再多說。接下來我們介紹一下和溫度傳感器設置相關的 2 個地方。

第一個地方,我們要使用 GD32的內部溫度傳感器,必須先激活 ADC 的內部通道,這里通過 ADC_CTL1的 TSVREN位(bit23)設置。設置該位為 1 則啟用內部溫度傳感器。置位ADC_CTL1寄存器的ADCON位,或者由外部觸發啟動ADC轉換。

第二個地方, GD32的內部溫度傳感器固定的連接在 ADC 的通道 16 上,所以,我們在設置好 ADC 之后只要讀取通道 16 的值,就是溫度傳感器返回來的電壓值了。根據這個值,我們就可以計算出當前溫度。GD32內置一個溫度傳感器,通過 ADC_IN16這個通道可以讀出溫度傳感器的電壓。其中給出了一個計算公式:

Temperature (in ℃) = {(V25- Vsense) / Avg_Slope} + 25

  • 公式中的 Vsense 就是在 ADC_IN16讀到的數值。單位是V。
  • Avg_Slope 就是溫度與 ADC 數值轉換的斜率。最小=4.0 典型=4.3 最大=4.6 單位是 mV/℃
  • V25 最小=1.34V 典型=1.43V 最大=1.52V

現在,我們就可以總結一下 GD32內部溫度傳感器使用的步驟了,如下:

1)設置 ADC,開啟內部溫度傳感器。

關于如何設置 ADC,上一節已經介紹了,我們采用與上一節相似的設置。 不同的是上一節溫度傳感器是讀取外部通道的值,而內部溫度傳感器相當與把通道端口連接在內部溫度傳感器上。所以這里,我們要開啟內部溫度傳感器功能:

adc_tempsensor_vrefint_enable();

2)讀取通道 16 的 AD 值,計算結果。

在設置完之后,我們就可以讀取溫度傳感器的電壓值了, 得到該值就可以用上面的公式計算溫度值。

例如讀到 Vsense= 1.30V。分別取 V25和 Avg_Slope 的典型值,

計算得到:(1.43 - 1.30)/0.0043 + 25 = 55.23

所以溫度大約為 55℃。

  • GD32內部溫度傳感器與 ADC 的通道16相連,與 ADC 配合使用實現溫度測量;
  • 測量范圍–40~125℃,精度±1.5℃。
  • 溫度傳感器產生一個隨溫度線性變化的電壓,轉換范圍在2V < VDDA < 3.6V之間。

2 內部溫度傳感器讀取實現

內部ADC實現代碼很簡單,配置函數如下:

/*
    brief      Configure the ADC peripheral
    param[in]  none
    param[out] none
    retval     none
*/
void adc_config(void)
{
    /* enable GPIOC clock */
    rcu_periph_clock_enable(RCU_GPIOC);

    /* enable ADC0 clock */
    rcu_periph_clock_enable(RCU_ADC0);

    /* config ADC clock */
    rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV8);

    /* config the GPIO as analog mode */
    gpio_init(GPIOC, GPIO_MODE_AIN, GPIO_OSPEED_50MHZ, GPIO_PIN_3);

    /* ADC mode config */
    adc_mode_config(ADC_MODE_FREE);

    /* ADC continuous mode function disable */
    adc_special_function_config(ADC0, ADC_CONTINUOUS_MODE, DISABLE);

    /* ADC data alignment config */
    adc_data_alignment_config(ADC0, ADC_DATAALIGN_RIGHT);

    /* ADC channel length config */
    adc_channel_length_config(ADC0, ADC_REGULAR_CHANNEL, 1);

    /* ADC regular channel config */
    adc_regular_channel_config(ADC0, 0, ADC_CHANNEL_16, ADC_SAMPLETIME_1POINT5);

    /* ADC trigger config */
    adc_external_trigger_source_config(ADC0, ADC_REGULAR_CHANNEL, ADC0_1_2_EXTTRIG_REGULAR_NONE);

    /* ADC external trigger enable */
    adc_external_trigger_config(ADC0, ADC_REGULAR_CHANNEL, ENABLE);

    /* ADC temperature and Vrefint enable */
    adc_tempsensor_vrefint_enable();

    /* enable ADC interface */
    adc_enable(ADC0);
    delay_ms(1);

    /* ADC calibration and reset calibration */
    adc_calibration_enable(ADC0);

}

主函數也很簡單:

/*
    brief      main function
    param[in]  none
    param[out] none
    retval     none
*/
int main(void)
{
    uint32_t ad=0;  
    uint8_t i=0;

    //systick init
    sysTick_init();

    //usart init 115200 8-N-1
    com_init(COM1, 115200, 0, 1);

    //adc config
    adc_config();

    while(1)
    {      
        ad=0;
        for(i=0;i<50;i++)
        {

            adc_software_trigger_enable(ADC0, ADC_REGULAR_CHANNEL);

            while(!adc_flag_get(ADC0,ADC_FLAG_EOC));//檢查轉換標志
            adc_flag_clear(ADC0, ADC_FLAG_EOC); // 清除結束標志

            ad=ad+adc_regular_data_read(ADC0);//ADC轉換結果
        }
        ad=ad/50;
        printf("The current AD value = 0x%04X \\r\\n", ad); 
        printf("The current AD value = %f V \\r\\n",(float)ad / 4096 * 3.3); //實際電壓
        printf("temperture =%f\\r\\n\\r\\n",(1.43-3.3/4096*ad)/0.0043+25);

        delay_ms(1000);
    }
}

值得注意的是,獲取內部溫度的核心代碼就以下幾行:

adc_software_trigger_enable(ADC0, ADC_REGULAR_CHANNEL);

while(!adc_flag_get(ADC0,ADC_FLAG_EOC));//檢查轉換標志
adc_flag_clear(ADC0, ADC_FLAG_EOC); // 清除結束標志

ad=ad+adc_regular_data_read(ADC0);//ADC轉換結果

只是為了防止偶然誤差,這里求50次的均值。

3 實驗現象

將程序編譯好后下載到板子中,通過串口助手可以看到在接收區有溫度值輸出。

16842453000809fyvw7xhxs

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

    關注

    146

    文章

    17123

    瀏覽量

    350983
  • 溫度傳感器
    +關注

    關注

    48

    文章

    2940

    瀏覽量

    156015
  • 開發板
    +關注

    關注

    25

    文章

    5032

    瀏覽量

    97371
  • Cortex-M
    +關注

    關注

    2

    文章

    229

    瀏覽量

    29752
  • GD32
    +關注

    關注

    7

    文章

    403

    瀏覽量

    24328
收藏 人收藏

    評論

    相關推薦

    GD32開發實戰指南(基礎) 1 開發環境搭建

    設計的GD32F207I-EVAL開發板。 GD32F207I-EVAL開發板使用 GD32F207IK作為主控制
    的頭像 發表于 05-07 23:35 ?1.1w次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>1<b class='flag-5'>章</b> <b class='flag-5'>開發</b>環境搭建

    GD32開發實戰指南(基礎) 4 GD32啟動流程詳解(Keil版)

    ,所有的一切都需要由開發者來設置,這里處理是沒有堆棧,沒有中斷,更沒有外圍設備,這些工作是需要軟件來指定的,而且不同的CPU類型、不同大小的內存和不同種類的外設,其初始化工作都是不同的。本文將以GD32F207IK (基于Co
    的頭像 發表于 05-10 09:00 ?1.7w次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>4<b class='flag-5'>章</b> <b class='flag-5'>GD32</b>啟動流程詳解(Keil版)

    GD32開發實戰指南(基礎) 7 定時

    系統滴答定時一般用來提供“心跳”作用,而GD32定時最基本功能也是定時,可以設置不同時間長度的定時。定時除了最基本的定時功能外,定時
    的頭像 發表于 05-11 09:00 ?1.2w次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>7<b class='flag-5'>章</b> 定時<b class='flag-5'>器</b>

    GD32開發實戰指南(基礎) 8 定時

    Modulation” 的縮寫,簡稱脈寬調制,是利用微處理的數字輸出來對模擬電路進行控制的一種非常有效的技術。簡單一點,就是對脈沖寬度的控制。 GD32 的定時除了 TIMER5 和 6(基本定時
    的頭像 發表于 05-12 22:14 ?7927次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>8<b class='flag-5'>章</b> 定時<b class='flag-5'>器</b>

    GD32開發實戰指南(基礎) 11 CPU的高級代理-DMA

    或者存儲和存儲之間的高速數據傳輸,因而被廣泛地使用。早在 8086 的應用中就已經有 Intel 的 8237 這種典型的 DMA 控制,而 GD32的 DMA 則是以類似外設的
    的頭像 發表于 05-16 08:59 ?3864次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>11<b class='flag-5'>章</b> CPU的高級代理-DMA

    GD32開發實戰指南(基礎) 12 ADC

    GD32F2系列有 3 個逐次逼近型的ADC,精度為 12 位,有18個多路復用通道,可以轉換來自16個外部通道和2個內部通道的模擬信號。其中ADC0 和 ADC1都有 16 個外部通道, ADC2
    的頭像 發表于 05-16 09:03 ?1.1w次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>12<b class='flag-5'>章</b> ADC

    GD32開發實戰指南(基礎) 15 低功耗

    GD32的工作電壓(VDD)為2.0~3.6V。通過內置的電壓調節提供所需的1.8V電源。當主電源VDD掉電后,通過VBAT腳為實時時鐘(RTC)和備份寄存提供電源。
    的頭像 發表于 05-17 08:59 ?8049次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>15<b class='flag-5'>章</b> 低功耗

    GD32開發實戰指南(基礎) 16 RTC

    開發環境: MDK:Keil 5.30 開發板:GD32F207I-EVAL MCU:GD32F207IK 1 RTC工作原理 1.1 RTC簡介
    的頭像 發表于 05-18 22:14 ?7153次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>16<b class='flag-5'>章</b> RTC

    GD32開發實戰指南(基礎) 17 看門狗

    開發環境: MDK:Keil 5.30 開發板:GD32F207I-EVAL MCU:GD32F207IK GD32 有兩個看門狗, 一個是
    的頭像 發表于 06-03 16:00 ?1.1w次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>17<b class='flag-5'>章</b> 看門狗

    【圖書分享】《STM32庫開發實戰指南

    庫函數開發小結 10 DMA——為CPU減負 11 ADC實驗(DMA方式) 12
    發表于 03-13 17:01

    STM32的內部溫度傳感器

    實驗目的STM32內部集成了一個溫度傳感器,可以用來測量芯片的溫度,本章學習如何讀取此溫度值,數據手冊請參看
    發表于 08-12 06:40

    STM32內部溫度傳感器概述

    記錄一下,方便以后翻閱~主要內容:1)STM32內部溫度傳感器概述;2)相關實驗代碼解讀。實驗功能:系統啟動后,實時將內部溫度
    發表于 12-10 06:11

    GD32 MCU原理及固件庫開發指南》+讀后感

    2介紹GD32 MCU快速入門與開發平臺搭建的方法,包括對軟硬件開發平臺、調試工具、GD32
    發表于 06-06 21:52

    GD32開發實戰指南(基礎) 19 程序加密

    GD32通過讀取芯片唯一ID號來實現程序的保護,防止被抄襲。96位的產品唯一身份標識所提供的參考號碼對任意一個GD32微控制
    的頭像 發表于 05-20 09:10 ?4140次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>19<b class='flag-5'>章</b> 程序加密

    GD32 MCU內部溫度傳感器如何使用,以及適合哪種應用場景?

    GD32 MCU全系列產品均內置溫度傳感器內部溫度傳感器可以用于測量器件周圍
    的頭像 發表于 02-28 09:26 ?1950次閱讀
    <b class='flag-5'>GD32</b> MCU<b class='flag-5'>內部</b><b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>如何使用,以及適合哪種應用場景?
    主站蜘蛛池模板: 久久九九少妇免费看A片| 四虎国产精品免费观看视频| 校花在公车上被内射好舒服| 94色94色永久网站| 果冻传媒AV精品一区| 日韩欧美精品有码在线播放| 最近最新中文字幕MV高清在线| 国产一卡2卡3卡4卡孕妇网站| 日本69xxxx| 97干97吻| 久久视频在线视频观品15 | 日日噜噜噜噜夜夜爽亚洲精品| 怡春院院日本一区二区久久| 国产免费高清mv视频在线观看| 琪琪婷婷五月色综合久久| 中国农村真实bbwbbwbbw| 国产亚洲日韩另类在线播放| 三级视频网站| yellow日本动漫免费观看| 麻豆精选2021| 在线观看qvod| 花蝴蝶免费观看影视| 亚洲AV午夜精品麻豆AV| 搞基福利社| 日本高清不卡一区久久精品| 99精品国产免费观看视频| 久久深夜视频| 在线日本高清日本免费| 交video| 亚洲国产日韩欧美高清片a| 国产短视频精品区| 色橹| 国产AV无码熟妇人妻麻豆| 欧美三级黄色大片| 99re久久热在这里精品| 毛片免费在线视频| 最近免费中文字幕完整版HD| 久久综合亚洲色hezyo| 在线亚洲专区中文字幕| 久久看片网| 中文字幕无码亚洲视频|