前言:
在工業(yè)音視頻采集、智能安防、車載DVR等場景中,多路音視頻同步采集是核心需求。眺望電子RK3588 核心板,搭配 XS9922B 多路 AHD 音視頻采集芯片,可輕松實(shí)現(xiàn) 8聲道高清音頻的穩(wěn)定采集與傳輸。今天就從原理、硬件配置、設(shè)備樹開發(fā)到實(shí)測驗(yàn)證,完整分享這套高性能音頻采集方案實(shí)現(xiàn)全流程。
一、I2S 與 I2S-TDM的關(guān)鍵差異
很多人分不清 I2S 和 I2S-TDM,簡單說:I2S 是雙通道專用,I2S-TDM 是多通道(最高 8 聲道)專用:
? I2S 控制器:僅支持標(biāo)準(zhǔn) I2S、PCM 協(xié)議,主打左右雙聲道,滿足普通立體聲需求;如果要接入4路AHD攝像頭,每路都帶獨(dú)立音頻時(shí),就需要8路音頻通道。如果沿用標(biāo)準(zhǔn)I2S,需要4組獨(dú)立的I2S總線,不僅浪費(fèi)引腳,而且時(shí)鐘同步困難。
? I2S-TDM 控制器:兼容 I2S、PCM、TDM 三大協(xié)議,核心優(yōu)勢是時(shí)分復(fù)用(TDM)技術(shù),單條數(shù)據(jù)線就能傳輸 8 聲道音頻,完美適配多路采集場景。
傳統(tǒng) I2S 的 LRCLK 僅切換左右聲道,而 TDM 模式下:
1.LRCLK 升級為幀同步信號,一個(gè)周期內(nèi)按順序傳輸 8 個(gè)聲道的完整數(shù)據(jù);
2.BCLK(位時(shí)鐘)頻率翻倍,計(jì)算公式:BCLK頻率=采樣率×聲道數(shù)×采樣位深;
3.僅用 1 根 SDIN/SDOUT 數(shù)據(jù)線,串行傳輸所有聲道數(shù)據(jù),大幅簡化硬件布線。
RK3588核心板 關(guān)鍵引腳信號
? I2S_LRCLK:幀時(shí)鐘,頻率 = 采樣率(如 44.1kHz/48kHz);
? I2S_BCLK:位時(shí)鐘,每個(gè)數(shù)據(jù)位對應(yīng) 1 個(gè)脈沖;
? I2S_SDATA:音頻數(shù)據(jù),二進(jìn)制補(bǔ)碼格式傳輸;
? I2S_MCLK:系統(tǒng)時(shí)鐘,供 Codec 芯片工作,常用采樣率×256(如 48kHz×256=12.288MHz)。
二、RK3588核心板+XS9922B方案優(yōu)勢
2.1RK3588 TDM模式

? 內(nèi)置專用 I2S-TDM 控制器,原生支持 8 聲道采集,無需額外擴(kuò)展芯片;

? 工業(yè)級高集成度核心板,時(shí)鐘精度高、穩(wěn)定性強(qiáng),適配工業(yè)級 7×24 小時(shí)連續(xù)工作;
? 算力充足,可同步處理多路視頻 + 音頻數(shù)據(jù),適配 AHD 音視頻一體化采集場景。
2.2XS9922B多路 AHD 音視頻采集
XS9922B 是專為高清音視頻采集設(shè)計(jì)的芯片,支持兩種核心配置:
? 配置 1:slot-num為16,slot-width為32(適合 16 聲道,RK3588 不支持);

? 配置 2:slot-num為8,slot-width為32(與 RK3588 匹配)。

核心優(yōu)勢:AHD 視頻 + TDM 音頻同步采集,單芯片搞定多路音視頻輸入,大幅降低硬件成本和開發(fā)難度。
三、實(shí)現(xiàn)步驟
3.1設(shè)備樹配置(RK3588 側(cè))
重點(diǎn)開啟 I2S0 的 8 通道 TDM 模式,配置時(shí)鐘、引腳復(fù)用及 Codec 關(guān)聯(lián):
// I2S08通道TDM配置&i2s0_8ch { status ="okay"; pinctrl-names ="default","idle","clk"; pinctrl-0= <&i2s0_sdi0 &i2s0_sdo0>; pinctrl-1= <&i2s0_idle>; pinctrl-2= <&i2s0_lrck &i2s0_sclk>; rockchip,always-on; //保持時(shí)鐘常亮 rockchip,tdm-fsync-half-frame;//TDM幀同步模式 rockchip,capture-channels = <8>;//配置8個(gè)采集聲道};//I2C3掛載XS9922B Codec&i2c3{ status ="okay"; xs9922: xs9922@30{ status ="okay"; #sound-dai-cells = <0>; compatible ="xs9922"; reg = <0x30>; clocks = <&mclkout_i2s0>; clock-names ="mclk"; assigned-clocks = <&cru I2S0_8CH_MCLKOUT>; reset-gpios = <&extio EXTIO_GPIO_P00 GPIO_ACTIVE_HIGH>; power-gpios = <&extio EXTIO_GPIO_P01 GPIO_ACTIVE_HIGH>; assigned-clock-rates = <11289597>;//匹配44.1kHz采樣率時(shí)鐘 pinctrl-names ="default"; pinctrl-0= <&i2s0_mclk>; };};//聲卡配置:關(guān)聯(lián)CPU與Codec,TDM參數(shù)匹配xs9922_sound: xs9922-sound { compatible ="simple-audio-card"; simple-audio-card,name ="rockchip,tdm-8ch"; simple-audio-card,format="dsp_a";//匹配XS9922B的DSP-A格式 simple-audio-card,mclk-fs = <256>; simple-audio-card,bitclock-master = <&codec_master>; simple-audio-card,frame-master = <&codec_master>; status ="okay"; simple-audio-card,cpu { sound-dai = <&i2s0_8ch>; dai-tdm-slot-num = <8>; //8個(gè)時(shí)隙 dai-tdm-slot-width = <32>;//32bit位寬 }; codec_master: simple-audio-card,codec { sound-dai = <&xs9922>; };};
3.2內(nèi)核驅(qū)動(dòng)配置
RK3588 內(nèi)核中 I2S 驅(qū)動(dòng)(kernel/sound/soc/rockchip/rockchip_i2s.c),其中 rockchip_i2s_set_fmt 負(fù)責(zé)配置協(xié)議格式,默認(rèn)已原生支持 DSP-A/B 格式,與 XS9922B 完全兼容,無需修改驅(qū)動(dòng)代碼:

?DSP-A:PCM 延遲 1bit 模式(本次采用);
?DSP-B:PCM 無延遲模式。
staticintrockchip_i2s_set_fmt(structsnd_soc_dai *cpu_dai,unsignedintfmt){ mask = I2S_TXCR_IBM_MASK | I2S_TXCR_TFS_MASK | I2S_TXCR_PBM_MASK;switch(fmt & SND_SOC_DAIFMT_FORMAT_MASK) {caseSND_SOC_DAIFMT_RIGHT_J:val = I2S_TXCR_IBM_RSJM;break;caseSND_SOC_DAIFMT_LEFT_J:val = I2S_TXCR_IBM_LSJM;break;caseSND_SOC_DAIFMT_I2S:val = I2S_TXCR_IBM_NORMAL;break;caseSND_SOC_DAIFMT_DSP_A:/* PCM delay 1 bit mode */val = I2S_TXCR_TFS_PCM |I2S_TXCR_PBM_MODE(1);break;caseSND_SOC_DAIFMT_DSP_B:/* PCM no delay mode */val = I2S_TXCR_TFS_PCM;break;default:ret = -EINVAL;gotoerr_pm_put;}}
四、功能測試驗(yàn)證
4.1查看聲卡
# 查看系統(tǒng)聲卡列表cat/proc/asound/cards# 查看錄音設(shè)備arecord -l# 查看播放設(shè)備aplay -l
正常輸出會(huì)顯示rockchip,tdm-8ch聲卡,且識別到 8 個(gè)采集聲道。

4.2檢查 I2S 時(shí)鐘
cat/sys/kernel/debug/clk/clk_summary |grep i2s0
確認(rèn) I2S0 的 MCLK、BCLK 時(shí)鐘頻率與配置一致(如 44.1kHz 采樣率下,BCLK=11.2896MHz)。
波型實(shí)測
?LRCLK:頻率 44.1kHz,方波信號穩(wěn)定;

?BCLK/MCLK:頻率 11.2896MHz,脈沖波形清晰;

?SDATA:8 聲道音頻數(shù)據(jù)串行輸出,波形無失真;
五、總結(jié)
RK3588+XS9922B 的 I2S-TDM 8 聲道音頻方案,其核心優(yōu)勢在于:僅用1組I2S總線 + 1個(gè)TDM控制器,就收齊了8路音頻,既節(jié)省了RK3588寶貴的引腳資源,又通過TDM的時(shí)分復(fù)用保證了多聲道同步性。
原生適配、配置簡單、穩(wěn)定性強(qiáng),完美解決多路音頻同步采集痛點(diǎn)。無需復(fù)雜的硬件擴(kuò)展,僅通過設(shè)備樹配置即可快速落地,是工業(yè)級、車載級、安防級多路音視頻采集場景的首選方案。希望這篇基于 RK3588 I2S-TDM 與 XS9922B 的筆記,能為你的項(xiàng)目調(diào)試提供幫助。
-
音頻采集
+關(guān)注
關(guān)注
0文章
20瀏覽量
10245 -
I2S
+關(guān)注
關(guān)注
1文章
82瀏覽量
44382 -
核心板
+關(guān)注
關(guān)注
6文章
1439瀏覽量
32275 -
RK3588
+關(guān)注
關(guān)注
8文章
614瀏覽量
7808
發(fā)布評論請先 登錄
瑞芯微RK3588開發(fā)板RK3588 EVB和RK3588S EVB解讀
RK3588 EVB開發(fā)板原理圖講解【八】 RK3588 power Tree
RK3588 EVB 開發(fā)板介紹
基于 RK3588 debian 搭建 RK3588 Kernel 編譯環(huán)境
RK3588J和RK3588是什么關(guān)系?
RK3588和RK3588S之間的區(qū)別是什么
ROC RK3588S PC源代碼RK356X/RK3588 RKNN SDK
實(shí)例課程 I 基于 RK3588 實(shí)例的最新版本 Cadence Allegro PCB 設(shè)計(jì)與仿真項(xiàng)目
XS9922B 四通道 多合一模擬高清解碼器
網(wǎng)課回放 I RK3588 實(shí)例課程第一期:項(xiàng)目總結(jié)和技術(shù)答疑
rk3588和rk3588s的區(qū)別
RK3588與RK3588S比較哪個(gè)好?
RK3588與3588s的區(qū)別
RK3588S和RK3588S2差異說明
RK3588+XS9922B:I2S-TDM多通道音頻采集實(shí)例
評論