StarterWare音頻示例應用程序使用EDMA進行音頻數據傳輸和接收操作。 與EDMA傳輸相關的音頻數據緩沖區是:
• <b>4發送緩沖區</b>- TX buffer-0,TX buffer-1,TX buffer-2,和一個循環緩沖區。
• <b>3接收緩沖區</b>-RX buffer-0,RX buffer-1,和RX buffer-2。
EDMA param集被編程為接收RX緩沖區中的數據并從TX緩沖區發送數據。 當一個RX緩沖區被填滿時,內容被復制到TX緩沖區,然后它被發送。 如果沒有收到數據,則用于傳輸的EDMA param集被編程為從循環緩沖器傳輸,該循環緩沖器是不包含有效音頻數據的空緩沖器。
EDMA的參數初始化
在McASP發送/接收狀態機退出復位之前,EDMA param集被初始化。 為RX設置的主param設置為0,為TX設置的主param設置為1.在主param設置過期后,數據發送/接收繼續到鏈接的paRAM集。 由于EDMA將被鏈接的param設置為主param集并將其用于數據傳輸,所以被鏈接的param集不會過期。 因此,在關聯的傳輸完成之后,不需要更新鏈接的param集合中的所有字段。
接收參數設置0被初始化為接受RX buffer-0中的第一音頻采樣。傳輸完成中斷對于param set 0不啟用。param set0被連接為param set 40。param set40開始接受RX buffer-0里的數據。param set 40被連接為param set 41(被初始化為接受RX buffer-1中的數據)。param set 41 被連接回param set 40。因此,接收參數設置初始化為0 --> 40 --> 41 --> 40。該鏈接在應用程序執行時不會更改。
所有的TX參數集初始化為從循環緩沖器傳輸。傳輸完成中斷未啟用param set 1。PARAM組1被鏈接到PARAM設定42. PARAM組42和43被連接到其自身。 因此,傳輸param設置鏈接被初始化為1→42→42,43→43。
從復位釋放McASP TX和RX狀態機
一旦McASP TX和RX狀態機從復位狀態釋放,McASP就會觸發EDMA事件進行發送和接收操作。 第一個音頻采樣通過主param set 0接收到RX buffer-0中。由于它連接到paRAM set 40,所以在接收到第一個采樣后,EDMA通過paRAM set 40繼續在
RX buffer -0中接收數據。同樣,主 param set-1啟用從循環緩沖區傳輸。 當主paramset到期時,param集合42不斷地從循環緩沖器發送數據。
一旦接收緩沖區0中的EDMA接收完成,應用程序就會將接收緩沖區0復制到發送緩沖區0,并更新鏈接參數集42以從發送緩沖區0發送數據。 Param set 42也鏈接到param集合43.當正在發送TX buffer 0時,EDMA通過param set 41 接受RX buffer 1中的數據,EDMA通過paRAM集合41在RX緩沖器-1中接收數據。因此,param集合42被更新以接收RX緩沖器 – 2中的數據。
在RX緩沖器-1被填充之后,它復制到TX緩沖器-1并且paRAM組43被更新以從TX緩沖器-1發送。 在來自TX緩沖器-0的EDMA傳輸完成之后,由于paRAM組42連接到paRAM組43,EDMA立即開始從TX緩沖器-1發送。在此期間,EDMA在RX緩沖器-2中接收數據。
在接收緩沖器-2被填充之后,它被復制到TX緩沖器-2并且paRAM組42被更新以從TX緩沖器-2發送。 在來自TX緩沖器-1的EDMA傳輸完成之后,EDMA立即開始從TX緩沖器-2發送,因為paRAM組43連接到paRAM組42.在此期間,EDMA接收RX緩沖器-0中的數據。
RX緩沖區-0填充后,將其復制到TX緩沖區-0,并更新paRAM集43以從TX緩沖區-0發送。 在來自TX緩沖器-2的EDMA傳輸完成之后,由于paRAM集合42鏈接到paRAM集合43,所以EDMA立即開始從TX緩沖器-0傳輸。在此期間,EDMA在RX緩沖器-1中接收數據。
EDMA數據傳輸按照上述步驟中的相同順序重新開始,因為param集合已被適當編程。
|