色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

i.MX RT600 BCLK受干擾影響WS頻率解決方案

恩智浦MCU加油站 ? 來源:周晶晶 ? 作者:周晶晶 ? 2023-09-14 08:55 ? 次閱讀
問題描述最近遇到客戶發現一個很有意思的問題,客戶使用i.MX RT600 I2S產生2通道的I2S波形,配置希望輸出I2S波形:

48Khz 采樣率,32bit, 2通道, BCLK輸出3.072Mhz。

測試發現現象很奇怪,如果BCLK連接的模塊阻抗改變,會導致正常應該輸出48K的LRCK(WS)頻率會變動,有時候變成96Khz,客戶的模塊是專用的ASIC

wKgZomUCWxKAT6ItAACRwTXfyro267.png

客戶反應,這個問題同樣可以在NXP MIMXRT685-AUD-EVK板子上復現,因為AUD-EVK FC2P0_14連接到了外部LED驅動電路

wKgZomUCWxOAXoQaAAEwu61d490265.png

如果是官方的代碼配置,不會復現問題,如果是使用客戶的代碼,能夠復現問題。

wKgZomUCWxOADW4VAAEcfwe6omk844.png

如果斷開R397 1_2的電阻,問題就不會復現,連接之后就會復現。

所謂復現:測試P0_15 LRCK采樣率從期望的48Khz變成了96Khz:

wKgZomUCWxSAKooWAAa8UOVqu8E212.png

所謂不復現:測試P0_15 LRCK采樣率就是期望的48Khz:

wKgZomUCWxSAde7kAAb5PrW4iEM566.png

從I2S的構架上講,不應該出現具體I2S IP的配置因為外部的驅動情況導致不同的輸出頻率,而且官方的代碼直接修改接口和引腳也不會出現,那么問題究竟出在哪里呢?

問題分析與解決方案經過查看官方SDK的配置和客戶提供的代碼,發現差別很簡單,在于pinmux.c對于P0_14, P0_15的配置,客戶復現問題的配置如下:
const uint32_t port0_pin14_config = (/* Pin is configured as FC2_SCK */
                                          IOPCTL_PIO_FUNC1 |
                                          /* Disable pull-up / pull-down function */
                                          IOPCTL_PIO_PUPD_DI |
                                          /* Enable pull-down function */
                                          IOPCTL_PIO_PULLDOWN_EN |
                                          /* Enables input buffer function */
                                          IOPCTL_PIO_INBUF_EN |
                                          /* Normal mode */
                                          IOPCTL_PIO_SLEW_RATE_NORMAL |
                                          /* Normal drive */
                                         IOPCTL_PIO_FULLDRIVE_DI |
                                          /* Analog mux is disabled */
                                          IOPCTL_PIO_ANAMUX_DI |
                                          /* Pseudo Output Drain is disabled */
                                          IOPCTL_PIO_PSEDRAIN_DI |
                                          /* Input function is not inverted */
                                          IOPCTL_PIO_INV_DI);
     /* PORT0 PIN14 (coords: A3) is configured as FC2_SCK */
     IOPCTL_PinMuxSet(IOPCTL, 0U, 14U, port0_pin14_config);


     const uint32_t port0_pin15_config = (/* Pin is configured as FC2_TXD_SCL_MISO_WS */
                                          IOPCTL_PIO_FUNC1 |
                                          /* Disable pull-up / pull-down function */
                                          IOPCTL_PIO_PUPD_DI |
                                          /* Enable pull-down function */
                                          IOPCTL_PIO_PULLDOWN_EN |
                                          /* Enables input buffer function */
                                          IOPCTL_PIO_INBUF_EN |
                                          /* Normal mode */
                                          IOPCTL_PIO_SLEW_RATE_NORMAL |
                                          /* Normal drive */
                                          IOPCTL_PIO_FULLDRIVE_DI |
                                          /* Analog mux is disabled */
                                          IOPCTL_PIO_ANAMUX_DI |
                                          /* Pseudo Output Drain is disabled */
                                          IOPCTL_PIO_PSEDRAIN_DI |
                                          /* Input function is not inverted */
                                          IOPCTL_PIO_INV_DI);
     /* PORT0 PIN15 (coords: A5) is configured as FC2_TXD_SCL_MISO_WS */
     IOPCTL_PinMuxSet(IOPCTL, 0U, 15U, port0_pin15_config);

官方不復現問題的配置如下:

const uint32_t port0_pin14_config = (/* Pin is configured as FC2_SCK */
                                          IOPCTL_PIO_FUNC1 |
                                          /* Disable pull-up / pull-down function */
                                          IOPCTL_PIO_PUPD_DI |
                                          /* Enable pull-down function */
                                          IOPCTL_PIO_PULLDOWN_EN |
                                          /* Enables input buffer function */
                                          IOPCTL_PIO_INBUF_EN |
                                          /* Normal mode */
                                          IOPCTL_PIO_SLEW_RATE_NORMAL |
                                          /* Normal drive */
                IOPCTL_PIO_FULLDRIVE_EN  |
                                          /* Analog mux is disabled */
                                          IOPCTL_PIO_ANAMUX_DI |
                                          /* Pseudo Output Drain is disabled */
                                          IOPCTL_PIO_PSEDRAIN_DI |
                                          /* Input function is not inverted */
                                          IOPCTL_PIO_INV_DI);
     /* PORT0 PIN14 (coords: A3) is configured as FC2_SCK */
     IOPCTL_PinMuxSet(IOPCTL, 0U, 14U, port0_pin14_config);


     const uint32_t port0_pin15_config = (/* Pin is configured as FC2_TXD_SCL_MISO_WS */
                                          IOPCTL_PIO_FUNC1 |
                                          /* Disable pull-up / pull-down function */
                                          IOPCTL_PIO_PUPD_DI |
                                          /* Enable pull-down function */
                                          IOPCTL_PIO_PULLDOWN_EN |
                                          /* Enables input buffer function */
                                          IOPCTL_PIO_INBUF_EN |
                                          /* Normal mode */
                                          IOPCTL_PIO_SLEW_RATE_NORMAL |
                                          /* Normal drive */
                IOPCTL_PIO_FULLDRIVE_EN  |
                                          /* Analog mux is disabled */
                                          IOPCTL_PIO_ANAMUX_DI |
                                          /* Pseudo Output Drain is disabled */
                                          IOPCTL_PIO_PSEDRAIN_DI |
                                          /* Input function is not inverted */
                                          IOPCTL_PIO_INV_DI);
     /* PORT0 PIN15 (coords: A5) is configured as FC2_TXD_SCL_MISO_WS */
     IOPCTL_PinMuxSet(IOPCTL, 0U, 15U, port0_pin15_config);

實際上,只要BCLK P0_14的引腳配置為FULL drive即可。

wKgZomUCWxWAL0VtAACgGdH0OzA255.png

可以看到,如果配置為Full output driver,驅動能力是normal輸出的兩倍。所以,問題出在BCLK的引腳驅動能力這塊。

然而,推薦客戶改變驅動能力的方式,縱然可以輸出正確的48Khz采樣率波形,客戶并不接受,認為高驅動能力也代表著功耗的加大,而他們的產品是對功耗要求極高的,必須要在普通驅動能力下解決問題。所以進一步分析波形,通過使用高采樣率的示波器20Gsa/s,2G探頭抓取出問題時候的BCLK,可以發現有一些毛刺:

wKgZomUCWxWAKCmCAAF1yvlhwKQ128.png

過內部的溝通,也認為這個BCLK毛刺是導致問題的原因。這里需要注意的是,有些示波器,如果采樣率低可能抓不到這個毛刺,還有些探頭,阻抗比較小,導致探頭加上到BCLK,直接問題消失的情況,所以建議使用高阻抗探頭,比如1M歐,1G采樣率以上的探頭即可抓到。

由于客戶不接受驅動能力的改變,所以這里還可以考慮改變斜率,讓上升下降變緩,濾掉毛刺區域,改變配置如下:

#define IOPCTL_PIO_SLEW_RATE_SLEW 0X80 
  const uint32_t port0_pin14_config = (/* Pin is configured as FC2_SCK */
                                           IOPCTL_PIO_FUNC1 |
                                           /* Disable pull-up / pull-down function */
                                           IOPCTL_PIO_PUPD_DI |
                                           /* Enable pull-down function */
                                           IOPCTL_PIO_PULLDOWN_EN |
                                           /* Enables input buffer function */
                                           IOPCTL_PIO_INBUF_EN |
                                           /* Normal mode */
                IOPCTL_PIO_SLEW_RATE_SLEW|//0X80|// IOPCTL_PIO_SLEW_RATE_NORMAL |
                                           /* Normal drive */
                                           IOPCTL_PIO_FULLDRIVE_DI |
                                           /* Analog mux is disabled */
                                           IOPCTL_PIO_ANAMUX_DI |
                                           /* Pseudo Output Drain is disabled */
                                           IOPCTL_PIO_PSEDRAIN_DI |
                                           /* Input function is not inverted */
                                           IOPCTL_PIO_INV_DI);
      /* PORT0 PIN14 (coords: A3) is configured as FC2_SCK */
      IOPCTL_PinMuxSet(IOPCTL, 0U, 14U, port0_pin14_config);


      const uint32_t port0_pin15_config = (/* Pin is configured as FC2_TXD_SCL_MISO_WS */
                                           IOPCTL_PIO_FUNC1 |
                                           /* Disable pull-up / pull-down function */
                                           IOPCTL_PIO_PUPD_DI |
                                           /* Enable pull-down function */
                                           IOPCTL_PIO_PULLDOWN_EN |
                                           /* Enables input buffer function */
                                           IOPCTL_PIO_INBUF_EN |
                                           /* Normal mode */
                                           IOPCTL_PIO_SLEW_RATE_NORMAL |
                                           /* Normal drive */
                                           IOPCTL_PIO_FULLDRIVE_DI |
                                           /* Analog mux is disabled */
                                           IOPCTL_PIO_ANAMUX_DI |
                                           /* Pseudo Output Drain is disabled */
                                           IOPCTL_PIO_PSEDRAIN_DI |
                                           /* Input function is not inverted */
                                           IOPCTL_PIO_INV_DI);
      /* PORT0 PIN15 (coords: A5) is configured as FC2_TXD_SCL_MISO_WS */
      IOPCTL_PinMuxSet(IOPCTL, 0U, 15U, port0_pin15_config);

wKgZomUCWxWAEwjIAAE1xlQVdgc471.png測試結果如下:

wKgZomUCWxWAexzrAATDXihEt_s682.png

可以看到波形很光滑,毛刺消失,輸出也是穩定的48Khz,滿足客戶不改變驅動能力的要求。

小結

在使用i.MX RT600 FC2做I2S的時候,為了BCLK不受外部電路影響,從而影響到WS的波形頻率,建議引腳配置以下二選一:

1.使用Full output drive,提高驅動能力2.使用慢slewrate,濾掉BCLK上升下降小毛刺

最后,特別感謝NXP 蘇州SE團隊 James Fan 在該解決方案上提供的大力支持!作者:周晶晶

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17123

    瀏覽量

    350986
  • 恩智浦
    +關注

    關注

    14

    文章

    5857

    瀏覽量

    107318
  • WS
    WS
    +關注

    關注

    0

    文章

    3

    瀏覽量

    9940
  • i.MX
    +關注

    關注

    1

    文章

    47

    瀏覽量

    35607
  • I2S
    I2S
    +關注

    關注

    1

    文章

    64

    瀏覽量

    41902

原文標題:i.MX RT600 BCLK受干擾影響WS頻率解決方案

文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    NXP專為邊緣AI打造的i.MX RT700跨界MCU到底強在哪?

    500和i.MX RT600跨界MCU的成功基礎上,恩智浦宣布推出i.MX RT700,超低功耗、集成多核和eIQ Neutron神經處理單元 (NPU)。 新一代
    發表于 11-08 09:40 ?755次閱讀
    NXP專為邊緣AI打造的<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>700跨界MCU到底強在哪?

    NXP推出基于i.MX RT106F本地人臉識別解決方案

    NXP MCU級別的人臉識別解決方案利用i.MX RT106F來實現,使開發者輕松便捷地將人臉識別功能添加到他們基于MCU的IoT產品中.
    發表于 03-01 10:07 ?5169次閱讀

    i.MX RT500/600應用案例 串行NOR Flash雙程序可交替啟動設計

    i.MX RTxxx 系列上(RT500/600)也有雙程序可交替啟動特性,其主體設計邏輯基本上跟i.MX RT1170是差不多的,只是一些
    的頭像 發表于 05-05 14:24 ?2649次閱讀
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>500/<b class='flag-5'>600</b>應用案例 串行NOR Flash雙程序可交替啟動設計

    i.MX RT處理器系列

    我對i.MX RT處理器系列很感興趣,因為它是機器學習研究項目中有吸引力的解決方案。機器學習需要大量的計算能力,而且由于i.MX RT AR
    發表于 07-22 07:53

    i.MX RT600跨界處理器參考資料

    i.MX RT600跨界處理器宣傳手冊
    發表于 12-12 07:21

    01:i.MX RT的市場應用和參考解決方案

    應用,然后分享現有的硬件/軟件/工具/文檔,以便全面了解i.MX RT系列。最后,還將介紹i.MX RT的典型參考解決方案,以便更好地了解恩
    的頭像 發表于 01-21 07:13 ?3349次閱讀
    01:<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>的市場應用和參考<b class='flag-5'>解決方案</b>

    恩智浦i.MX RT600跨界微控制器在功耗、性能和存儲器方面有顯著特點

    恩智浦半導體近日宣布i.MX RT600跨界微控制器 (MCU) 上市,這是一款面向音頻、語音和機器學習等超低功耗、安全邊緣應用的理想解決方案
    的頭像 發表于 03-15 14:29 ?2755次閱讀

    i.MX RT開發筆記-08 | i.MX RT1062嵌套中斷向量控制器NVIC(按鍵中斷檢測)

    系列文章目錄i.MX RT開發筆記-01 | 初識 i.MX RT1062 跨界MCUi.MX RT
    發表于 12-01 13:51 ?2次下載
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>開發筆記-08 | <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1062嵌套中斷向量控制器NVIC(按鍵中斷檢測)

    RT-Thread & NXP 發布 i.MX RT 系列 BSP 新框架

    前言i.MX RT 是 NXP 推出的跨界處理器系列。該系列下又包括 i.MX RT1020、i.MX
    發表于 12-07 13:06 ?2次下載
    <b class='flag-5'>RT</b>-Thread & NXP 發布 <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b> 系列 BSP 新框架

    基于i.MX RT單芯片實現的GUI圖形顯示和語音控制解決方案

    基于優秀的性能指標,i.MX RT可以勝任許多輕量級的AI應用,賦能越來越多的邊緣設備。今天這場視頻講座中,恩智浦的專家將向大家展示一款基于i.MX RT單芯片實現的GUI圖形顯示和語
    的頭像 發表于 12-31 09:48 ?7250次閱讀

    適用于i.MX RT500和i.MX RT600 MCU的Xtensa音頻框架介紹

    可編程方法,從而提供最大的靈活性,本篇將介紹適用于i.MX RT500和i.MX RT600 MCU的Xtensa音頻框架(XAF)。
    的頭像 發表于 11-10 09:39 ?2698次閱讀

    基于 NXP i.MX RT1050 的 3D 打印機方案

    MCU-Healer 是基于 NXP i.MX RT1050 做的 3D 打印機方案,該方案主控 MCU i.MX
    的頭像 發表于 04-06 15:06 ?1199次閱讀
    基于 NXP <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1050 的 3D 打印機<b class='flag-5'>方案</b>

    i.MX RT的FlexRAM配置問題

    i.MX RT的FlexRAM配置問題
    的頭像 發表于 10-24 15:46 ?805次閱讀
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>的FlexRAM配置問題

    基于NXP i.MX RT117H智能人機界面方案

    基于NXP i.MX RT117H智能人機界面方案
    的頭像 發表于 10-30 18:22 ?662次閱讀
    基于NXP <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>117H智能人機界面<b class='flag-5'>方案</b>

    i.MX RT500/600系列上串行NOR Flash雙程序可交替啟動設計

    i.MX RT500/600系列上串行NOR Flash雙程序可交替啟動設計
    的頭像 發表于 10-27 09:36 ?471次閱讀
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>500/<b class='flag-5'>600</b>系列上串行NOR Flash雙程序可交替啟動設計
    主站蜘蛛池模板: 两个人的视频免费| 成 人 网 站免费观看| 亚洲乱码在线卡一卡二卡新区| 欧美伦理片第7页| 免费国产黄线在线播放| 久久亚洲国产中文字幕| 久草在线福利资站免费视频 | 上原结衣快播| 秋霞午夜一级理论片久久| 男人的天堂黄色片| 美女厕所撒尿ass| 久久夜色噜噜噜亚洲AV0000| 久久精品国产亚洲AV蜜臀| 久久精品国产只有精品| 久久精品电影久久电影大全| 久久天天婷婷五月俺也去| 久久久乱码精品亚洲日韩| 浪潮色诱AV久久久久久久| 麻豆XXXX乱女少妇精品| 男女又黄又刺激B片免费网站 | 久久久免费热线精品频| 久久99AV无色码人妻蜜| 久久深夜视频| 麻美ゆま夫の目の前で犯| 嗯啊好爽视频| 色AV色婷婷96人妻久久久| 无码欧美喷潮福利XXXX | 久久这里只精品热在线18| 伦理片97影视网| 嫩草影院地址一二三| 青柠在线观看免费全集| 入禽太深在线观看免费高清| 无码AV毛片色欲欧洲美洲| 亚洲免费成人| 最近2019中文字幕免费| G国产精品无马| 国产AV精品一区二区三区漫画| 国产一区二区免费在线观看| 久久成人国产精品一区二区| 蜜柚影院在线观看免费高清中文| 琪琪的色原网站|