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

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RK3576平臺PCA9548 I2C開關(guān)設(shè)備樹配置與生效全解析

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

掃碼添加小助手

加入工程師交流群

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

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

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

核心配置拓?fù)?/b>

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

關(guān)鍵節(jié)點/屬性詳解

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

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

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

PCA9548的配置能正常生效,本質(zhì)是Linux設(shè)備樹解析+I2C子系統(tǒng)+PCA9548專用驅(qū)動的協(xié)同工作,整個流程從內(nèi)核啟動開始,到外設(shè)可正常訪問結(jié)束,共6個核心步驟,配套生效流程圖更易理解。

wKgZO2miXuGAT76VAAGmkkUhuIA883.png

PCA9548配置生效流程圖

各階段核心動作拆解

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

內(nèi)核執(zhí)行unflatten_device_tree,將設(shè)備樹的樹形配置轉(zhuǎn)換為內(nèi)核可識別的device_node結(jié)構(gòu)體,完整記錄I2C0引腳/時鐘PCA9548從地址/兼容屬性、子通道外設(shè)的硬件參數(shù)(電源/時鐘/地址),為后續(xù)驅(qū)動匹配提供數(shù)據(jù)基礎(chǔ)。

階段2:I2C0控制器初始化

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

階段3:PCA9548驅(qū)動匹配

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

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

驅(qū)動匹配成功后,執(zhí)行pca954x_probe函數(shù),完成PCA9548的硬件初始化與虛擬總線創(chuàng)建,核心動作:

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

2.內(nèi)存分配:創(chuàng)建驅(qū)動私有數(shù)據(jù)(記錄通道狀態(tài)、空閑策略等);

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

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

5.創(chuàng)建設(shè)備節(jié)點:在系統(tǒng)中生成PCA9548設(shè)備節(jié)點/sys/bus/i2c/devices/0-0070,并提供idle_statesysfs接口,用于運行時修改空閑策略。

階段5:子外設(shè)枚舉與驅(qū)動綁定

PCA9548的虛擬I2C適配器創(chuàng)建完成后,I2C子系統(tǒng)自動遍歷各通道下的外設(shè)節(jié)點:

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

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

3.執(zhí)行外設(shè)驅(qū)動的probe函數(shù),完成時鐘配置、電源使能、引腳綁定、MIPI鏈路建立等操作,外設(shè)正式注冊為系統(tǒng)可用設(shè)備。

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

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

1.觸發(fā)PCA9548驅(qū)動的pca954x_select_chan函數(shù),對比當(dāng)前通道與目標(biāo)通道,若不同則向PCA9548寄存器寫入對應(yīng)通道的位掩碼(8通道Switch為1<<通道號);

2.完成I2C讀寫后,執(zhí)行pca954x_deselect_mux函數(shù),根據(jù)空閑策略處理通道狀態(tài)(默認(rèn)保持當(dāng)前通道);

3.通道切換全程由驅(qū)動完成,對應(yīng)用層和外設(shè)層完全透明。

三、開發(fā)避坑:關(guān)鍵要點與實用技巧

在RK3576平臺調(diào)試PCA9548時,很多問題源于對驅(qū)動特性和硬件規(guī)則的忽略,以下4個關(guān)鍵要點能有效避坑:

1.地址沖突:子通道可復(fù)用I2C從地址

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

2.空閑狀態(tài):可運行時配置,適配不同場景

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

?MUX_IDLE_AS_IS(默認(rèn)):訪問外設(shè)后保持當(dāng)前通道;

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

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

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

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

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

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

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

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

1.PCA9548驅(qū)動未加載:檢查compatible屬性是否為nxp,pca9548,I2C0是否開啟(status = "okay"),執(zhí)行l(wèi)smod | grep pca954x驗證驅(qū)動是否加載;

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

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

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

五、總結(jié)

PCA9548在RK3576平臺的配置與生效,核心是用設(shè)備樹描述硬件拓?fù)?,用專用?qū)動實現(xiàn)硬件操作,Linux的I2C子系統(tǒng)完成了中間的適配與調(diào)度,讓開發(fā)人員無需關(guān)注底層的通道切換邏輯。

核心收獲:

1.設(shè)備樹配置的關(guān)鍵是compatible屬性(驅(qū)動匹配)和reg屬性(硬件地址),拓?fù)湫鑷?yán)格遵循物理I2C→PCA9548→子通道→外設(shè);

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

3.調(diào)試時優(yōu)先排查驅(qū)動匹配、硬件地址、電源時鐘三大點,能快速定位90%的問題。

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

審核編輯 黃宇

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

    關(guān)注

    28

    文章

    1556

    瀏覽量

    131201
  • rk3576
    +關(guān)注

    關(guān)注

    1

    文章

    265

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    探索PCA9548A:8通道I2C總線開關(guān)的卓越性能與應(yīng)用

    探索PCA9548A:8通道I2C總線開關(guān)的卓越性能與應(yīng)用 在當(dāng)今的電子設(shè)備設(shè)計中,I2
    的頭像 發(fā)表于 02-25 11:15 ?126次閱讀

    PCA9545A/45B/45C:4通道I2C總線開關(guān)的深度解析

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

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

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

    PCA9548A:低電壓8通道I2C開關(guān)的技術(shù)解析與應(yīng)用指南

    PCA9548A:低電壓8通道I2C開關(guān)的技術(shù)解析與應(yīng)用指南 在電子設(shè)計領(lǐng)域,I2
    的頭像 發(fā)表于 12-27 09:45 ?824次閱讀

    支持復(fù)位的 TCA9548A-Q1 汽車 8 通道 I2C 開關(guān):設(shè)計與應(yīng)用解析

    支持復(fù)位的 TCA9548A-Q1 汽車 8 通道 I2C 開關(guān):設(shè)計與應(yīng)用解析 在電子設(shè)計領(lǐng)
    的頭像 發(fā)表于 12-18 09:35 ?358次閱讀

    基于米爾RK3576的環(huán)視實時性方案解析

    MYD-LR3576開發(fā)板功能實現(xiàn): 基于米爾MYD-LR3576開發(fā)板的RK3576平臺完全具備實現(xiàn)高質(zhì)量360環(huán)視鏈路功能的能力。實時
    發(fā)表于 11-28 16:57

    迅為如何在RK3576上部署YOLOv5;基于RK3576構(gòu)建智能門禁系統(tǒng)

    迅為如何在RK3576開發(fā)板上部署YOLOv5;基于RK3576構(gòu)建智能門禁系統(tǒng)
    的頭像 發(fā)表于 11-25 14:06 ?1785次閱讀
    迅為如何在<b class='flag-5'>RK3576</b>上部署YOLOv5;基于<b class='flag-5'>RK3576</b>構(gòu)建智能門禁系統(tǒng)

    【作品合集】米爾RK3576開發(fā)板測評

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

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

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

    瑞芯微RK3576RK3576S有什么區(qū)別,性能參數(shù)配置與型號差異解析

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

    RK2款旗艦芯片RK3588 PK RK3576,誰是最優(yōu)選

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

    Mpp支持RK3576

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

    RK3576 vs RK3588:為何越來越多的開發(fā)者轉(zhuǎn)向RK3576?

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

    高性能+長續(xù)航!基于RK3576的電池管理系統(tǒng)(3.7V/7000mAh)開源方案發(fā)布

    精密電阻兩端的電壓,然后通過I2CRK3576進行通信。 以上就有RK3576的充電管理方案,現(xiàn)在看一下整個開發(fā)板效果圖 尺寸圖 以上就是RK3576開發(fā)板的詳細(xì)介紹,無論
    發(fā)表于 05-13 16:15

    RK3576開發(fā)板技術(shù)分享 | Weston 配置技巧:定制你的桌面體驗!

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