W!o+ 的《小伶鼬工坊演義》︰樹莓派 3 三兩事之 I2S 篇

當樹莓派 3 甫一出現,就有人發想『拿來做什麼好呢?』。於是乎各種『最佳計畫』表列林立。這裡挑選曾經談過的典型之幾個︰

入門電腦

遊戲機

媒體中心

‧……

 

其中『媒體中心』︰

過去老子說︰『天地不仁,以萬物為芻狗;聖人不仁,以百姓為芻狗』,如果『祭祀』時不用『活狗』,改以『草扎』的芻狗,總是『比較好』的事吧。或許正因如此,此話歷史上議論的少自然的『法則』和聖人的『教化』,無法因人設事,只好聽之隨緣罷了。後來孟子於《孟子‧梁惠王上》上講︰ 『子曰︰始作俑者,其无后乎?』這可引發了大『辯論』,彷彿人們都想知道孔子此言何意?是不是罵人』?作者於此無意』或者『』說著這一件事情,從另一處說吧,『考古發現古代『宮殿』是有以人為』的事實,『墓穴』又有以人為』的證據,直白的面對不就好了,『是什麼的』就稱它是個什麼』。

甲骨文孚

金文孚

甲骨文妥

金文妥

裘錫圭先生認為』是『』的初文,甲骨文『』從『』從『』,或不 從』而』。『又』、『爪』皆象手形,『象小孩子。『孚』字象抓住一個孩子之形古之戰勝方往往把敵敗方的成年男子殺死,只俘虜婦女和小孩。

』字的甲金文從『』從『』,象以手擒拿、抓取女子之形本義俘掠,後作『』。『妥』與『孚』的造字原理相同吳其昌先生認為甲骨文『男曰孚女曰妥

孔子說法的『真相』是什麼呢?如果從『孔子葬母』一事來看,也許只是製作精美的用之於喪禮頗有意見

作者認為
人類應當誠實面對歷史事實,要能真心認識自己,或許才知道人、事、物的『道路』,也許可避免 進□?退□? 』的『困境』。如果人生真的一個『終極』的『目的』或者說『意義』,那麼過程中的 一切一種『手段』與『追求』。為什麼這麼說呢?畢竟人生自古誰無死?一個航向死亡或是致力期間總是自己方可回答的問題,就像自己想要成為『什麼樣的人』一樣??

過去有人說︰假使『讀歷史』像『看電影』這該有多好?也許時至今日,已然不是不可能的了。然而這還是不能取代如何『解讀』歷史的問題?英國 Robin George Collingwood 過世之後,1946 年他的友人  T.  M.  Knox  將他的『歷史的哲學』之思想編輯成《歷史的理念》一書,這本書說︰

基於自然的『人性』,人的『同理心』和『同感心』是否能夠用著『想像力』的翅膀重回『歷史的現場』,再次在心中『重演』那些『歷史事件』,『體驗』事件中人物的『思想』以及『情感』,因此『解讀』歷史事件中的『人性抉擇』之理性必然性』。

作者從這點切入,是因為不論建立哪種媒體中心』,不管收集哪些媒體』,即使只是以休閒觀賞為目的,都離不開『人、事、物』的『閱讀』,如果以之』,將更能知彼知此』和『知此知彼』,故特寫此一段『前言』。

大火焚毀亞歷山大圖書館 ── 那個藏書量達七十萬卷,只說『書目』就有一百二十卷的圖書館 ── ,如今竟然是到底長的『什麼模樣』都無人知曉?因為它連『一塊殘石』也沒法能留下來!……

───

 

是作者早年喜愛的項目之一,也曾寫『音樂播放器之………』系列文本談談如何將『 CD 轉成 mp3 』。因想增加『軟體影音解碼』的速度,打算將之升級。由於『聲音品質』是欣賞音樂的必要條件,故而考察 HiFiBerry  音效卡

dacplus-rca-300x300

在樹莓派 3 上的『相容性』。非常驚訝的讀到︰

Important news on compatibility with the Raspberry Pi 3

Update 16.03.16: The bug in the Raspberry Pi drivers has been fixed now. All drivers now work perfectly. The Bluetooth-workaround isn’t needed anymore.

Dear customers,

we are happy to tell that most of our boards already work with the new Raspberry Pi 3. Please note, we are still working on making the Digi+ (both versions) and DAC+ PRO fully compatible with the new Raspberry Pi 3.

Right now the boards only work correctly if you disable the Bluetooth option. It looks like this is caused by a conflict with the Bluetooth chip of the Raspberry Pi 3. We work closely together with the Raspberry Pi developers to find a solution as fast as possible. However, at this time it is not clear if there is a hardware conflict on the Raspberry Pi 3 or this can be fixed by upgrading the firmware.

As many of you won’t use the Bluetooth connectivity, the following workaround should work for most of you. You need to add a line

dtoverlay=pi3-disable-bt

 

to /boot/config.txt (the file might be located somewhere else if you are using a distribution different from Raspbian)

If you have any ideas or questions please discuss them in our forum, we are going to support you as good as we can.

Kind regards

Daniel
Founder HiFiBerry

───

 

那時心想『為什麼需要關掉藍牙呢?』,這個

I²S

I²SI2S英語:Inter-IC SoundIntegrated Interchip Sound)是IC間傳輸數位音訊資料的一種介面標準,採用序列的方式傳輸2組(左右聲道)資料。I2S常被使用在傳送CDPCM音訊資料到CD播放器的DAC中。由於I2S將資料訊號和時脈訊號分開傳送,它的抖動jitter)失真十分地小。

一般的I²S

I²S由3條傳輸線組成:

  1. 位元時脈線(BCLK: bit clock line)
  2. 字元選擇線(word select line)或左右時脈線(left right clock line)(LRCLK)
  3. 至少一條複合資料線(SDATA:multiplexed data)

也有可能找到以下這些線:

  1. 主時脈:256個典型的左右時脈線(MCLK= 256*LRCLK)
  2. 上傳資料的複合訊息(multiplex)線

I²S由前述的位元時脈、字元時脈和資料三條線所組成。當新的資料被放到資料線上時,位元時脈就會跳動一次。它以資料取樣頻率的64倍速度在運作, 諸如CD的取樣頻率為44.1 KHz,要傳輸它所使用的位元時脈就為2.8224 MHz。I²S的資料線允許兩個軌道的資料同時傳送,而字元選擇時脈能讓接收裝置知道現在正在傳送軌道1或軌道2的資料。每個軌道可傳輸32位元的資料, 所以顯而易見地,字元選擇時脈和聲音的取樣頻率時脈是相同的。位元時脈即是取樣頻率時脈的64倍,44.1KHz x 2個聲道 x 32位元 = 2.8224MHz。

I²S的資料是從高位元(MSB)傳送至低位元(LSB),從字元選擇時脈的左端開始,加上一個位元時脈的延遲,即資料將比字元選擇時脈要慢一個位 元時脈。也有左校正(Left Justified)的I²S資料流,它沒有位元時脈的延遲,資料和字元選擇時脈是同步的。右校正(Right Justified)則是資料比字元選擇時脈快一個位元時脈。

───

 

到底與『藍牙』能有什麼牽扯??結果踏上了一條意外之旅!或可呈現『樹莓派基金會』和『社群』間的互動關係,『除錯』的實務過程,故特以為記。

當人們對某個『現象』不解,難免會瞎子摸象︰

派︰現在時間尚早,就給大家說個《象  》象法,祝福同學們鵬程萬里︰

《白虎通德論》‧ 卷三‧《五行

五 行者,何謂也?謂金、木、水、火、土也。言行者,欲言為天行氣之義也。地之承天,猶妻之事夫,臣之事君也,謂其位卑。卑者親視事,故自周於一行,尊於天 也。《尚書》:「一曰水,二曰火 ,三曰木,四曰金,五曰土。」水位在北方,北方者,陰氣在黃泉之下,任養萬物;水之為言淮也,陰化沾濡任生木。木在東方。 東方者,陰陽氣始動,萬物始生。木之為言觸也,陽氣動躍,火在南方,南方者,陽在上,萬物垂枝。火之為言委隨也,言萬物布施;火之為言化也,陽氣用事,萬 物變化也。金在西方,西方者,陰始起,萬物禁止。金之為言禁也。土在中央者,主吐含萬物。土之為言吐也。何知東方生?《樂記》曰:「春生,夏長,秋收,冬 藏。 」土所以不名時,地,土別名也,比於五行最尊,故不自居部職也 。《元命苞》曰:「土之為位而道在,故大不預化,人主不任部職 。」

五 行之性或上或下何?火者,陽也,尊,故上;水者,陰也,卑,故下;木者,少陽;金者,少陰,有中和之性,故可曲可直,從革 ;土者最大,苞含物,將生者出者,將歸者,不嫌清濁為萬物。《尚書》曰:「水曰潤下,火曰炎上,木曰曲直,金曰從革,土爰稼穡。」五行所以二陽三陰何?土 尊,尊者配天,金木水火,陰陽自偶。

水 味所以鹹何?是其性也。所以北方鹹者,萬物鹹與,所以堅之也 ,猶五味得鹹乃堅也。木味所以酸何?東方,萬物之生也,酸者以達生也,猶五味得酸乃達也。火味所以苦何?南方主長養,苦者所以長養也,猶五味須苦可以養 也。金味所以辛何?西方煞傷成物,辛所以煞傷之也,猶五味得辛乃委煞也。土味所以甘何?中央者, 中和也,故甘,猶五味以甘為主也。《尚書》曰:「潤下作鹹,炎上作苦,曲直作酸,從革作辛,稼穡作甘。」北方其臭朽者何?,北方水,萬物所幽藏也,又水者 受垢濁,故臭腐朽也。東方者木也 ,萬物新出地中,故其臭膻。南方者火也,盛陽承動,故其臭焦。西方者金也,萬物成熟,始復諾,故其臭腥。中央土也,主養, 故其臭香也。《月令》曰:「東方其臭膻,南方其臭焦,中央其臭香 ,西方其臭腥,北方其臭朽。」所以名之為東方者,動方也,萬物始動生也。南方者,任養之方,萬物懷任也。西方者,遷方也,萬物遷落也。北方者,伏方也,萬 物伏藏也。

行 行的說法太古,傳聞可以追之於神 農 農氏之紀。雖然用著『木』、『火』、『土』、『金』、『水』的名目,只不過假借『可見』之『象』 象,來講那『不可睹』之天行『氣』 氣 。假使用著瞎子摸象的辦法,就會失了『體用』之 經緯 緯。若問『五行』從哪而來的?來自於『陰陽』。『陰陽』又從哪而來的?來自於『太極』。如此問下去,終將歸之於來自『大自然』的了。古人為求『厚生』天 下,『稼穡』的收成十分重要,這可是『靠天吃飯』,所以能由『四時』得出『生、長、收、藏』的道理。而後又用『陰陽五行』解說這個道理的原故,逐漸形成了 『抽象』系統 ,可以『經緯縱橫』的比擬『萬事萬物』的『體』『用』關係。要是理解『精當』,將之用於寫 碼 碼,有何不可的耶!

─── 摘自《 M♪o 之學習筆記本《卯》基件︰【䷪】莧陸夬夬

 

其實這也是『科技』追求『新知』時,常有的『現象』。或許要點在『整體』知識以及『部份』證據之間求『融洽』。而且可能發現『偶然』或『意外』恰是『解決』問題之關鍵處??說不定正是

凡一心追求,必使他求得

的奧秘!!

在此就請讀者好好欣賞這篇《 I2S 除錯記》吧!!!

Possible I2S master/slave bug in RPi3 #1321

bonezuk opened this Issue · 37 comments

Hi

I am currently investigating a number of issues on the rpi-4.1-y branch within our sound drivers concerning the playback of sound via our HiFiBerry Digi+ and DAC-Pro on the new RPi3. After a series of initial investigations we think there might be some conflict on the I2S bus line between the bcm2708_i2s and the (pcm512x and hifiberry_dacplus) modules.

Both the Digi+ and DAC-Pro modules set the

dai->dai_fmt = SND_SOC_DAIFMT_CBM_CFM |SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF;

With hifiberry_dacplus module it is initially configured to

dai->dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS;

This is done so the PCM512x on the DAC+ acts as an I2S slave. On the start in snd_rpi_hifiberry_dacplus_init it detects that wither or not a given board is a DAC-Pro and thus changes the dai_fmt to master (SND_SOC_DAIFMT_CBM_CFM).

Also the same hifiberry_dacplus module works with the DAC+ sound card where it is the I2S slave.

2016-03-02_17-15-04

The image shows the output from my logic analyser of the I2S bus where it shows errors in reading the samples due to an incorrect bit number in a given sample. This also helps tie in with explaining what is actually heard during playback: i.e. Sometimes the music can be heard with distortion, other times there is too much distortion to hear any music.

My best guess, at this moment in time, is that a bug has been introduced in the bcm2708_i2s module or associated architecture somewhere between 4.1.7 and 4.1.18+7 where-by when the dai_fmt flag is set to SND_SOC_DAIFMT_CBM_CFM then both the bcm2708 and associated the snd_soc_codec module both try to send an I2S clock signal. Where as, I would expect only the snd_soc_codec DSP to configure to setup the I2S clock signal.

Another line of investigation that I am looking at is updating and ensuring that our device drivers reflect the various changes to the device tree code. It maybe possible that because of this something is not being initialized write in the bcm2708_i2s module and thus the conflict in the I2S bus.

I’m also currently expanding my investigation of this issue to cover the 4.4 kernel branch.

Let me know if you have ideas but how I can go about resolving this issue?

Cheers,

Stuart

───

Are you saying this fault is only seen on a Pi3, not a Pi2?

───