91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

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

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

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

二、核心重點(diǎn):PCA9548配置生效全流程

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

wKgZO2miXuGAT76VAAGmkkUhuIA883.png

PCA9548配置生效流程圖

各階段核心動(dòng)作拆解

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

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

階段2:I2C0控制器初始化

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

階段6:運(yùn)行時(shí)通道切換(透明化操作)

開(kāi)發(fā)人員訪問(wèn)外設(shè)(如讀寫(xiě)攝像頭寄存器)時(shí),無(wú)需手動(dòng)切換PCA9548通道,驅(qū)動(dòng)會(huì)自動(dòng)完成:

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

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

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

三、開(kāi)發(fā)避坑:關(guān)鍵要點(diǎn)與實(shí)用技巧

在RK3576平臺(tái)調(diào)試PCA9548時(shí),很多問(wèn)題源于對(duì)驅(qū)動(dòng)特性和硬件規(guī)則的忽略,以下4個(gè)關(guān)鍵要點(diǎn)能有效避坑:

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

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

2.空閑狀態(tài):可運(yùn)行時(shí)配置,適配不同場(chǎng)景

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

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

?MUX_IDLE_DISCONNECT:訪問(wèn)完成后斷開(kāi)所有通道,降低功耗;

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

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

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

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

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

四、快速排錯(cuò):常見(jiàn)問(wèn)題與解決方法

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

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

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

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

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

五、總結(jié)

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

核心收獲:

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

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

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

掌握本文的配置方法和生效邏輯,不僅能在RK3576平臺(tái)落地PCA9548,還能遷移到其他ARM嵌入式平臺(tái)(如RK3399、IMX6ULL),因?yàn)長(zhǎng)inux的I2C子系統(tǒng)和PCA9548驅(qū)動(dòng)的設(shè)計(jì)邏輯是通用的。

審核編輯 黃宇

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

    關(guān)注

    28

    文章

    1556

    瀏覽量

    131201
  • rk3576
    +關(guān)注

    關(guān)注

    1

    文章

    265

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

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

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

    瑞芯微RK3576芯片平臺(tái)基于UVC協(xié)議,配置USB攝像頭實(shí)現(xiàn)即插即用的適配采集功能,基于觸覺(jué)智能RK3576開(kāi)發(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開(kāi)關(guān)的技術(shù)解析與應(yīng)用指南

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

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

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

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

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

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

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

    【作品合集】米爾RK3576開(kāi)發(fā)板測(cè)評(píng)

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

    瑞芯微RK3576平臺(tái)FFmpeg硬件編解碼移植及性能測(cè)試實(shí)戰(zhàn)攻略 觸覺(jué)智能RK3576開(kāi)發(fā)板演示

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

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

    瑞芯微第二代8nm高性能AIOT平臺(tái)RK3576家族再添新成員-RK3576S,先說(shuō)結(jié)論:相較主型號(hào)的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>與型號(hào)差異<b class='flag-5'>解析</b>

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

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

    Mpp支持RK3576

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

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

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

    RK3576 Android 14.0 SDK開(kāi)發(fā)指南(第一集)

    可以按如下修改:(以RK3576平臺(tái)為例說(shuō)明) BOARD_BUILD_GKI := true后會(huì)自動(dòng)開(kāi)啟AB功能。 關(guān)于GKI的kernel編譯、ko更新等說(shuō)明可以參考文檔 RKDocs
    發(fā)表于 05-20 08:43

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

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