国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

RK3576平臺PCA9548 I2C開關設備樹配置與生效全解析

jf_44130326 ? 來源:Linux1024 ? 作者:Linux1024 ? 2026-02-28 11:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式開發中,單路I2C總線往往無法滿足多外設的掛載需求,NXP的PCA9548(8通道I2C Switch)是解決該問題的常用方案,尤其在RK3576等嵌入式平臺的攝像頭、VCM等多I2C外設場景中廣泛應用。本文結合實際設備樹配置,從配置解析生效全流程開發關鍵要點三個維度,講透PCA9548在Linux系統中的落地實現,嵌入式開發人員可直接對標實操。

一、先看懂:PCA9548核心設備樹配置解析

本文以RK3576平臺I2C0掛載PCA9548,通道0/1掛載攝像頭(gc05a2/sc4336/imx415)、VCM(dw9714)的實際配置為例,拆解核心節點與屬性的作用,所有配置均圍繞Linux I2C子系統+PCA9548驅動的適配規則編寫。

核心配置拓撲

&i2c0(物理I2C控制器)→tca9548a@70(PCA9548設備)→channel@x(PCA9548子通道)→外設節點(攝像頭/VCM)

關鍵節點/屬性詳解

節點/屬性 核心作用 實操要點
&i2c0 引用RK3576物理I2C0控制器,開啟總線并綁定引腳 需配置pinctrl和status = "okay"
tca9548a@70 PCA9548設備主節點,與內核驅動匹配 核心屬性缺一不可
compatible = "nxp,pca9548" 匹配Linux內核i2c-mux-pca954x.c驅動,是驅動加載的關鍵 必須與驅動of_match_table一致
reg = <0x70> PCA9548在I2C0總線上的硬件從地址,由硬件焊接的A0-A2引腳決定 與實際硬件一致,常見0x70/0x71
#address-cells/ 定義子節點的尋址規則,固定為<1>/<0>(子節點僅用1個值表示編號) 子通道/外設節點需繼承該規則
channel@0/1/7 PCA9548的子通道節點,對應硬件的0~7通道 reg值為實際通道號
外設節點(如dw9714-1@c) 掛載在子通道的I2C設備,如VCM、攝像頭 reg為外設在子總線的從地址
port/endpoint 攝像頭專屬,建立MIPI DPHY數據鏈路,關聯SOC的MIPI接收端 需與SOC側節點remote-endpoint匹配

核心特點:不同子通道的外設可使用相同的I2C從地址(如通道0/1的gc05a2均為0x37),因各通道對應獨立的虛擬I2C總線,物理上不會產生地址沖突。

二、核心重點:PCA9548配置生效全流程

PCA9548的配置能正常生效,本質是Linux設備樹解析+I2C子系統+PCA9548專用驅動的協同工作,整個流程從內核啟動開始,到外設可正常訪問結束,共6個核心步驟,配套生效流程圖更易理解。

wKgZO2miXuGAT76VAAGmkkUhuIA883.png

PCA9548配置生效流程圖

各階段核心動作拆解

階段1:設備樹解析(內核啟動初期)

內核執行unflatten_device_tree,將設備樹的樹形配置轉換為內核可識別的device_node結構體,完整記錄I2C0引腳/時鐘PCA9548從地址/兼容屬性子通道外設的硬件參數(電源/時鐘/地址),為后續驅動匹配提供數據基礎。

階段2:I2C0控制器初始化

RK3576的I2C控制器專用驅動(i2c-rockchip.c)完成初始化,創建物理I2C適配器(對應系統節點/sys/bus/i2c/devices/i2c-0),該適配器是PCA9548與SOC通信的物理載體。

階段3:PCA9548驅動匹配

Linux I2C子系統遍歷I2C0總線上的所有設備樹節點,讀取tca9548a@70的compatible = "nxp,pca9548",與i2c-mux-pca954x.c驅動中的pca954x_of_match匹配表比對,找到PCA9548對應的芯片描述符(8通道Switch、無中斷、無使能位),完成驅動匹配。

階段4:PCA9548 probe初始化(最核心)

驅動匹配成功后,執行pca954x_probe函數,完成PCA9548的硬件初始化與虛擬總線創建,核心動作:

1.合法性檢查:驗證I2C0適配器支持PCA9548通信所需的I2C_FUNC_SMBUS_BYTE功能;

2.內存分配:創建驅動私有數據(記錄通道狀態、空閑策略等);

3.硬件初始化:向PCA9548的0x70地址寫入初始寄存器值,默認斷開所有通道;

4.創建虛擬I2C適配器:為設備樹中配置的channel@0/1/7分別創建獨立的虛擬I2C適配器(如通道0→i2c-1、通道1→i2c-2),每個虛擬適配器綁定通道選擇/空閑處理函數

5.創建設備節點:在系統中生成PCA9548設備節點/sys/bus/i2c/devices/0-0070,并提供idle_statesysfs接口,用于運行時修改空閑策略。

階段5:子外設枚舉與驅動綁定

PCA9548的虛擬I2C適配器創建完成后,I2C子系統自動遍歷各通道下的外設節點:

1.以通道0為例,虛擬適配器i2c-1遍歷其下的dw9714、gc05a2、sc4336等節點;

2.讀取外設的compatible屬性,匹配對應的外設驅動(如dongwoon,dw9714匹配VCM驅動,galaxycore,gc05a2匹配攝像頭驅動);

3.執行外設驅動的probe函數,完成時鐘配置、電源使能、引腳綁定、MIPI鏈路建立等操作,外設正式注冊為系統可用設備。

階段6:運行時通道切換(透明化操作)

開發人員訪問外設(如讀寫攝像頭寄存器)時,無需手動切換PCA9548通道,驅動會自動完成:

1.觸發PCA9548驅動的pca954x_select_chan函數,對比當前通道與目標通道,若不同則向PCA9548寄存器寫入對應通道的位掩碼(8通道Switch為1<<通道號);

2.完成I2C讀寫后,執行pca954x_deselect_mux函數,根據空閑策略處理通道狀態(默認保持當前通道);

3.通道切換全程由驅動完成,對應用層和外設層完全透明

三、開發避坑:關鍵要點與實用技巧

在RK3576平臺調試PCA9548時,很多問題源于對驅動特性和硬件規則的忽略,以下4個關鍵要點能有效避坑:

1.地址沖突:子通道可復用I2C從地址

PCA9548是Switch(開關)而非MUX(多路復用器),每個通道對應獨立的虛擬I2C總線,因此不同通道的外設可使用相同的I2C從地址(如通道0/1的gc05a2均為0x37),這是嵌入式開發中解決I2C地址沖突的常用方法。

2.空閑狀態:可運行時配置,適配不同場景

PCA9548驅動提供了idle_statesysfs接口(/sys/bus/i2c/devices/0-0070/idle_state),支持三種空閑策略,可根據場景動態修改:

?MUX_IDLE_AS_IS(默認):訪問外設后保持當前通道;

?MUX_IDLE_DISCONNECT:訪問完成后斷開所有通道,降低功耗;

?數字(如0/1/7):訪問完成后自動切換到指定通道。

3.驅動差異:區分Switch與MUX的適配邏輯

PCA9548屬于Switch,支持同時選中多個通道,但Linux內核的i2c-mux-pca954x.c驅動為了簡化邏輯,仍按單通道切換實現,通道選擇時僅寫入單個通道的位掩碼,若需多通道同時開啟,可修改驅動的pca954x_regval函數。

4.外設依賴:電源/時鐘必須提前配置

攝像頭、VCM等外設的avdd-supply(電源)、clocks(時鐘)、power-domains(電源域)必須在設備樹中提前定義并使能,否則外設驅動的probe函數會執行失敗,常見問題如REF_CLK1_OUT_PLL未配置24MHz時鐘、vcc_mipicsi1電源未使能。

四、快速排錯:常見問題與解決方法

調試中若PCA9548配置不生效,可按以下步驟排查,90%的問題都能解決:

1.PCA9548驅動未加載:檢查compatible屬性是否為nxp,pca9548,I2C0是否開啟(status = "okay"),執行lsmod | grep pca954x驗證驅動是否加載;

2.虛擬I2C適配器未創建:檢查PCA9548的硬件從地址(reg)是否與實際焊接一致,執行i2cdetect -y 0驗證PCA9548是否能被檢測到;

3.外設probe失敗:檢查外設的電源、時鐘、引腳配置是否正確,執行dmesg | grep 外設兼容屬性查看失敗原因;

4.無法訪問外設:檢查PCA9548的通道號是否配置正確,執行cat /sys/bus/i2c/devices/0-0070/idle_state驗證空閑策略是否合理。

五、總結

PCA9548在RK3576平臺的配置與生效,核心是用設備樹描述硬件拓撲,用專用驅動實現硬件操作,Linux的I2C子系統完成了中間的適配與調度,讓開發人員無需關注底層的通道切換邏輯。

核心收獲:

1.設備樹配置的關鍵是compatible屬性(驅動匹配)和reg屬性(硬件地址),拓撲需嚴格遵循物理I2C→PCA9548→子通道→外設

2.配置生效的核心是PCA9548驅動的probe函數,其會為子通道創建獨立的虛擬I2C適配器,從根本上解決地址沖突問題;

3.調試時優先排查驅動匹配、硬件地址、電源時鐘三大點,能快速定位90%的問題。

掌握本文的配置方法和生效邏輯,不僅能在RK3576平臺落地PCA9548,還能遷移到其他ARM嵌入式平臺(如RK3399、IMX6ULL),因為Linux的I2C子系統和PCA9548驅動的設計邏輯是通用的。

審核編輯 黃宇

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

    關注

    28

    文章

    1556

    瀏覽量

    131225
  • rk3576
    +關注

    關注

    1

    文章

    266

    瀏覽量

    1546
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    探索PCA9548A:8通道I2C總線開關的卓越性能與應用

    探索PCA9548A:8通道I2C總線開關的卓越性能與應用 在當今的電子設備設計中,I2
    的頭像 發表于 02-25 11:15 ?140次閱讀

    PCA9545A/45B/45C:4通道I2C總線開關的深度解析

    PCA9545A/45B/45C:4通道I2C總線開關的深度解析 在電子工程師的日常設計工作中,I2C
    的頭像 發表于 02-10 11:50 ?378次閱讀

    RK3576基于UVC協議USB攝像頭配置指南,手把手教你搞定

    瑞芯微RK3576芯片平臺基于UVC協議,配置USB攝像頭實現即插即用的適配采集功能,基于觸覺智能RK3576開發板PurplePiOH2
    的頭像 發表于 01-16 17:11 ?809次閱讀
    <b class='flag-5'>RK3576</b>基于UVC協議USB攝像頭<b class='flag-5'>配置</b>指南,手把手教你搞定

    PCA9548A:低電壓8通道I2C開關的技術解析與應用指南

    PCA9548A:低電壓8通道I2C開關的技術解析與應用指南 在電子設計領域,I2
    的頭像 發表于 12-27 09:45 ?829次閱讀

    支持復位的 TCA9548A-Q1 汽車 8 通道 I2C 開關:設計與應用解析

    支持復位的 TCA9548A-Q1 汽車 8 通道 I2C 開關:設計與應用解析 在電子設計領
    的頭像 發表于 12-18 09:35 ?364次閱讀

    基于米爾RK3576的環視實時性方案解析

    MYD-LR3576開發板功能實現: 基于米爾MYD-LR3576開發板的RK3576平臺完全具備實現高質量360環視鏈路功能的能力。實時
    發表于 11-28 16:57

    迅為如何在RK3576上部署YOLOv5;基于RK3576構建智能門禁系統

    迅為如何在RK3576開發板上部署YOLOv5;基于RK3576構建智能門禁系統
    的頭像 發表于 11-25 14:06 ?1804次閱讀
    迅為如何在<b class='flag-5'>RK3576</b>上部署YOLOv5;基于<b class='flag-5'>RK3576</b>構建智能門禁系統

    【作品合集】米爾RK3576開發板測評

    測試 作者:魯治驛【米爾RK3576開發板免費體驗】測評綜合解析 【米爾RK3576開發板免費體驗】集成MQ-2煙霧傳感器和ADS1263模塊實現氣體監測 【米爾
    發表于 09-11 10:19

    瑞芯微RK3576平臺FFmpeg硬件編解碼移植及性能測試實戰攻略 觸覺智能RK3576開發板演示

    本文介紹瑞芯微RK3576平臺,FFmpeg硬件編解碼移植及性能測試方法。演示設備:觸覺智能RK3576開發板FFmpeg簡介與實測數據FFmpeg簡介FFmpeg是一套多媒體框架,能
    的頭像 發表于 09-08 13:58 ?1268次閱讀
    瑞芯微<b class='flag-5'>RK3576</b><b class='flag-5'>平臺</b>FFmpeg硬件編解碼移植及性能測試實戰攻略 觸覺智能<b class='flag-5'>RK3576</b>開發板演示

    瑞芯微RK3576RK3576S有什么區別,性能參數配置與型號差異解析

    瑞芯微第二代8nm高性能AIOT平臺RK3576家族再添新成員-RK3576S,先說結論:相較主型號的RK3576/RK3576J,性能略有
    的頭像 發表于 08-14 23:57 ?2372次閱讀
    瑞芯微<b class='flag-5'>RK3576</b>與<b class='flag-5'>RK3576</b>S有什么區別,性能參數<b class='flag-5'>配置</b>與型號差異<b class='flag-5'>解析</b>

    RK2款旗艦芯片RK3588 PK RK3576,誰是最優選

    性能的基礎上,具有較高的性價比。新創云智能科技 展現出這2款主流平臺代表作,第一款:RK3588核心板第二款:RK3576開發板附:RK3576
    發表于 07-10 18:24

    Mpp支持RK3576

    想問下,https://github.com/rockchip-linux/mpp這里面支持RK3576么,看介紹沒有提到說支持RK3576 目前是買了個rk3576的機頂盒,搭載了安卓14,想做安卓視頻硬解。
    發表于 06-13 15:35

    RK3576 vs RK3588:為何越來越多的開發者轉向RK3576

    (圖形性能更強) 分析: RK3576 的 A72+A53+M0 組合 在能效比上更優,適合需要長時間運行的設備(如 IoT、平板)。 RK3588 的 A76 架構 單核性能更強,適合高性能計算場景(如
    發表于 05-30 08:46

    RK3576 Android 14.0 SDK開發指南(第一集)

    可以按如下修改:(以RK3576平臺為例說明) BOARD_BUILD_GKI := true后會自動開啟AB功能。 關于GKI的kernel編譯、ko更新等說明可以參考文檔 RKDocs
    發表于 05-20 08:43

    RK3576開發板技術分享 | Weston 配置技巧:定制你的桌面體驗!

    RK3576開發板技術分享 | Weston 配置技巧:定制你的桌面體驗!
    的頭像 發表于 03-07 10:17 ?1521次閱讀
    <b class='flag-5'>RK3576</b>開發板技術分享 | Weston <b class='flag-5'>配置</b>技巧:定制你的桌面體驗!