檢視了大量關于beaglebone black的i2s dac輸出方法,總結了一下不使用轉接闆,可以支援runeos,volumo等hifi系統的i2s dac且通用的使用方法。
無作業系統限制,隻要是複合下三個步奏都适用
第一步,首先找到io口
beaglebone black 的i2s是通過NXP TDA19988到hdmi輸出的,但是在p9引腳裡包含了這些針的引出.根據外部DAC選擇你要使用的IO。

P9_25 - A14/0 - mcasp0_ahclkx (oscillator) - GPIO3_21
P9_31 - A13/0 - mcaps0_aclkx (bit clock) - SPI1_SCLK
P9_29 - B13/0 - mcasp0_fsx (lr clock) - SPI1_D0
P9_30 - D12/0 - mcasp0_axr0 (data0) - SPI1_D1
不使用轉接闆就是沒有時鐘,或者使用hdmi的時鐘.
SPI1_CSOP9_28 Bitstream
SPI1_D0P9_29 Left/Right clock
SPI1_SCLKP9_31 Bit clock
第二步,檢視有沒有名稱為dsp的字元裝置節點。
ls -ald /dev/dsp*
crw-rw---T 1 root audio 14, 3 Jan 1 2000 /dev/dsp
獲得聲霸卡名稱指令
aplay -L
default:CARD=Black
TI BeagleBone Black,
Default Audio Device
第三步,使用播放器播放,
ffmpeg -i test.mp3 -f alsa "
default:CARD=Black" -re -vol 20
這裡的-vol分為256級,0為靜音。
I2S為三線總線,3個信号分别為:
① 串行時鐘SCK,也叫位時鐘(BCK)。即每發送1位數字音頻資料,SCK上都有1個脈沖。SCK的頻率=2×采樣頻率×采樣位數。在資料傳輸過程中,I2S總線的發送器和接收器都可以作為系統的主機來提供系統的時鐘頻率。
② 幀時鐘WS,即指令(聲道)選擇,用于切換左右聲道的資料。WS的頻率等于采樣頻率,由系統主機提供。WS為“1”表示傳輸的是左聲道的資料,WS為“0”表示傳輸的是右聲道的資料。
③ 串行資料信号SD,用于傳輸二進制補碼表示的音頻資料。
注:文章有引用的地方來自這些地方。
https://www.element14.com/community/community/designcenter/single-board-computers/next-gen_beaglebone//blog/2013/05/28/bbb--audio-notes
http://blog.sina.com.cn/s/blog_5372b4a00102wk34.html
http://blog.csdn.net/greston/article/details/8076584
http://bbb.ieero.com/