請問STM32F系列USB同步傳輸問題(麥克風)

351 views
Skip to first unread message

hansd...@gmail.com

unread,
May 12, 2014, 7:13:02 AM5/12/14
to stm...@googlegroups.com
現正設計一個USB接口的microphone
採用USB isochronous傳輸
欲將PCM聲音資料傳入電腦
目前可以正常的列舉microphone device
但是遇到一個問題就是isochronous資料傳不出去
Trace STM32 source code都會遇到isochronous incomplete event
從BUS HOUND觀察isochronous封包長度都為0
想請各位先盡協助分析一下
以及給予一些建議

PS.
1.有打開EP IN
/* Open EP IN */
DCD_EP_Open(pdev,
AUDIO_IN_EP,
10,
USB_OTG_EP_ISOC);

2.有定時呼叫EP TX
DCD_EP_Tx (pdev, AUDIO_IN_EP, IsocInBuff, 16);


Bee

unread,
May 14, 2014, 4:20:56 AM5/14/14
to stm...@googlegroups.com, hansd...@gmail.com
Audio In根本找不到Example Code。這樣完全無機會去了解問題。 

peterw...@yahoo.com.tw

unread,
May 20, 2014, 10:28:33 AM5/20/14
to stm...@googlegroups.com, hansd...@gmail.com
hansd...@gmail.com於 2014年5月12日星期一UTC+8下午7時13分02秒寫道:
請問是在usbd_audio_DataIn 這個function 裡面呼叫DCD_EP_Tx嗎,會不會因為是這個原因,因為我在usbd_audio_DataIn這個function 呼叫DCD_EP_Tx 好像有成功(不確定是因為我都丟亂數資料但是打開控制台麥克風是有反應的)

Bee

unread,
May 20, 2014, 9:52:21 PM5/20/14
to stm...@googlegroups.com, hansd...@gmail.com, peterw...@yahoo.com.tw
找來找去只有speaker out,沒有mic in。找TI, NXP也一樣,不知Audio In是犯了什麼。就是沒有可以參考的程式碼。
所以實在無法從軟體上去了解問題。

peterw...@yahoo.com.tw

unread,
May 20, 2014, 11:28:09 PM5/20/14
to stm...@googlegroups.com, hansd...@gmail.com, peterw...@yahoo.com.tw
Bee於 2014年5月21日星期三UTC+8上午9時52分21秒寫道:
> 找來找去只有speaker out,沒有mic in。找TI, NXP也一樣,不知Audio In是犯了什麼。就是沒有可以參考的程式碼。
> 所以實在無法從軟體上去了解問題。

https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLists%2Fcortex_mx_stm32%2FTroubleshooting%20required%20with%20STM32f4%20USB%20Microphone%20device&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B&currentviews=334

我是改一下這個
Message has been deleted

peterw...@yahoo.com.tw

unread,
May 21, 2014, 8:40:59 AM5/21/14
to stm...@googlegroups.com, hansd...@gmail.com, peterw...@yahoo.com.tw
Bee於 2014年5月21日星期三UTC+8上午9時52分21秒寫道:

> 找來找去只有speaker out,沒有mic in。找TI, NXP也一樣,不知Audio In是犯了什麼。就是沒有可以參考的程式碼。
> 所以實在無法從軟體上去了解問題。

我確定我貼的那個討論區的code在照上面修改是可行的,我傳0,1.....32使用USBTrace觀看封包卻實是有的,要在usbd_audio_DataIn呼叫DCD_EP_Tx才可以,我個人認為不能隨時呼叫DCD_EP_Tx,是因為PC是host,USB的規範是由host決定甚麼時候傳,host沒要求卻呼叫DCD_EP_Tx,或者host要求卻沒呼叫DCD_EP_Tx都會造成溝通失敗

Bee

unread,
May 21, 2014, 10:21:12 PM5/21/14
to stm...@googlegroups.com, hansd...@gmail.com, peterw...@yahoo.com.tw
DCD_EP_TX是向USB送出資料沒有錯。但問題在MIC狀態控制。
也就是現在要開始錄音,錄音中,還是結束了或是裝置關閉,這樣的狀態。
因為USB上有眾多裝置,只是丟一串資料,Host根本不知是做什麼的。
所以我還在找Demo program,不然實在不好下手。而USB又剛開始,要能建造完整Audio In,目前還不可能。

Bee

unread,
May 21, 2014, 10:39:27 PM5/21/14
to stm...@googlegroups.com, hansd...@gmail.com, peterw...@yahoo.com.tw
這樣說好了。
最基本的程式,就算沒有用ADC。也要可以完成送出固定循環資料到MIC接收。在此我設定是Sin波,也就是單音。
就是在PC側,打開Recoder,按下錄音,可以錄到sin波回來,然後按下停止錄。
在此應能得到一段聲音資料,資料長度其實是由PC決定而非MCU。
可惜就是無法進展。

hansd...@gmail.com

unread,
May 22, 2014, 2:34:26 AM5/22/14
to stm...@googlegroups.com, hansd...@gmail.com, peterw...@yahoo.com.tw
peterw...@yahoo.com.tw於 2014年5月20日星期二UTC+8下午10時28分33秒寫道:
依照官方文件的確是在usbd_audio_DataIn裡面呼叫DCD_EP_Tx
"usbd_audio_DataIn() and usbd_audio_DataOut() which update the audio
buffers with the received or transmitted data. For Out transfers, when data are
received, they are directly copied into the audiobuffer and the write buffer
(IsocOutWrPtr) is incremented."

但是我現在程式無法進入usbd_audio_DataIn
請問您是如何調用的呢?
Reply all
Reply to author
Forward
0 new messages