chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

第十四章 ADC(下篇)

W55MH32 ? 來源:W55MH32 ? 作者:W55MH32 ? 2025-05-29 17:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

單芯片解決方案,開啟全新體驗——W55MH32 高性能以太網(wǎng)單片機

W55MH32是WIZnet重磅推出的高性能以太網(wǎng)單片機,它為用戶帶來前所未有的集成化體驗。這顆芯片將強大的組件集于一身,具體來說,一顆W55MH32內(nèi)置高性能Arm? Cortex-M3核心,其主頻最高可達216MHz;配備1024KB FLASH與96KB SRAM,滿足存儲與數(shù)據(jù)處理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP協(xié)議棧、內(nèi)置MAC以及PHY,擁有獨立的32KB以太網(wǎng)收發(fā)緩存,可供8個獨立硬件socket使用。如此配置,真正實現(xiàn)了All-in-One解決方案,為開發(fā)者提供極大便利。

在封裝規(guī)格上,W55MH32 提供了兩種選擇:QFN68和QFN100。

W55MH32Q采用QFN68封裝版本,尺寸為8x8mm,它擁有36個GPIO、3個ADC、12通道DMA、17個定時器、2個I2C、3個串口、2個SPI接口(其中1個帶I2S接口復(fù)用)、1個CAN以及1個USB2.0。在保持與同系列其他版本一致的核心性能基礎(chǔ)上,僅減少了部分GPIO以及SDIO接口,其他參數(shù)保持一致,性價比優(yōu)勢顯著,尤其適合網(wǎng)關(guān)模組等對空間布局要求較高的場景。緊湊的尺寸和精簡化外設(shè)配置,使其能夠在有限空間內(nèi)實現(xiàn)高效的網(wǎng)絡(luò)連接與數(shù)據(jù)交互,成為物聯(lián)網(wǎng)網(wǎng)關(guān)、邊緣計算節(jié)點等緊湊型設(shè)備的理想選擇。 同系列還有QFN100封裝的W55MH32L版本,該版本擁有更豐富的外設(shè)資源,適用于需要多接口擴展的復(fù)雜工控場景,軟件使用方法一致。更多信息和資料請進入http://www.w5500.com/網(wǎng)站或者私信獲取。

此外,本W(wǎng)55MH32支持硬件加密算法單元,WIZnet還推出TOE+SSL應(yīng)用,涵蓋TCP SSL、HTTP SSL以及MQTT SSL等,為網(wǎng)絡(luò)通信安全再添保障。

為助力開發(fā)者快速上手與深入開發(fā),基于W55MH32Q這顆芯片,WIZnet精心打造了配套開發(fā)板。開發(fā)板集成WIZ-Link芯片,借助一根USB C口數(shù)據(jù)線,就能輕松實現(xiàn)調(diào)試、下載以及串口打印日志等功能。開發(fā)板將所有外設(shè)全部引出,拓展功能也大幅提升,便于開發(fā)者全面評估芯片性能。

若您想獲取芯片和開發(fā)板的更多詳細信息,包括產(chǎn)品特性、技術(shù)參數(shù)以及價格等,歡迎訪問官方網(wǎng)頁:http://www.w5500.com/,我們期待與您共同探索W55MH32的無限可能。

wKgZO2gbOfaAVPzkACJSygzv-rI600.png

第十四章 ADC(下篇)

1 例程設(shè)計

1.1 ADC_Double例程

這是一個基于 W55MH32 的 ADC(模擬 - 數(shù)字轉(zhuǎn)換器)雙模式測試例程。它的主要功能是配置串口、ADC 和 DMA,并且通過 ADC1 和 ADC2 同時對模擬信號進行采樣,最后把采樣結(jié)果通過串口打印出來。下面是對這個例程的設(shè)計分析:

1.系統(tǒng)初始化

?配置系統(tǒng)時鐘、延時函數(shù)、串口、ADC 和 DMA。

?打印系統(tǒng)時鐘頻率信息。

2.ADC 雙模式采樣

?ADC1 和 ADC2 工作于規(guī)則同步模式,同時對通道 0 和通道 1 進行采樣。

?轉(zhuǎn)換結(jié)果通過 DMA 傳輸?shù)絻?nèi)存緩沖區(qū)。

void ADC_Configuration(void)
{
    ADC_InitTypeDef  ADC_InitStructure;
    GPIO_InitTypeDef GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC2, ENABLE);

    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AIN;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    RCC_ADCCLKConfig(RCC_PCLK2_Div8);
    ADC_DeInit(ADC1);
    ADC_DeInit(ADC2);

    // 配置為規(guī)則同步模式
    ADC_InitStructure.ADC_Mode               = ADC_Mode_RegSimult; 
    ADC_InitStructure.ADC_ScanConvMode       = DISABLE;
    ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
    ADC_InitStructure.ADC_ExternalTrigConv   = ADC_ExternalTrigConv_None;
    ADC_InitStructure.ADC_DataAlign          = ADC_DataAlign_Right;
    ADC_InitStructure.ADC_NbrOfChannel       = 1;
    ADC_Init(ADC1, &ADC_InitStructure);
    ADC_Init(ADC2, &ADC_InitStructure);

    /* channel configuration */
    ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5);
    ADC_RegularChannelConfig(ADC2, ADC_Channel_1, 1, ADC_SampleTime_239Cycles5);

    /* module enablement */
    ADC_Cmd(ADC1, ENABLE);
    ADC_Cmd(ADC2, ENABLE);

    /* adc calibration */
    ADC_ResetCalibration(ADC1);
    while (ADC_GetResetCalibrationStatus(ADC1));
    ADC_StartCalibration(ADC1);
    while (ADC_GetCalibrationStatus(ADC1));
    ADC_ResetCalibration(ADC2);
    while (ADC_GetResetCalibrationStatus(ADC2));
    ADC_StartCalibration(ADC2);
    while (ADC_GetCalibrationStatus(ADC2));

    DMA_Configuration();
}

3.數(shù)據(jù)處理與輸出

?DMA 傳輸完成后觸發(fā)中斷,將 ADC 數(shù)字值轉(zhuǎn)換為電壓值并通過串口打印。

void DMA1_Channel1_IRQHandler(void)
{
    if (DMA_GetITStatus(DMA1_IT_TC1) != RESET)
    {
        DMA_ClearITPendingBit(DMA1_IT_TC1);
        DMA_ClearFlag(DMA1_FLAG_TC1);

        // 數(shù)據(jù)處理與輸出
        printf("ADC1 Code Value = %d ,voltage value = %2.4fn", DAM_ADC_Value[0] & 0xFFFF,
               (float)VREF * (DAM_ADC_Value[0] & 0xFFFF) / 4095 / 1000);
        printf("ADC2 Code Value = %d ,voltage value = %2.4fn", (DAM_ADC_Value[0] >> 16) & 0xFFFF,
               (float)VREF * ((DAM_ADC_Value[0] >> 16) & 0xFFFF) / 4095 / 1000);
    }
}

1.2 ADC_Single例程

該例程是一個基于 W55MH32 微控制器的 ADC 單通道采樣程序,主要功能是周期性采集模擬輸入信號并通過串口輸出 ADC 值及其對應(yīng)的電壓。以下是詳細的工作流程總結(jié):

1.時鐘配置

?獲取系統(tǒng)各時鐘頻率(SYSCLK/HCLK/PCLK/ADCCLK),并通過串口打印。

2.UART 配置

?初始化 USART1 為 115200 波特率,用于串口輸出數(shù)據(jù)。

3.ADC 配置

?使能 ADC1 時鐘,配置 PA6 為模擬輸入模式。

?ADC 工作在獨立模式,禁用連續(xù)轉(zhuǎn)換,啟用掃描模式(單通道時僅觸發(fā)一次轉(zhuǎn)換)。

?執(zhí)行 ADC 校準以確保精度。

void ADC_Configuration(void)
{
    uint32_t         i;
    ADC_InitTypeDef  ADC_InitStructure;
    GPIO_InitTypeDef GPIO_InitStructure;

    // 使能 ADC1 和 GPIOA 時鐘
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1, ENABLE);

    // 配置 PA6 為模擬輸入模式
    GPIO_InitStructure.GPIO_Pin   = ADC_TEST_CHANNEL_PIN; // PA6
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AIN;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    // ADC 時鐘配置(PCLK2 的 1/8)
    RCC_ADCCLKConfig(RCC_PCLK2_Div8);
    ADC_DeInit(ADC1); // 復(fù)位 ADC1

    // ADC 初始化配置
    ADC_InitStructure.ADC_Mode               = ADC_Mode_Independent; // 獨立模式
    ADC_InitStructure.ADC_ScanConvMode       = ENABLE;               // 啟用掃描模式(單通道時僅轉(zhuǎn)換一次)
    ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;              // 禁用連續(xù)轉(zhuǎn)換,需軟件觸發(fā)
    ADC_InitStructure.ADC_ExternalTrigConv   = ADC_ExternalTrigConv_None; // 軟件觸發(fā)
    ADC_InitStructure.ADC_DataAlign          = ADC_DataAlign_Right;  // 右對齊
    ADC_InitStructure.ADC_NbrOfChannel       = CONV_CHANNEL_NUM;     // 通道數(shù)(1)
    ADC_Init(ADC1, &ADC_InitStructure);

    // 配置 ADC 通道(通道 6,采樣時間 239.5 周期)
    for (i = 0; i < CONV_CHANNEL_NUM; i++)
    {
        ADC_RegularChannelConfig(ADC1, ADC_CovChannel[i], i + 1, ADC_SampleTIME[i]);
    }

    // 啟動 ADC 轉(zhuǎn)換并使能 ADC
    ADC_SoftwareStartConvCmd(ADC1, ENABLE);
    ADC_Cmd(ADC1, ENABLE);

    // ADC 校準
    ADC_ResetCalibration(ADC1);
    while (ADC_GetResetCalibrationStatus(ADC1));
    ADC_StartCalibration(ADC1);
    while (ADC_GetCalibrationStatus(ADC1));

    // 配置 DMA 傳輸
    DMA_Configuration();
}

4.DMA 配置

?設(shè)置 DMA1 通道 1 為循環(huán)模式,將 ADC 數(shù)據(jù)寄存器(ADC1->DR)的數(shù)據(jù)傳輸?shù)絻?nèi)存數(shù)組DAM_ADC_Value。

?使能 DMA 傳輸完成中斷(TC 中斷),觸發(fā)數(shù)據(jù)處理。

1.3 ADC_VrefintTemper例程

該例程是一個基于 W55MH32 的 ADC 多通道采樣程序,主要用于同時采集內(nèi)部溫度傳感器和 VREFINT(內(nèi)部參考電壓)的模擬信號,并通過串口輸出測量結(jié)果。以下是其主要工作流程如下:

1.系統(tǒng)初始化

a.UART 配置:初始化 USART1 為 115200 波特率,用于串口輸出。

b.ADC 配置:使能 ADC1 時鐘,配置為獨立模式,啟用掃描模式(多通道依次轉(zhuǎn)換)。

?配置通道 16(溫度傳感器)和通道 17(VREFINT),采樣時間 239.5 周期。

?校準 ADC 并使能內(nèi)部溫度傳感器和 VREFINT。

ADC_InitStructure.ADC_ScanConvMode = ENABLE; // 啟用掃描模式,多通道依次轉(zhuǎn)換
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; // 禁用連續(xù)轉(zhuǎn)換,需軟件觸發(fā)
ADC_TempSensorVrefintCmd(ENABLE); // 使能內(nèi)部溫度傳感器和VREFINT

c.DMA 配置:設(shè)置 DMA1 通道 1 為循環(huán)模式,將 ADC 數(shù)據(jù)寄存器(ADC1->DR)的數(shù)據(jù)傳輸?shù)絻?nèi)存數(shù)組DAM_ADC_Value。

?使能 DMA 傳輸完成中斷(TC 中斷)。

2.主循環(huán)邏輯

a.每秒調(diào)用ADC_SoftwareStartConvCmd(ADC1, ENABLE)觸發(fā) ADC 轉(zhuǎn)換。

b.延時 1 秒后重復(fù)觸發(fā),實現(xiàn)周期性采樣。

3.數(shù)據(jù)處理與輸出

void DMA1_Channel1_IRQHandler(void)
{
    if (DMA_GetITStatus(DMA1_IT_TC1) != RESET) // 檢查傳輸完成中斷
    {
        DMA_ClearITPendingBit(DMA1_IT_TC1); // 清除中斷標志
        DMA_ClearFlag(DMA1_FLAG_TC1);

        // 計算溫度傳感器和VREFINT的電壓值(VREF=3.3V,ADC精度12位)
        float tempVoltage = (float)VREF * DAM_ADC_Value[0] / 4095 / 1000; // 溫度傳感器電壓
        float vrefintVoltage = (float)VREF * DAM_ADC_Value[1] / 4095 / 1000; // VREFINT電壓

        // 串口輸出結(jié)果
        printf("Temperature Sensor AD Value: %d, Voltage: %.4f Vt", DAM_ADC_Value[0], tempVoltage);
        printf("VREFINT AD Value: %d, Voltage: %.4f Vn", DAM_ADC_Value[1], vrefintVoltage);
    }
}

a.DMA 中斷處理:當(dāng) DMA 傳輸完成時,觸發(fā)DMA1_Channel1_IRQHandler。

b.電壓計算:根據(jù)公式電壓 = VREF × ADC值 / 4095 / 1000 計算實際電壓值(VREF=3.3V)。

c.串口打印:輸出溫度傳感器和 VREFINT 的 ADC 值及電壓值。

2 下載驗證

2.1 ADC_Double例程

程序運行時,ADC1和ADC2以規(guī)則同步模式周期性采樣兩個模擬通道(PA0和PA1),轉(zhuǎn)換結(jié)果通過DMA傳輸至內(nèi)存。每次DMA傳輸完成后觸發(fā)中斷,在中斷中計算并通過串口打印ADC1和ADC2的原始數(shù)值(12位)及對應(yīng)的電壓值(單位:V),顯示間隔由主循環(huán)中的1秒延時控制。系統(tǒng)啟動時會輸出各時鐘頻率參數(shù),隨后每秒更新一次ADC數(shù)據(jù)。

wKgZO2gu9ZWAGGPDAACnMA80Ewo107.png

2.2 ADC_Single例程

程序運行時,系統(tǒng)首先輸出各時鐘頻率參數(shù),隨后每秒觸發(fā)一次ADC1通道6(PA6)的模擬信號采樣。ADC轉(zhuǎn)換結(jié)果通過DMA自動傳輸至內(nèi)存,每次DMA傳輸完成后觸發(fā)中斷,在中斷服務(wù)函數(shù)中計算并通過串口打印ADC原始值(12位)及對應(yīng)的電壓值(單位:V)。系統(tǒng)以1秒為間隔循環(huán)觸發(fā)采樣,實現(xiàn)周期性數(shù)據(jù)更新,最終在串口終端每秒顯示一次ADC數(shù)據(jù)。

wKgZPGgu9ZWASvWRAACCK8LLy50261.png

2.3 ADC_VrefintTemper例程

程序運行時,系統(tǒng)首先輸出各時鐘頻率參數(shù),隨后每秒觸發(fā)一次ADC1通道16(內(nèi)部溫度傳感器)和通道17(VREFINT)的模擬信號采樣。ADC轉(zhuǎn)換結(jié)果通過DMA自動傳輸至內(nèi)存,每次DMA傳輸完成后觸發(fā)中斷,在中斷服務(wù)函數(shù)中計算并通過串口打印兩個通道的ADC原始值(12位)及對應(yīng)的電壓值(單位:V)。系統(tǒng)以1秒為間隔循環(huán)觸發(fā)采樣,實現(xiàn)周期性數(shù)據(jù)更新,最終在串口終端每秒顯示一次內(nèi)部溫度傳感器和VREFINT的測量結(jié)果。

wKgZO2gu9ZWAGGPDAACnMA80Ewo107.png

WIZnet 是一家無晶圓廠半導(dǎo)體公司,成立于 1998 年。產(chǎn)品包括互聯(lián)網(wǎng)處理器 iMCU?,它采用 TOE(TCP/IP 卸載引擎)技術(shù),基于獨特的專利全硬連線 TCP/IP。iMCU? 面向各種應(yīng)用中的嵌入式互聯(lián)網(wǎng)設(shè)備。

WIZnet 在全球擁有 70 多家分銷商,在香港、韓國、美國設(shè)有辦事處,提供技術(shù)支持和產(chǎn)品營銷。

香港辦事處管理的區(qū)域包括:澳大利亞、印度、土耳其、亞洲(韓國和日本除外)。

審核編輯 黃宇

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

    關(guān)注

    99

    文章

    6709

    瀏覽量

    549239
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

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

    至芯科技之a(chǎn)ltera 系列FPGA教程 第十四篇 分配管腳

    至芯科技之a(chǎn)ltera 系列FPGA教程 第十四篇 分配管腳
    發(fā)表于 08-11 03:33

    視頻詳解:上海尤老師verilog入門到實戰(zhàn)第十四

    上海尤老師verilog入門到實戰(zhàn)第十四課——無線通信中的CIC插值濾波器; 百度云網(wǎng)盤鏈接后綴:/s/1i5Q9JDj, 加群討論252520964,307510678
    發(fā)表于 10-09 11:10

    「正點原子Linux連載」第十四章蜂鳴器試驗

    1)實驗平臺:正點原子Linux開發(fā)板2)摘自《正點原子I.MX6U嵌入式Linux驅(qū)動開發(fā)指南》關(guān)注官方微信號公眾號,獲取更多資料:正點原子第十四章蜂鳴器試驗 前幾章試驗中的驅(qū)動LED燈亮滅屬于
    發(fā)表于 12-21 12:05

    軟件定義無線電手冊,第十四

    軟件定義無線電手冊,第十四版。pentek公司出的資料。
    發(fā)表于 02-18 09:52

    第十四講 555定時器

    第十四講 555定時器 5.5.1 555定時器的電路結(jié)構(gòu)及其功能 一、結(jié)構(gòu)框圖(圖5.5.1 雙極型)1.
    發(fā)表于 03-30 16:20 ?4267次閱讀
    <b class='flag-5'>第十四</b>講 555定時器

    模擬電路網(wǎng)絡(luò)課件 第十四節(jié):放大電路的頻率響應(yīng)

    模擬電路網(wǎng)絡(luò)課件 第十四節(jié):放大電路的頻率響應(yīng) 在實際應(yīng)用中,電子電路所處理的信號,如語音信號、電視信號等都不是簡單的單一頻率信號,即是具有一
    發(fā)表于 09-17 10:16 ?4275次閱讀
    模擬電路網(wǎng)絡(luò)課件 <b class='flag-5'>第十四</b>節(jié):放大電路的頻率響應(yīng)

    視頻_高速放大器設(shè)計指南 第十四

    視頻_高速放大器設(shè)計指南 第十四
    發(fā)表于 03-05 15:34 ?0次下載

    PinTech品致第十四屆中國高校電力電子與電力傳動學(xué)術(shù)年會

    PinTech品致探頭邀您參加2020年10月30日至11月1日在成都金牛賓館召開的第十四屆中國高校電力電子與電力傳動學(xué)術(shù)年會。
    的頭像 發(fā)表于 10-28 14:36 ?2804次閱讀

    易華錄精彩亮相第十四屆交博會探討智慧交通新思路

    4月10日,第十四屆中國道路交通安全產(chǎn)品博覽會暨公安交警警用裝備展(以下簡稱交博會)于廈門開幕。
    的頭像 發(fā)表于 04-11 18:18 ?1194次閱讀

    才茂亮相第十四屆配電技術(shù)應(yīng)用大會

    日前,第十四屆配電技術(shù)應(yīng)用大會在南京圓滿落下帷幕。眾多行業(yè)精英齊聚一堂,共謀現(xiàn)代智慧配電網(wǎng)的宏偉藍圖。
    的頭像 發(fā)表于 08-23 09:16 ?724次閱讀

    【北京迅為】iTOP-i.MX6開發(fā)板使用手冊第四部分固件編譯第十四章非設(shè)備樹Android4.4系統(tǒng)編譯

    【北京迅為】iTOP-i.MX6開發(fā)板使用手冊第四部分固件編譯第十四章非設(shè)備樹Android4.4系統(tǒng)編譯
    的頭像 發(fā)表于 09-12 15:43 ?939次閱讀
    【北京迅為】iTOP-i.MX6開發(fā)板使用手冊第四部分固件編譯<b class='flag-5'>第十四章</b>非設(shè)備樹Android4.4系統(tǒng)編譯

    第十四屆芯原CEO論壇五大預(yù)測

    2025年1月19日,以“Chiplet的發(fā)展機遇”為主題的第十四屆芯原CEO論壇在上海海鷗麗晶酒店舉辦。
    的頭像 發(fā)表于 01-21 09:44 ?507次閱讀

    千方科技亮相第十四屆智能交通市場年會

    近日,在第十四屆智能交通市場年會上,賽文網(wǎng)“中國智能交通最具影響力企業(yè)”評選結(jié)果揭曉。千方科技再次榮登城市智能交通、高速公路兩大領(lǐng)域年度榜單,公司在數(shù)智交通領(lǐng)域的產(chǎn)品和服務(wù)持續(xù)得到行業(yè)的高度認可。
    的頭像 發(fā)表于 03-07 13:03 ?417次閱讀

    四維圖新亮相第十四屆智能交通市場年會

    3月5日-6日,由賽文交通網(wǎng)主辦的第十四屆(2025)智能交通市場年會在蘇州舉行,會上同期舉行了第十四屆智能交通最具影響力企業(yè)評選頒獎典禮。
    的頭像 發(fā)表于 03-07 16:33 ?464次閱讀

    慧爾視亮相第十四屆智能交通市場年會

    2025年3月5-6日,由賽文交通網(wǎng)主辦的第十四屆(2025)智能交通市場年會在蘇州成功召開。
    的頭像 發(fā)表于 03-07 17:15 ?696次閱讀