<strike id="kiyse"></strike>
  • <tr id="kiyse"></tr>
  • <strike id="kiyse"></strike><samp id="kiyse"><tbody id="kiyse"></tbody></samp>
    <strike id="kiyse"><s id="kiyse"></s></strike>
    <tr id="kiyse"></tr>
    <noframes id="kiyse"><code id="kiyse"></code></noframes>
    <th id="kiyse"></th>
    <samp id="kiyse"></samp>
  • <th id="kiyse"><s id="kiyse"></s></th>
  • Windows 10 ARM工控主板連接I2S音頻芯片

     2025-1-9     作者:劉乾坤     聯(lián)系作者    
    文章標(biāo)簽:C/C++音頻ESM8400系列Win10 IoT


    在Windows工控主板應(yīng)用中,音頻功能是一項(xiàng)基本的需求,USB聲卡在x86/x64 Windows系統(tǒng)上就可直接免驅(qū)使用,但這些USB聲卡通常不提供ARM上的Windows系統(tǒng)驅(qū)動(dòng)。本文將介紹如何利用安裝在ARM上的Windows工控主板——ESM8400的I2S接口、連接WM8960音頻芯片,實(shí)現(xiàn)音頻的輸入與輸出。

    ESM8400是預(yù)裝正版Windows 10 IoT企業(yè)版操作系統(tǒng)的工控主板,具有名片尺寸、超低功率、無(wú)需散熱風(fēng)扇、能在-40℃~80℃的環(huán)境溫度下穩(wěn)定工作等諸多優(yōu)點(diǎn),ESM8400設(shè)計(jì)時(shí)已經(jīng)預(yù)留了I2S接口,用于連接I2S音頻芯片。


    1. 硬件連接

    ESM8400總有32位GPIO,I2S接口與部分GPIO復(fù)用,對(duì)應(yīng)關(guān)系如下:


    ESM8400 GPIO

    信號(hào)名稱(chēng)

    信號(hào)說(shuō)明

    GPIO0

    I2S_MCLK

    系統(tǒng)時(shí)鐘,由ESM8400對(duì)外提供

    GPIO3

    I2S_RXD

    ADC串行數(shù)據(jù)輸入

    GPIO4

    I2S_LRCLK

    (WS)幀同步信號(hào),指示當(dāng)前傳輸?shù)氖亲舐暤肋€是右聲道音頻

    GPIO5

    I2S_TXD

    DAC串行數(shù)據(jù)輸出

    GPIO14

    I2S_SCK

    (BCLK)同步音頻數(shù)據(jù)傳輸?shù)奈粫r(shí)鐘信號(hào)

    除I2S信號(hào)外,WM8960還需要一組I2C信號(hào)和兩個(gè)額外的IO信號(hào)用于配置:

    ESM8400引腳

    缺省功能

    系統(tǒng)支持音頻時(shí)的復(fù)用功能

    B12

    TSC_SCL

    WM8960 I2C接口

    B13

    TSC_SDA

    WM8960 I2C接口

    D3

    GPIO2

    AUD_INTn

    D16

    GPIO15

    AUD_PWR_EN

    ESM8400連接WM8960的原理圖如下:

    w1.png

    在ESM8400開(kāi)發(fā)評(píng)估底板上連接WM8960音頻模塊:

    w2.png


    2. WM8960音頻芯片的自動(dòng)識(shí)別

    為了滿足不同應(yīng)用的需求,我們?cè)谙到y(tǒng)UEFI中增加了WM8960芯片自動(dòng)識(shí)別的功能,ESM8400的I2S接口缺省配置為GPIO,當(dāng)在UEFI中通過(guò)I2C識(shí)別到WM8960芯片時(shí),才切換為I2S功能。I2C的識(shí)別代碼特別簡(jiǎn)單,通過(guò)I2C操作WM8960的復(fù)位寄存器,I2C操作成功即表示連接了WM8960芯片,然后將對(duì)應(yīng)的GPIO切換為I2S狀態(tài)。WM8960自動(dòng)識(shí)別代碼如下:

    RegAddr = (0xf << 1);
    Data = 0x01;
    Status =   iMXI2cWrite(&Wm8960I2cConfig, RegAddr, &Data, 1); 
    if(Status == RETURN_SUCCESS)
    {
        // Mux the SAI3 pins to wm8960 codec
        IOMUXC_SW_MUX_CTL_PAD_SAI3_TXFS =   IOMUXC_MUX_ALT0;
        IOMUXC_SW_MUX_CTL_PAD_SAI3_TXC  = IOMUXC_MUX_ALT0;
        IOMUXC_SW_MUX_CTL_PAD_SAI3_TXD  = IOMUXC_MUX_ALT0;
        IOMUXC_SW_MUX_CTL_PAD_SAI3_RXD  = IOMUXC_MUX_ALT0;
        IOMUXC_SW_MUX_CTL_PAD_SAI3_MCLK =   IOMUXC_MUX_ALT0;
     
        IOMUXC_SW_PAD_CTL_PAD_SAI3_TXFS =   SAI_PAD_CFG_OUT;
        IOMUXC_SW_PAD_CTL_PAD_SAI3_TXC  = SAI_PAD_CFG_OUT;
        IOMUXC_SW_PAD_CTL_PAD_SAI3_TXD  = SAI_PAD_CFG_OUT;
        IOMUXC_SW_PAD_CTL_PAD_SAI3_RXD  = SAI_PAD_CFG_IN;
        IOMUXC_SW_PAD_CTL_PAD_SAI3_MCLK =   SAI_PAD_CFG_OUT;
     
        IOMUXC_AUDIOMIX_SAI3_RXDATA_SELECT_INPUT_0 = IOMUXC_MUX_ALT1;
     
        DebugPrint(0xffffffff,  "Find the audio codec.\n" );
    }


    w3.png

    ESM8400 ARM Windows工控主板實(shí)現(xiàn)WM8960 I2S音頻輸入/輸出


    文章標(biāo)簽:C/C++音頻ESM8400系列Win10 IoT
    亚洲国产精品无码久久SM| 国产三级精品三级男人的天堂| 国产精品亚洲产品一区二区三区| 91综合精品网站久久| 亚洲国产成人乱码精品女人久久久不卡| 91精品久久久久久久久中文字幕| 精品多毛少妇人妻AV免费久久| 99re最新在线精品| 久久99精品一久久久久久| 亚洲日韩中文在线精品第一| 在线精品视频一区二区| 久久精品中文字幕免费| 亚洲国产精品碰碰| 99久久免费精品国产72精品九九| 欧洲精品色在线观看| 中日韩产精品1卡二卡三卡| 精品哟哟哟国产在线不卡| 中文字幕动漫精品专区| 精品一区二区三区四区| 国产成人久久精品二区三区| 久久精品国产72国产精| 精品人妻无码区在线视频 | 久久er99热精品一区二区| 91精品国产高清91久久久久久| 国产午夜精品1区2区3福利| 97久久久精品综合88久久| 久久亚洲国产成人精品性色| 久久久精品久久久久久| 亚洲av无码国产精品色在线看不卡| 97久久精品无码一区二区| 91免费国产精品| 无码人妻精品一区二区三区夜夜嗨 | 精品亚洲国产成人av| 亚洲国产成人精品电影| 日韩精品系列产品| 国产亚洲精品va在线| 99精品高清视频一区二区| 国产精品免费αv视频| 精品一区二区三区视频| 国产精品资源在线观看| 337P日本欧洲亚洲大胆精品|