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

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

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

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

【GD32F303紅楓派開發(fā)板使用手冊(cè)】第十三講 ADC-內(nèi)部溫度傳感器和參考電壓采樣實(shí)驗(yàn)

聚沃科技 ? 2024-06-12 09:47 ? 次閱讀
wKgaomZVdiiAfR9BAB3mDFhHnZc972.png

13.1實(shí)驗(yàn)內(nèi)容

本實(shí)驗(yàn)是通過ADC注入組采樣內(nèi)部溫度傳感器和參考電壓,通過本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容:

  • 內(nèi)部溫度傳感器和參考電壓簡(jiǎn)介
  • ADC注入組采樣配合ADC中斷應(yīng)用

13.2實(shí)驗(yàn)原理

13.2.1內(nèi)部溫度傳感器和參考電壓簡(jiǎn)介

GD32F303有兩個(gè)內(nèi)部通道,分別為內(nèi)部溫度傳感器(ADC0_CH16)和內(nèi)部參考電壓Vrefint(ADC0_CH17)。

溫度傳感器可以用來測(cè)量器件周圍的溫度。溫度傳感器的輸出電壓隨溫度線性變化,由于生產(chǎn)過程的多樣化,溫度變化曲線的偏移在不同的芯片上會(huì)有不同(最多相差45°C)。內(nèi)部溫度傳感器更適合于檢測(cè)溫度的變化,而不是測(cè)量絕對(duì)溫度。如果需要測(cè)量精確的溫度,應(yīng)該使用一個(gè)外置的溫度傳感器來校準(zhǔn)這個(gè)偏移錯(cuò)誤。

從 ADC 數(shù)據(jù)寄存器中讀取并計(jì)算溫度傳感器數(shù)據(jù)Vtemperature, 并由下面公式計(jì)算出實(shí)際溫度:

wKgaomZo_d-AK7egAAAKNRbWHkc192.png

V25:溫度傳感器在25°C下的電壓,從datasheet中可以查到典型值為1.45V。
Avg_Slope:溫度與溫度傳感器電壓曲線的均值斜率,從datasheet中可以查到典型值為4.1mV/℃。

內(nèi)部電壓參考(VREFINT)提供了一個(gè)穩(wěn)定的(帶隙基準(zhǔn))電壓輸出給ADC和比較器,典型值為1.2V。

13.3硬件設(shè)計(jì)

本實(shí)驗(yàn)使用兩個(gè)內(nèi)部ADC通道,無需要硬件設(shè)計(jì)。

13.4代碼解析

13.4.1中斷使能函數(shù)

在driver_adc.c中定義了開啟中斷的函數(shù)ADC_int_enable。

C
/*ADC中斷使能函數(shù)*/
void ADC_int_enable(typdef_adc_ch_general *ADC)
{
/*規(guī)則組中斷使能*/
if(ADC->adc_channel_group == ADC_REGULAR_CHANNEL)
{
adc_interrupt_enable(ADC->adc_port,ADC_INT_EOC);
adc_interrupt_flag_clear(ADC->adc_port,ADC_INT_EOC);
}
/*注入組中斷使能*/
else if(ADC->adc_channel_group == ADC_INSERTED_CHANNEL)
{
adc_interrupt_enable(ADC->adc_port,ADC_INT_EOIC);
adc_interrupt_flag_clear(ADC->adc_port,ADC_INT_EOIC);
}
}

13.4.2ADC中斷函數(shù)

在driver_adc.c中定義了ADC的中斷函數(shù)driver_adc_int_handler

C
void driver_adc_int_handler(typdef_adc_ch_general *ADC,void *buffer)
{
uint8_t i;
if(ADC->adc_channel_group == ADC_REGULAR_CHANNEL)
{
if(SET == adc_interrupt_flag_get(ADC->adc_port,ADC_INT_FLAG_EOC))
{
adc_interrupt_flag_clear(ADC->adc_port,ADC_INT_FLAG_EOC);
if(ADC->adc_mode == ADC_DAUL_REGULAL_PARALLEL)
{
REG32(buffer) = (uint32_t)(ADC_RDATA(ADC->adc_port));
}
else
{
REG16(buffer) = (uint16_t)(ADC_RDATA(ADC->adc_port));
}

}
}
else if(ADC->adc_channel_group == ADC_INSERTED_CHANNEL)
{
if(SET == adc_interrupt_flag_get(ADC->adc_port,ADC_INT_FLAG_EOIC))
{
adc_interrupt_flag_clear(ADC->adc_port,ADC_INT_FLAG_EOIC);
if(ADC->adc_mode == ADC_DAUL_INSERTED_PARALLEL)
{
for(i = 0; ich_count ; i++)
{
REG32(buffer) = REG32((ADC->adc_port) + 0x3C+(i*4));
buffer += 4;
}
}
else
{
for(i = 0; ich_count ; i++)
{
REG16(buffer) = REG16((ADC->adc_port) + 0x3C+(i*4));
buffer += 2;
}
}
}
}

}

13.4.3內(nèi)部ADC通道結(jié)構(gòu)體定義

ADC的初始化在前兩章已經(jīng)講述過,這里就介紹下ADC和兩個(gè)通道的結(jié)構(gòu)體定義:

C
typdef_adc_ch_general VRef_VTem_ADC = {
.rcu_adc = RCU_ADC0,//ADC0的時(shí)鐘
.adc_psc = RCU_CKADC_CKAPB2_DIV6,//ADC0設(shè)置為APB2 6分頻
.adc_port = ADC0,//ADC口為ADC0
.adc_mode = ADC_MODE_FREE,//ADC模式為獨(dú)立模式
.adc_channel_group = ADC_INSERTED_CHANNEL,//使用注入組
.adc_scan_function = ENABLE,//開啟掃描模式
.adc_continuous_function = DISABLE,//關(guān)閉循環(huán)模式,因?yàn)槭褂玫氖亲⑷虢M,故該參數(shù)實(shí)際無效
.ch_count = 2,//轉(zhuǎn)換長(zhǎng)度為2
.trigger_source = ADC0_1_2_EXTTRIG_INSERTED_NONE,
.DMA_mode = DISABLE//不使用DMA
};

typdef_adc_ch_parameter VRef_VTem_ch_parameter[2] =
{
{
.rcu_port = NULL,
.port = NULL,
.pin = NULL,
.gpio_speed = NULL,
.adc_channel = ADC_CHANNEL_16,//通道16
.sample_time = ADC_SAMPLETIME_55POINT5//設(shè)置采樣周期為55.5
}
,
{
.rcu_port = NULL,
.port = NULL,
.pin = NULL,
.gpio_speed = NULL,
.adc_channel = ADC_CHANNEL_17,//通道17
.sample_time = ADC_SAMPLETIME_55POINT5,//設(shè)置采樣周期為55.5
}

};

需要說明的是,由于使用的是內(nèi)部通道,無需配置外部IO口,所以rcu_port參數(shù)等無需設(shè)置,這里是為了方便讀者閱讀將這幾個(gè)參數(shù)設(shè)置為了NULL。

13.4.4內(nèi)部通道ADC配置

在bsp_adc.c中定義了內(nèi)部通道ADC配置的函數(shù)bsp_Vref_Vtemp_ADC_config

C
void bsp_Vref_Vtemp_ADC_config()
{
/*ADC配置*/
driver_adc_config(&VRef_VTem_ADC,VRef_VTem_ch_parameter);
/*ADC中斷打開*/
ADC_int_enable(&VRef_VTem_ADC);
/*NVIC設(shè)置*/
nvic_irq_enable(ADC0_1_IRQn,0,0);
}

13.4.5中斷入口函數(shù)

在gd32f30x_interrupt.c中定義了中斷入口函數(shù):

C
uint16_t Vref_Vtemp_data[2] ;
void ADC0_1_IRQHandler()
{
driver_adc_int_handler(&VRef_VTem_ADC,(uint16_t *)Vref_Vtemp_data);
}

13.4.6main函數(shù)實(shí)現(xiàn)

C
int main(void)
{
delay_init();//delay函數(shù)初始化
bsp_uart_init(&BOARD_UART);//BOARD_UART串口初始化
bsp_Vref_Vtemp_ADC_config();//內(nèi)部通道ADC配置和中斷使能
while (1)
{
driver_adc_software_trigger_enable(&VRef_VTem_ADC); //軟件觸發(fā)ADC
delay_ms(1000);
temperature = (1.45 - Vref_Vtemp_data[0]*3.3/4095) * 1000 / 4.1 + 25; /*內(nèi)部溫度ADC轉(zhuǎn)換值轉(zhuǎn)換為實(shí)際溫度值*/
vref_value = (Vref_Vtemp_data[1] * 3.3 / 4095); /*內(nèi)部參考電壓ADC轉(zhuǎn)換值轉(zhuǎn)換為實(shí)際電壓值*/
printf(" the temperature data is %2.0f degrees Celsius\r\n", temperature); /*打印實(shí)際溫度值*/
printf(" the reference voltage data is %5.3fV \r\n", vref_value); /*打印內(nèi)部參考實(shí)際電壓值*/
}
}

本例程main函數(shù)首先進(jìn)行了延時(shí)函數(shù)初始化,為了演示實(shí)驗(yàn)結(jié)果,這里初始化了BOARD_UART串口,關(guān)于串口的使用,請(qǐng)讀者參考串口章節(jié),然后是內(nèi)部通道ADC的配置和中斷使能。在主循環(huán)中,先出發(fā)一次內(nèi)部通道ADC,然后延時(shí)1s,在延時(shí)過程中ADC轉(zhuǎn)換結(jié)束會(huì)進(jìn)入ADC中斷函數(shù),中斷函數(shù)將兩個(gè)注入組通道數(shù)據(jù)賦給Vref_Vtemp_data數(shù)組,延時(shí)結(jié)束后,對(duì)溫度和內(nèi)部電壓進(jìn)行計(jì)算并將計(jì)算結(jié)果打印出來。

13.5實(shí)驗(yàn)結(jié)果

使用USB-TypeC線,連接電腦和板上USB to UART口后,配置好串口調(diào)試助手,即可看到內(nèi)部溫度傳感器測(cè)到的溫度值以及內(nèi)部參考電壓值了。

wKgaomZlEF2AEmzEABJQDjpDbLg902.pngwKgaomZo_eaAJ393AAAuFgZkpYc652.png

教程GD32 MCU方案商聚沃科技原創(chuàng)發(fā)布,了解更多GD32 MCU教程,關(guān)注聚沃科技官網(wǎng)

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

    關(guān)注

    6065

    文章

    44940

    瀏覽量

    647932
  • adc
    adc
    +關(guān)注

    關(guān)注

    99

    文章

    6656

    瀏覽量

    548484
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5576

    瀏覽量

    102981
  • GD32
    +關(guān)注

    關(guān)注

    7

    文章

    419

    瀏覽量

    25228
收藏 人收藏

    評(píng)論

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

    GD32F303】星空介紹

    一、開發(fā)板介紹星空GD開發(fā)板是由旗點(diǎn)科技推出的一款GD32開發(fā)板,板載
    發(fā)表于 09-11 17:55

    【星空GD32F303開發(fā)板試用體驗(yàn)】開發(fā)記錄匯總

    本帖最后由 申小林一號(hào) 于 2021-10-15 14:47 編輯 開貼日期:2021年10月11日該貼主要是用于記錄星空開發(fā)板使用記錄以及學(xué)習(xí)GD32F303芯片的一個(gè)過程,將所有的
    發(fā)表于 10-11 16:09

    【星空GD32F303開發(fā)板試用體驗(yàn)】開箱+環(huán)境搭建

    開發(fā)板得準(zhǔn)備操作系統(tǒng)(win10),開發(fā)軟件(mdk5),與此 星空GD32F303開發(fā)板 下傳的 jlink連接
    發(fā)表于 10-18 14:15

    【星空GD32F303開發(fā)板試用體驗(yàn)】開箱+環(huán)境搭建

    GD32F303開發(fā)板得準(zhǔn)備操作系統(tǒng)(win10),開發(fā)軟件(mdk5),與此 星空GD32F303
    發(fā)表于 11-02 15:36

    【星空GD32F303開發(fā)板試用體驗(yàn)】+板卡概覽

    本帖最后由 cooldog123pp 于 2021-11-6 21:07 編輯 星空GD開發(fā)板是由旗點(diǎn)科技推出的一款GD32開發(fā)板
    發(fā)表于 11-06 21:05

    星空GD32F303開發(fā)板的相關(guān)資料下載

    一、開發(fā)板介紹星空GD開發(fā)板是由旗點(diǎn)科技推出的一款GD32開發(fā)板,板載
    發(fā)表于 12-10 08:27

    第十三講 施密特觸發(fā)

    第十三講 施密特觸發(fā) 內(nèi)容提要5.1 概述5.2 施密特觸發(fā)一、工作原理1.特點(diǎn):2.電壓傳輸特性3.回差4.邏
    發(fā)表于 03-30 16:19 ?5767次閱讀
    <b class='flag-5'>第十三講</b> 施密特觸發(fā)<b class='flag-5'>器</b>

    STM32CUBEMX開發(fā)GD32F303(14)----IIC之配置OLED

    本章STM32CUBEMX配置STM32F103,并且在GD32F303中進(jìn)行開發(fā),同時(shí)通過開發(fā)板內(nèi)進(jìn)行驗(yàn)證。
    的頭像 發(fā)表于 07-26 13:52 ?2663次閱讀
    STM32CUBEMX<b class='flag-5'>開發(fā)</b><b class='flag-5'>GD32F303</b>(14)----IIC之配置OLED

    GD32F303固件庫(kù)開發(fā)

    的可以加群申請(qǐng):615061293 。 GD32F303固件庫(kù)開發(fā)(1)----前期準(zhǔn)備與燒錄 使用GDLINK、jlink、串口下載程序到GD芯片。 [https://blog.csdn.net
    的頭像 發(fā)表于 07-27 09:27 ?1672次閱讀
    <b class='flag-5'>GD32F303</b>固件庫(kù)<b class='flag-5'>開發(fā)</b>

    GD32F303紅楓開發(fā)板使用手冊(cè)】第二講 GPIO-流水燈實(shí)驗(yàn)

    GD32F303系列MCU最多可支持?112?個(gè)通用I/O?引腳(GPIO),分別為?PA0 ~ PA15,?PB0 ~ PB15,?PC0 ~ PC15,PD0 ~ PD15,?PE0
    的頭像 發(fā)表于 05-29 10:02 ?3135次閱讀
    【<b class='flag-5'>GD32F303</b><b class='flag-5'>紅楓</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊(cè)</b>】第二講 GPIO-流水燈<b class='flag-5'>實(shí)驗(yàn)</b>

    GD32F303紅楓開發(fā)板使用手冊(cè)】第三講 GPIO-按鍵查詢檢測(cè)實(shí)驗(yàn)

    GD32F303系列MCU GPIO輸入配置結(jié)構(gòu)如下圖所示,輸入可配置上下拉電阻,通過施密特觸發(fā)后可通過備用功能輸入或者通過輸入狀態(tài)寄存進(jìn)行讀取。
    的頭像 發(fā)表于 05-30 10:02 ?1366次閱讀
    【<b class='flag-5'>GD32F303</b><b class='flag-5'>紅楓</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊(cè)</b>】第<b class='flag-5'>三講</b> GPIO-按鍵查詢檢測(cè)<b class='flag-5'>實(shí)驗(yàn)</b>

    GD32F303紅楓開發(fā)板使用手冊(cè)】第五講 FMC-片內(nèi)Flash擦寫讀實(shí)驗(yàn)

    MC即Flash控制,其提供了片上Flash操作所需要的所有功能,在GD32F303系列MCU中,F(xiàn)lash前256K字節(jié)空間內(nèi),?CPU執(zhí)行指令零等待,具有相同主頻下最快的代碼執(zhí)行效率。FMC也
    的頭像 發(fā)表于 06-02 10:05 ?1328次閱讀
    【<b class='flag-5'>GD32F303</b><b class='flag-5'>紅楓</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊(cè)</b>】第五講 FMC-片內(nèi)Flash擦寫讀<b class='flag-5'>實(shí)驗(yàn)</b>

    GD32F303紅楓開發(fā)板使用手冊(cè)第十二講 ADC-雙軸按鍵搖桿多通道循環(huán)采樣實(shí)驗(yàn)

    實(shí)驗(yàn)是通過ADC規(guī)則組多通道循環(huán)采樣方式實(shí)現(xiàn)雙軸按鍵搖桿傳感器x和y軸電壓值的讀取,通過本實(shí)驗(yàn)
    的頭像 發(fā)表于 06-11 09:40 ?1098次閱讀
    【<b class='flag-5'>GD32F303</b><b class='flag-5'>紅楓</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊(cè)</b>】<b class='flag-5'>第十</b>二講   <b class='flag-5'>ADC-</b>雙軸按鍵搖桿多通道循環(huán)<b class='flag-5'>采樣</b><b class='flag-5'>實(shí)驗(yàn)</b>

    GD32F303紅楓開發(fā)板使用手冊(cè)第十六講 USART-DMA串口收發(fā)實(shí)驗(yàn)

    在前面ADC章節(jié)中,我們介紹了DMA的工作原理,這里就不多做介紹。從GD32F303用戶手冊(cè)中可以查到,各串口的TX和RX分別對(duì)應(yīng)DMA的不同通道,比如USART0的TX對(duì)應(yīng)DMA0的通道3,而RX對(duì)應(yīng)DMA0的通道4。
    的頭像 發(fā)表于 06-15 09:54 ?1824次閱讀
    【<b class='flag-5'>GD32F303</b><b class='flag-5'>紅楓</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊(cè)</b>】<b class='flag-5'>第十</b>六講 USART-DMA串口收發(fā)<b class='flag-5'>實(shí)驗(yàn)</b>

    GD32F303紅楓開發(fā)板使用手冊(cè)】第二十講 SPI-SPI NAND FLASH讀寫實(shí)驗(yàn)

    通過本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容: ?SPI通信協(xié)議,參考19.2.1東方紅開發(fā)板使用手冊(cè) ?GD32F303 SPI操作方式,參考19.2.2東方紅
    的頭像 發(fā)表于 06-20 09:50 ?1753次閱讀
    【<b class='flag-5'>GD32F303</b><b class='flag-5'>紅楓</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊(cè)</b>】第二十講 SPI-SPI NAND FLASH讀寫<b class='flag-5'>實(shí)驗(yàn)</b>
    主站蜘蛛池模板: 免费一级特黄 欧美大片 | 丁香花在线视频 | 岛国毛片 | 91大神在线看 | 久久夜色tv网站免费影院 | 91精品国产91久久久久久青草 | 日本高清午夜色wwwσ | 国产综合色精品一区二区三区 | 国产综合第一页在线视频 | 涩999| 闲人综合 | 美女骚网站 | 欧美一级片在线视频 | 亚洲成人看片 | 天天舔天天爱 | 日本人69xxx 日本人69xxxxx | 亚洲精品午夜久久aaa级久久久 | 美女扒开尿口让男生添 漫画 | 黄色网址视频在线观看 | 国产精品伦视频观看免费 | 性色免费视频 | www.亚洲一区 | 日韩欧免费一区二区三区 | 亚洲日本免费 | a色在线 | 丁香婷婷开心激情深爱五月 | 国产 麻豆 欧美亚洲综合久久 | 4tube高清性欧美 | 国产精品久久精品牛牛影视 | 国产成人高清 | 久久99热久久精品动漫 | 国产尤物在线视频 | 欧美高清老少配性啪啪 | 高清成年美女黄网站色大 | 26uuu另类欧美亚洲曰本 | 午夜视频在线看 | 日日夜夜操天天干 | 久久怡红院 | 黑人边吃奶边扎下面激情视频 | 午夜影院操| 97人人射 |