1. 程式人生 > >SAI 序列音訊介面學習

SAI 序列音訊介面學習

SAI 簡介


序列音訊介面(SAI),SAI具有靈活性高、配置多樣的特點。


SAI 通過兩個完全獨立的音訊子模組來實現這種靈活性與可配置型,
每個音訊子模組與多達4個引腳(SD、SCK、FS和MCLK)相連。


如果將兩個字模組宣告為同步模組,則其中一些引腳可以共用,從而可釋放
一些引腳用作通用I/O。


音訊子模組既可以作為接收器,又可作為傳送器;既可與另一個模組同步,又可以不同步。






FS_A   :通道識別訊號,連線I2S的左/右對齊時鐘訊號(LRC)
SCK_A  :位時鐘訊號,連線I2S的位時鐘訊號(BLCK), SCK = FS*slot個數*單個slot大小
SD_A   :資料輸入/輸出腳,
MCLK_A :主時鐘訊號,連線I2S的MCLK腳,固定輸出頻率為256*fs,fs即音訊訊號取樣頻率(fs)。


FS_B
SCK_B
SD_B
MCLK_B




SAI slot簡介
slot是SAI音訊幀中的基本元素,音訊幀中slot的數目通過SAI_xSLOTR暫存器配置,每個音訊幀
的slot數,最大是16。在I2S模式下,SAI中slot的傳輸方式


每個slot可以傳輸一個聲道的 音訊資料,這樣,6個slot就可以傳輸6個聲道的音訊資料。一般
音訊檔案都是立體聲,所以只需要2個slot即可,每個半幀一個slot。


STM32的SAI最多可以實現16聲道資料傳輸(16個slot)。


每個slot的大小是可以配置的。

Each audio block in the SAI has its own FIFO


FIFO depth is 8 words


CPU or DMA access to the FIFOs


Data is right-aligned into the FIFO.


FIFO FLUSH bit to reinitialized the FIFO pointers
FIFO FLUSH位用於重新初始化FIFO指標


Each access in read from the FIFO will return a word (32-
bit) equivalent to one data
從FIFO讀取的每個訪問都會返回一個字(32位字)
位)相當於一個數據


Each write into the DR will correspond to the FIFO to one
data.
每次寫入DR都會將FIFO對應一個
資料。


Programmable FIFO threshold to manage data transfert:
– FIFO FULL, ¾ FIFO, ½ FIFO, ¼ FIFO, FIFO EMPTY
可程式設計FIFO閾值管理資料傳輸:
- FIFO滿,¾FIFO,½FIFO,¼FIFO,FIFO空


The clock generators are used only in MASTER mode.


Slave mode:
FS transitions are automatically monitored in order to detect a wrong
placement of the start of frame by generating either an anticipated or late
frame synchronization detection.
自動監視FS轉換以檢測錯誤
通過生成預期或遲到來放置幀的開始
幀同步檢測。




The maximum number of slots per audio frame is fixed to 16
Configured through bits “NBSLOT[3:0] in the SAI_xSLOTR register +1”.


Each slot can be defined as an active slot, or not
– By setting bit SLOTEN[15:0] in the SAI_xSLOTR register.


The size of the slots is selected by setting bit SLOTSZ in the
SAI_xSLOTR register
插槽的大小通過設定位SLOTSZ來選擇
SAI_xSLOTR暫存器


It is possible to define the data position into the slot (FBOFF)
可以將資料位置定義到插槽(FBOFF)






















相關推薦

SAI 序列音訊介面學習

SAI 簡介序列音訊介面(SAI),SAI具有靈活性高、配置多樣的特點。SAI 通過兩個完全獨立的音訊子模組來實現這種靈活性與可配置型,每個音訊子模組與多達4個引腳(SD、SCK、FS和MCLK)相連。如果將兩個字模組宣告為同步模組,則其中一些引腳可以共用,從而可釋放一些引腳

PHP反序列化漏洞學習

exc tof target fun 反序 ring 內容 style 字符串 serialize:序列化 unserialize: 反序列化 簡單解釋: serialize 把一個對象轉成字符串形式, 可以用於保存 unserialize 把serialize序列化後的字

ASoC數字音訊介面(DAI)

ASoC數字音訊介面(DAI) ASoC目前支援SoC控制器和行動式音訊編解碼器上的三種主要數字音訊介面(DAI),即AC97,I2S和PCM。 AC97 AC97是許多PC音效卡上常見的五線介面。它現在在許多行動式裝置中也很流行。該DAI具有復位線,並在其SDATA_OUT(回放)和S

Netty學習(2): protobuf序列化框架學習

1. protobuf是什麼     protobuf是google旗下的產品,用於序列化與反序列化資料結構,但是比xml更小、更快、更簡單,而且能跨語言、跨平臺。你可以把你的資料按你的要求結構化,然後可以轉化成多種資料流,同時其他語言可以通過

cocos2d-x 常用音訊介面

//預載入 const char* fileName = "xxx.mp3"; #define audioEngine = SimpleAudioEngine::getInstance() //預載入背景音樂 audioEngine->preloadBackgroundMusic(file

【5】caffe的python介面學習:訓練模型(training)

如果不進行視覺化,只想得到一個最終的訓練model, 那麼程式碼非常簡單,如下 : import caffe caffe.set_device(0) caffe.set_mode_gpu() solver = caffe.SGDSolver('/home/yeler082/data/solver

【4】caffe的python介面學習:生成solver檔案

 caffe在訓練的時候,需要一些引數設定,我們一般將這些引數設定在一個叫solver.prototxt的檔案裡面,如下: base_lr: 0.001 display: 782 gamma: 0.1 lr_policy: "step" max_iter: 78200 momentum

【3】caffe的python介面學習:生成配置檔案

caffe是C++語言寫的,可能很多人不太熟悉,因此想用更簡單的指令碼語言來實現。caffe提供matlab介面和python介面,這兩種語言就非常簡單,而且非常容易進行視覺化,使得學習更加快速,理解更加深入。 如何配置CAFFE的python介面? 如何將圖片轉換成LMDB檔案? 如何

Mybatis逆向工程的pojo實現序列介面的程式碼

這兩天在學習一個分散式的專案--淘淘商城,使用了Alibaba的dubbo作為通訊工具,zookeeper作為register,由於dubbo是基於socket協議的,所以在進行pojo傳輸的時候報了異常,因為pojo沒有實現序列化介面,就無法進行基於二進位制的序列化傳輸。報錯如下:    但是很麻煩的一

Java影象介面學習筆記1

前些日子剛學完Java的圖形介面,想寫個小計算器練練手。結果出現了一個問題,就是每次執行時介面都是空的,當放大或者縮小以後介面才會出來。。。查了資料後發現原來是setVisible的位置問題。setVisible(true)要放到控制元件前面的話會先刷新出頁面,結果就是後面的控制元件顯示不出來。因此

HDMI-ARC音訊介面DIR9001光纖/CS8416替換MS8416同軸數字解碼

HDMI-ARC/光纖/同軸數字解碼板功能說明: 1) 本模組有 HDMI-ARC/光纖/同軸數字輸入,支援 PCM 格式解碼, 立體聲輸出。 2) 內建名牌原廠 24BIT/196KHz DA 轉換 IC,高音清澈,中音明亮, 低音雄厚,通透。 3) 10-20KHZ 頻響,低噪聲-95DB (T

Map.Entry介面學習

Map集合封裝鍵值對型別的資料,在Map集合的底層,每一個Key-Value鍵值對都被封裝到一個Entry型別的子容器中,一個Entry物件只包含一個鍵值對,Map集合底層使用entry物件來儲存這些鍵值對,在遍歷Map集合時,可以通過遍歷Key來遍歷Map集合,還可以通過遍歷entry

PHP 開發 APP 介面 學習筆記與總結--讀取資料庫方式

方案一:讀取資料庫方式 從資料庫讀取資訊→封裝→生成介面資料 應用場景: 資料時效性比較高的系統   方案二:讀取快取方式 從資料庫獲取資訊(第一次設定快取或快取失效時)→封裝(第一次設定快取或快取失效時)→返回資料          

序列化及Java Serializable序列介面

2018.11.02 文章目錄 前言 Hello,序列化 `Serializable`:不能忽視的你 前言 某專案新版本上線,新版本中添加了A類,而A類最終會通過ObjectOutputStr

基於Keras的LSTM多變數時間序列預測 (學習筆記)

本文翻譯自Jason Brownlee的部落格https://machinelearningmastery.com/multivariate-time-series-forecasting-lstms-keras/ 本部落格主要參考以下中文版部落格 https://blog.csdn.net/qq_280

數字音訊系統學習

引言 在瞭解相關的音訊後,對取樣率,位深,聲道等基礎後,但是還是不知道具體的一些工作細節。 他們到底有什麼用,數值是怎麼來的?聲音是如何播放和採集的? 下面將詳細的描述他們的工作過程。 只有真正的理解的聲音的處理,在對音訊開發的時候,才不會對哪些莫名的引數搞得糊塗。 本來打算要整理一下,

實體類實現序列介面(Serializable)的用處

Serializable,之前一直有使用,預設的實體類就會實現Serializable介面,對具體原因一直不是很瞭解,同時如果沒有實現序列化,同樣沒什麼影響,什麼時候應該進行序列化操作呢?今天查了下資料,大致總結一下。 1.首先,什麼是序列化? 其實序列

(筆記總結)序列通訊介面標準

序列通訊介面標準 1.RS-232C介面 RS-232C介面是美國電子工業協會1969年修訂RS-232標準。RS-232C定義了資料終端裝置(DTE)和資料通訊裝置(DCE)之間的物理介面標準。 1.機械特性 RS-232C介面規定使用25針聯結器(也有一種9針非標準聯結器),聯結

caffe的python介面學習(6):用訓練好的模型(caffemodel)來分類新的圖片

#coding=utf-8import caffeimport numpy as nproot='/home/xxx/' #根目錄deploy=root + 'mnist/deploy.prototxt' #deploy檔案caffe_model=root + 'mnist/lenet_iter

Java集合類之介面學習

一、前言       在Java中使用介面能規範實現該介面的類該實現的功能,介紹Java集合類的介面有助於對Java集合整體、對不同場景該使用什麼樣的集合有個明確的認識,對於學習Java開發的人來說,Java標準庫集合的學習是必經之路,所以自今天起,我打算每天從