在线观看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)不再提示

【英飛凌PSoC 6 RTT開(kāi)發(fā)板試用】語(yǔ)音識(shí)別之二:音頻采集

嵌入式USB開(kāi)發(fā) ? 來(lái)源:嵌入式USB開(kāi)發(fā) ? 作者:嵌入式USB開(kāi)發(fā) ? 2023-07-11 07:43 ? 次閱讀

一. 音頻采集

原理圖

從原理圖看到有6路模擬輸入,分別對(duì)應(yīng)

P10.0~P10.5, VREF為模擬參考電壓。

image.png

image.png

使用的是MAX4466的MIC,接到ADC0,如下圖所示

image.png

image.png

image.png

配置模擬采集引腳

image.png

代碼

Adc.c

#include "cy_pdl.h"
#include "cyhal.h"
#include "cybsp.h"
#include "cy_retarget_io.h"

#define VPLUS_CHANNEL_0  (P10_0)
/* Conversion factor */
#define MICRO_TO_MILLI_CONV_RATIO        (1000u)

/* Acquistion time in nanosecond */
#define ACQUISITION_TIME_NS              (116680u)

/* ADC Scan delay in millisecond */
#define ADC_SCAN_DELAY_MS                (200u)

/*******************************************************************************
*       Enumerated Types
*******************************************************************************/
/* ADC Channel constants*/
enum ADC_CHANNELS
{
  CHANNEL_0 = 0,
  NUM_CHANNELS
} adc_channel;

/*******************************************************************************
* Global Variables
*******************************************************************************/
/* ADC Object */
cyhal_adc_t adc_obj;

/* ADC Channel 0 Object */
cyhal_adc_channel_t adc_chan_0_obj;

/* Default ADC configuration */
const cyhal_adc_config_t adc_config = {
        .continuous_scanning=false, // Continuous Scanning is disabled
        .average_count=1,           // Average count disabled
        .vref=CYHAL_ADC_REF_VDDA,   // VREF for Single ended channel set to VDDA
        .vneg=CYHAL_ADC_VNEG_VSSA,  // VNEG for Single ended channel set to VSSA
        .resolution = 12u,          // 12-bit resolution
        .ext_vref = NC,             // No connection
        .bypass_pin = NC };       // No connection

/* Asynchronous read complete flag, used in Event Handler */
static bool async_read_complete = true;
#define NUM_SCAN                    (1000)
#define NUM_CHANNELS                (1)
/* Variable to store results from multiple channels during asynchronous read*/
int32_t result_arr[NUM_CHANNELS * NUM_SCAN] = {0};

static void adc_event_handler(void* arg, cyhal_adc_event_t event)
{
    if(0u != (event & CYHAL_ADC_ASYNC_READ_COMPLETE))
    {
        /* Set async read complete flag to true */
        async_read_complete = true;
    }
}

int adc_init(void)
{
    /* Variable to capture return value of functions */
    cy_rslt_t result;

    /* Initialize ADC. The ADC block which can connect to the channel 0 input pin is selected */
    result = cyhal_adc_init(&adc_obj, VPLUS_CHANNEL_0, NULL);
    if(result != CY_RSLT_SUCCESS)
    {
        printf("ADC initialization failed. Error: %ld\\n", (long unsigned int)result);
        CY_ASSERT(0);
    }

    /* ADC channel configuration */
    const cyhal_adc_channel_config_t channel_config = {
            .enable_averaging = false,  // Disable averaging for channel
            .min_acquisition_ns = ACQUISITION_TIME_NS, // Minimum acquisition time set to 1us
            .enabled = true };          // Sample this channel when ADC performs a scan

    /* Initialize a channel 0 and configure it to scan the channel 0 input pin in single ended mode. */
    result  = cyhal_adc_channel_init_diff(&adc_chan_0_obj, &adc_obj, VPLUS_CHANNEL_0,
                                          CYHAL_ADC_VNEG, &channel_config);
    if(result != CY_RSLT_SUCCESS)
    {
        printf("ADC first channel initialization failed. Error: %ld\\n", (long unsigned int)result);
        CY_ASSERT(0);
    }

    /* Register a callback to handle asynchronous read completion */
     cyhal_adc_register_callback(&adc_obj, &adc_event_handler, result_arr);

     /* Subscribe to the async read complete event to process the results */
     cyhal_adc_enable_event(&adc_obj, CYHAL_ADC_ASYNC_READ_COMPLETE, CYHAL_ISR_PRIORITY_DEFAULT, true);

     printf("ADC is configured in multichannel configuration.\\r\\n\\n");
     printf("Channel 0 is configured in single ended mode, connected to the \\r\\n");
     printf("channel 0 input pin. Provide input voltage at the channel 0 input pin \\r\\n");
     return 0;
}

int adc_samp(void)
{
    /* Variable to capture return value of functions */
    cy_rslt_t result;

    /* Variable to store ADC conversion result from channel 0 */
    int32_t adc_result_0 = 0;


        /* Clear async read complete flag */
        async_read_complete = false;

        /* Initiate an asynchronous read operation. The event handler will be called
         * when it is complete. */
        memset(result_arr,0,sizeof(result_arr));
        cyhal_gpio_write_internal(CYBSP_USER_LED,true);
        result = cyhal_adc_read_async_uv(&adc_obj, NUM_SCAN, result_arr);
        if(result != CY_RSLT_SUCCESS)
        {
            printf("ADC async read failed. Error: %ld\\n", (long unsigned int)result);
            CY_ASSERT(0);
        }
        while(async_read_complete == false);
        cyhal_gpio_write_internal(CYBSP_USER_LED,false);
        /*
         * Read data from result list, input voltage in the result list is in
         * microvolts. Convert it millivolts and print input voltage
         *
         */
        for(int i=0; i< NUM_SCAN; i++)
        {
            adc_result_0 = result_arr[i] / MICRO_TO_MILLI_CONV_RATIO;
            printf("/*%4ld*/\\r\\n", (long int)adc_result_0);
        }

    return 0;
}

Adc.h

#ifndef ADC_H
#define ADC_H

int adc_init(void);
int adc_samp(void);

#endif

Main.c調(diào)用

adc_init();

adc_samp();

時(shí)鐘

時(shí)鐘源是100Mhz,12分頻=8.33M,滿足1.8MHz~18MHz之間的要求

默認(rèn)是按照8M配置

image.png

image.png

采樣時(shí)間

采樣前后翻轉(zhuǎn)LED用示波器測(cè)量時(shí)間

int adc_samp(void)
{
    /* Variable to capture return value of functions */
    cy_rslt_t result;

    /* Variable to store ADC conversion result from channel 0 */
    int32_t adc_result_0 = 0;


        /* Clear async read complete flag */
        async_read_complete = false;

        /* Initiate an asynchronous read operation. The event handler will be called
         * when it is complete. */
        memset(result_arr,0,sizeof(result_arr));
        cyhal_gpio_write_internal(CYBSP_USER_LED,true);
        result = cyhal_adc_read_async_uv(&adc_obj, NUM_SCAN, result_arr);
        if(result != CY_RSLT_SUCCESS)
        {
            printf("ADC async read failed. Error: %ld\\n", (long unsigned int)result);
            CY_ASSERT(0);
        }
        while(async_read_complete == false);
        cyhal_gpio_write_internal(CYBSP_USER_LED,false);
        /*
         * Read data from result list, input voltage in the result list is in
         * microvolts. Convert it millivolts and print input voltage
         *
         */
        for(int i=0; i< NUM_SCAN; i++)
        {
            adc_result_0 = result_arr[i] / MICRO_TO_MILLI_CONV_RATIO;
            printf("/*%4ld*/\\r\\n", (long int)adc_result_0);
        }

    return 0;
}

采樣1000次,分別設(shè)置采樣時(shí)間為2uS和1uS對(duì)比。

#define ACQUISITION_TIME_NS (2000u)

10.28mS

image.png

#define ACQUISITION_TIME_NS (1000u)

9.32mS

image.png

10.28-9.32=0.96mS 1000次約1mS,1次剛好是1uS。

而1000次除去采樣時(shí)間其他時(shí)間為8.32mS,即一次8.32uS。

因?yàn)榍懊嬖O(shè)置了時(shí)鐘為8.33MHz, 從前面時(shí)序一節(jié)可以看到,除去采樣時(shí)間,其他轉(zhuǎn)換時(shí)間等需要14個(gè)CLK,所以需要14/8.33uS=1.7uS. 剩余的8.32-1.7為數(shù)據(jù)搬運(yùn),軟件處理等時(shí)間。

采樣值正確性

1.545V和示波器采集為1.54V差不多是正確的,這里沒(méi)有高精度萬(wàn)用表就不對(duì)測(cè)試精度了,只測(cè)試了正確性。

image.png

image.png

音頻采集

一次采集1000次然后串口打印,使用SerialStudio可視化顯示

int adc_samp(void)
{
    /* Variable to capture return value of functions */
    cy_rslt_t result;

    /* Variable to store ADC conversion result from channel 0 */
    int32_t adc_result_0 = 0;


        /* Clear async read complete flag */
        async_read_complete = false;

        /* Initiate an asynchronous read operation. The event handler will be called
         * when it is complete. */
        memset(result_arr,0,sizeof(result_arr));
        cyhal_gpio_write_internal(CYBSP_USER_LED,true);
        result = cyhal_adc_read_async_uv(&adc_obj, NUM_SCAN, result_arr);
        if(result != CY_RSLT_SUCCESS)
        {
            printf("ADC async read failed. Error: %ld\\n", (long unsigned int)result);
            CY_ASSERT(0);
        }
        while(async_read_complete == false);
        cyhal_gpio_write_internal(CYBSP_USER_LED,false);
        /*
         * Read data from result list, input voltage in the result list is in
         * microvolts. Convert it millivolts and print input voltage
         *
         */
        for(int i=0; i< NUM_SCAN; i++)
        {
            adc_result_0 = result_arr[i] / MICRO_TO_MILLI_CONV_RATIO;
            printf("/*%4ld*/\\r\\n", (long int)adc_result_0);
        }

    return 0;
}

串口打印到PC,可視化顯示如下

image.png

審核編輯:湯梓紅

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

    關(guān)注

    68

    文章

    2324

    瀏覽量

    140256
  • PSoC
    +關(guān)注

    關(guān)注

    12

    文章

    175

    瀏覽量

    93127
  • 音頻
    +關(guān)注

    關(guān)注

    29

    文章

    3026

    瀏覽量

    83108
  • 語(yǔ)音識(shí)別
    +關(guān)注

    關(guān)注

    39

    文章

    1774

    瀏覽量

    113981
  • 開(kāi)發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5565

    瀏覽量

    102813
  • RTT
    RTT
    +關(guān)注

    關(guān)注

    0

    文章

    66

    瀏覽量

    17550
收藏 人收藏

    評(píng)論

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

    英飛凌PSoC 6】新建RTT工程

    介紹英飛凌PSoC 6 RTT開(kāi)發(fā)板環(huán)境創(chuàng)建
    的頭像 發(fā)表于 04-24 15:29 ?2307次閱讀
    【<b class='flag-5'>英飛凌</b><b class='flag-5'>PSoC</b> <b class='flag-5'>6</b>】新建<b class='flag-5'>RTT</b>工程

    英飛凌PSoC 6 RTT開(kāi)發(fā)板試用語(yǔ)音識(shí)別之一:移植CMSIS-DSP庫(kù)-FFT測(cè)試

    后面會(huì)基于本開(kāi)發(fā)板實(shí)現(xiàn)語(yǔ)音識(shí)別,需要使用到FFT等關(guān)鍵算法,所以先移植CMSIS-DSP庫(kù),并進(jìn)行FFT的測(cè)試。
    的頭像 發(fā)表于 07-11 00:10 ?4926次閱讀
    【<b class='flag-5'>英飛凌</b><b class='flag-5'>PSoC</b> <b class='flag-5'>6</b> <b class='flag-5'>RTT</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>試用</b>】<b class='flag-5'>語(yǔ)音</b><b class='flag-5'>識(shí)別</b>之一:移植CMSIS-DSP庫(kù)-FFT測(cè)試

    【新品發(fā)布】英飛凌PSoC 6 RTT物聯(lián)網(wǎng)開(kāi)發(fā)板內(nèi)容詳解

    4月12日,英飛凌聯(lián)合 RT-Thread 發(fā)布PSoC? 62 with CAPSENSE? evaluation kit開(kāi)發(fā)板 (以下簡(jiǎn)稱PSoC
    發(fā)表于 04-13 13:46

    【大聯(lián)大品佳 Nuvoton ISD9160語(yǔ)音識(shí)別試用申請(qǐng)】基于大聯(lián)大品佳 Nuvoton ISD9160 語(yǔ)音識(shí)別開(kāi)發(fā)板的微型冰箱數(shù)據(jù)采集

    項(xiàng)目名稱:基于大聯(lián)大品佳 Nuvoton ISD9160 語(yǔ)音識(shí)別開(kāi)發(fā)板的微型冰箱數(shù)據(jù)采集試用計(jì)劃:申請(qǐng)理由本人在本科、碩士及工作階段有8年單片機(jī)開(kāi)
    發(fā)表于 08-10 17:40

    [CB5654智能語(yǔ)音開(kāi)發(fā)板測(cè)評(píng)] 語(yǔ)音識(shí)別開(kāi)發(fā)板的比較

    隨著語(yǔ)音識(shí)別技術(shù)的發(fā)展,帶有語(yǔ)音識(shí)別處理功能的開(kāi)發(fā)板也逐漸豐富起來(lái),目前供用戶進(jìn)行測(cè)評(píng)的開(kāi)發(fā)板
    發(fā)表于 03-09 08:11

    【資料下載】英飛凌PSoC 6 RTT物聯(lián)網(wǎng)開(kāi)發(fā)板

    Infineon Psoc6-evaluationkit-062S2 說(shuō)明開(kāi)發(fā)板免費(fèi)試用活動(dòng):https://bbs.elecfans.com/jishu_2349212_1_1.html簡(jiǎn)介本文
    發(fā)表于 04-13 13:38

    【新品試用英飛凌PSoC 6 RTT開(kāi)發(fā)板試用活動(dòng)

    概述、軟件調(diào)試、硬件接入、視頻演示,不少于500字+2張圖片。 2)報(bào)告形式:標(biāo)題格式 【評(píng)測(cè)活動(dòng)標(biāo)題+自擬標(biāo)題】示例: 【英飛凌PSoC 6 RTT
    發(fā)表于 04-13 15:26

    英飛凌PSoC 6 RTT開(kāi)發(fā)板試用

    單周期乘法和MPU,可以充分發(fā)揮 PSoC6 雙核芯片性能。 該開(kāi)發(fā)板核心 板載資源 如下: MCU:CY8C624ABZI-S2D44,Cortex-M4主頻 150MHz,Cortex-M0主頻
    發(fā)表于 05-30 20:47

    英飛凌PSoC 6 RTT開(kāi)發(fā)板試用】+開(kāi)箱測(cè)試

    英飛凌PSoC 6 RTT開(kāi)發(fā)板試用】+開(kāi)箱測(cè)試 硬件資源介紹
    發(fā)表于 06-05 01:06

    【飛凌RZ/G2L開(kāi)發(fā)板試用體驗(yàn)】飛凌RZ/G2L的開(kāi)發(fā)板試用測(cè)評(píng)報(bào)告 — 視頻采集開(kāi)發(fā)

    開(kāi)發(fā)板 試用測(cè)評(píng)報(bào)告 — 視頻采集開(kāi)發(fā) 大信(QQ:8125036) ? ? ?? ?在 電子 發(fā)燒友 論壇 上看到飛凌RZ/G2L的
    的頭像 發(fā)表于 10-24 17:01 ?1780次閱讀
    【飛凌RZ/G2L<b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>試用</b>體驗(yàn)】飛凌RZ/G2L的<b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>試用</b>測(cè)評(píng)報(bào)告<b class='flag-5'>二</b> — 視頻<b class='flag-5'>采集</b><b class='flag-5'>開(kāi)發(fā)</b>

    英飛凌聯(lián)合 RT-Thread 發(fā)布 PSoC? 62 with CAPSENSE ? evaluation kit開(kāi)發(fā)板

    近日,RT-Thread 社區(qū)團(tuán)隊(duì)打造了新品開(kāi)發(fā)板英飛凌聯(lián)合 RT-Thread 發(fā)布 ?PSoC 62 with CAPSENSE evaluation kit開(kāi)發(fā)板?(以下簡(jiǎn)稱
    的頭像 發(fā)表于 04-13 01:35 ?2299次閱讀

    基于PSOC6開(kāi)發(fā)板構(gòu)建的智能小車

    本項(xiàng)目是基于Psoc6-evaluationkit-062S2開(kāi)發(fā)板構(gòu)建的智能小車。該開(kāi)發(fā)板由RT-Thread與英飛凌聯(lián)合推出,集成了一顆32位雙核CPU子系統(tǒng),包括150MHz的A
    發(fā)表于 07-28 15:14 ?1143次閱讀
    基于<b class='flag-5'>PSOC6</b><b class='flag-5'>開(kāi)發(fā)板</b>構(gòu)建的智能小車

    英飛凌開(kāi)發(fā)板模塊評(píng)測(cè)任務(wù)大挑戰(zhàn)-SPI驅(qū)動(dòng)測(cè)試

    使用PSoC? 62 with CAPSENSE? evaluation kit開(kāi)發(fā)板適配的RTT SPI驅(qū)動(dòng),做顯示測(cè)試。
    發(fā)表于 08-10 15:44 ?879次閱讀
    <b class='flag-5'>英飛凌</b><b class='flag-5'>開(kāi)發(fā)板</b>模塊評(píng)測(cè)任務(wù)大挑戰(zhàn)-SPI驅(qū)動(dòng)測(cè)試

    英飛凌測(cè)評(píng)】英飛凌PSoC? 62開(kāi)發(fā)板試用報(bào)告-LCD ILI9341 8080 DEMO

    # Infineon Psoc6-evaluationkit-062S2 說(shuō)明 ## 簡(jiǎn)介 本文檔為 `RT-Thread` 為 `PSoC6 CY8CKIT-062S2-43012` 開(kāi)發(fā)板提供
    的頭像 發(fā)表于 03-07 21:07 ?1189次閱讀
    【<b class='flag-5'>英飛凌</b>測(cè)評(píng)】<b class='flag-5'>英飛凌</b><b class='flag-5'>PSoC</b>? 62<b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>試用</b>報(bào)告-LCD ILI9341 8080 DEMO

    玩轉(zhuǎn)PSoC 6 RTT積木式開(kāi)發(fā)套件,實(shí)現(xiàn)毫米波雷達(dá)等實(shí)用功能

    本期英飛凌手工課,將由來(lái)自英飛凌的工程師Jenson給大家?guī)?lái)PSoC62withCAPSENSEevaluationkit(下稱PSoC6RTT開(kāi)
    的頭像 發(fā)表于 03-20 08:35 ?1556次閱讀
    玩轉(zhuǎn)<b class='flag-5'>PSoC</b> <b class='flag-5'>6</b> <b class='flag-5'>RTT</b>積木式<b class='flag-5'>開(kāi)發(fā)</b>套件,實(shí)現(xiàn)毫米波雷達(dá)等實(shí)用功能
    主站蜘蛛池模板: 一级黄色毛片免费看 | 免费视频观看 | 国产盗摄女子私密保健视频 | 精品亚洲大全 | 夜夜澡人人爽人人喊_欧美 夜夜综合网 | 欧美午夜寂寞影院安卓列表 | 亚洲成人毛片 | 特级全黄一级毛片免费 | 天堂中文字幕在线观看 | 国产精品 视频一区 二区三区 | 欧美性猛交xxxx乱大交高清 | 永久免费精品视频 | 日本在线一本 | 色中文字幕在线 | 中文字幕一区二区视频 | 午夜视频在线观看一区 | 国内免费视频成人精品 | 亚洲色五月 | 久久天天躁狠狠躁夜夜躁 | 五月激情综合 | 国产精品伦视频观看免费 | 8050网午夜| 色播基地 | 老头天天吃我奶躁我的动图 | 天天舔天天爽 | 成人伊人青草久久综合网 | 日韩欧免费一区二区三区 | 天天在线天天在线天天影视 | 在线观看一二三区 | 永久福利盒子日韩日韩免费看 | 欧美视频免费一区二区三区 | 特级黄色淫片 | 4虎影视国产在线观看精品 4虎影院永久地址www | 国产日韩精品一区二区三区 | 久久天天躁狠狠躁夜夜躁综合 | 色猫av| 一级不卡毛片免费 | 国产一区二区在线视频播放 | 国产内地激情精品毛片在线一 | 成人国产在线24小时播放视频 | 色多多视频在线播放 |