<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Cortex-M0的USB接口在智能手機底座音響中的應(yīng)用

          Cortex-M0的USB接口在智能手機底座音響中的應(yīng)用

          作者: 時間:2013-07-16 來源:網(wǎng)絡(luò) 收藏

          兩組I2C控制器,I2C為雙線,雙向串行總線,通過簡單有效的連線方式實現(xiàn)器件間的數(shù)據(jù)交換。I2C標(biāo)準(zhǔn)是多主機總線,包括沖突檢測和仲裁以防止在兩個或多個主機試圖同時控制總線時發(fā)生的數(shù)據(jù)損壞。這樣MCU在對音頻解碼器和加密芯片等外部設(shè)備作控制。SPI可以外接如液晶顯示屏等需要SPI通訊的外部設(shè)備。集成了UART,PS/2,GPIO等更豐富了用戶的需求。

          MUC集成的時鐘控制器為整個芯片提供時鐘源,包括系統(tǒng)時鐘和所有外圍設(shè)備時鐘。其中一個外部 4~24 MHz 高速晶振可以為提供時鐘源,一個22.1184MHz內(nèi)部時鐘可以到UART接口傳輸?shù)臅r鐘。另外還有一個內(nèi)部 10 KHz 低速振蕩器。因此,該MCU對于工作時鐘的設(shè)定,提供了很大的靈活性。

          該控制器還通過單獨的時鐘關(guān)或開、時鐘源選擇和分頻器來進行功耗控制。CPU使能PWR_DOWN_EN位后, 內(nèi)核執(zhí)行WFI指令,芯片將進入掉電模式。等喚醒中斷發(fā)生,將退出掉電模式。在掉電模式下,時鐘控制器關(guān)閉外部 4~24 MHz 高速晶振和內(nèi)部 22.1184 MHz 高速振蕩器,以降低整個系統(tǒng)的功耗。

          根據(jù)這個MCU的資源我們可以搭建起一個的基本的系統(tǒng)。

          Cortex-M0的USB接口在智能手機底座音響中的應(yīng)用

          首先,協(xié)議認證。協(xié)議數(shù)據(jù)通過MCU的輸入后轉(zhuǎn)到I2C傳送到解碼芯片解密后再由送回到上位機認證,通過了認證就可以進行下一步的音頻傳輸。

          USB輸入的數(shù)字音頻數(shù)據(jù)PCM碼發(fā)送到NUC123 USB的512字節(jié)的SRAM中,通過PDMA1搬送到了系統(tǒng)的SRAM,再通過PDMA2把PCM碼搬動到I2S的緩存中,再通過I2S傳輸?shù)揭纛l解碼器進行播放。系統(tǒng)SRAM達到20K字節(jié),有足夠的空間做音頻同步或音頻數(shù)據(jù)的運算等等。由于系統(tǒng)集成有6通道的PDMA,極大提升了音頻同步傳輸?shù)男?。通過上位機指定的HID協(xié)議,用MCU的GPIO接口設(shè)計相關(guān)按鍵,將上位機指定命令字符發(fā)送到上位機,實現(xiàn)播放器控制等功能。

          這樣一個低功耗的高性價比的平臺就搭建起來了,根據(jù)不同需要可以選擇不同的音頻解碼器、功放、箱體和喇叭,一個簡單的就設(shè)計完成了。MCU還有很多空閑的接口,可以根據(jù)不同的要求,增加相關(guān)的功能,如藍牙通訊、液晶顯示、紅外遙控…這就需要消費者和設(shè)計師的想象力了。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();