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

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

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

3天內不再提示

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

恩智浦MCU加油站 ? 來源:周晶晶 ? 作者:周晶晶 ? 2023-09-14 08:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

問題描述最近遇到客戶發(fā)現一個很有意思的問題,客戶使用i.MX RT600 I2S產生2通道的I2S波形,配置希望輸出I2S波形:

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

測試發(fā)現現象很奇怪,如果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的配置和客戶提供的代碼,發(fā)現差別很簡單,在于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,可以發(fā)現有一些毛刺:

wKgZomUCWxWAKCmCAAF1yvlhwKQ128.png

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

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

#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

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

小結

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

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

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

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

    關注

    147

    文章

    18586

    瀏覽量

    385838
  • 恩智浦
    +關注

    關注

    14

    文章

    6049

    瀏覽量

    133260
  • WS
    WS
    +關注

    關注

    0

    文章

    3

    瀏覽量

    10099
  • i.MX
    +關注

    關注

    1

    文章

    62

    瀏覽量

    39659
  • I2S
    I2S
    +關注

    關注

    1

    文章

    80

    瀏覽量

    43855

原文標題: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)。 新一代
    發(fā)表于 11-08 09:40 ?2317次閱讀
    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來實現,使開發(fā)者輕松便捷地將人臉識別功能添加到他們基于MCU的IoT產品中.
    發(fā)表于 03-01 10:07 ?5582次閱讀

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

    i.MX RTxxx 系列上(RT500/600)也有雙程序可交替啟動特性,其主體設計邏輯基本上跟i.MX RT1170是差不多的,只是一些
    的頭像 發(fā)表于 05-05 14:24 ?3451次閱讀
    <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
    發(fā)表于 07-22 07:53

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

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

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

    應用,然后分享現有的硬件/軟件/工具/文檔,以便全面了解i.MX RT系列。最后,還將介紹i.MX RT的典型參考解決方案,以便更好地了解恩
    的頭像 發(fā)表于 01-21 07:13 ?4070次閱讀
    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) 上市,這是一款面向音頻、語音和機器學習等超低功耗、安全邊緣應用的理想解決方案
    的頭像 發(fā)表于 03-15 14:29 ?3336次閱讀

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

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

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

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

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

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

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

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

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

    MCU-Healer 是基于 NXP i.MX RT1050 做的 3D 打印機方案,該方案主控 MCU i.MX
    的頭像 發(fā)表于 04-06 15:06 ?1988次閱讀
    基于 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配置問題
    的頭像 發(fā)表于 10-24 15:46 ?1404次閱讀
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>的FlexRAM配置問題

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

    基于NXP i.MX RT117H智能人機界面方案
    的頭像 發(fā)表于 10-30 18:22 ?1244次閱讀
    基于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雙程序可交替啟動設計
    的頭像 發(fā)表于 10-27 09:36 ?983次閱讀
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>500/<b class='flag-5'>600</b>系列上串行NOR Flash雙程序可交替啟動設計