å½é³ï¼micæ¥å°codecï¼ç»è¿adcåææ°åä¿¡å·ï¼ç»è¿å¾
ç»2ä¸ac97çæ¥å£åå¨å°cpuçfifoä¸ï¼ç»è¿å¾
ç»1ä¸çdmaä¼ è¾åå¨å°å
åï¼ç»è¿å¾
ç»3ä¸alsa_libä¸snd_pcm_readiæ¥å£ä¼ ç»å½é³è½¯ä»¶ï¼ç»è¿ç¼ç ï¼è¿èå½¢æé³é¢æ件ã
æ¾é³ï¼ææ¾è½¯ä»¶å°é³é¢æ件解ç ï¼å¹¶éè¿å¾
ç»3ä¸snd_pcm_writeiæ¥å£éæ¸ä¼ éå°ådmaç¸å
³çå
åï¼ç»è¿å¾
ç»2ä¸dmaä¼ éç»cpuçfifoï¼åç»è¿ac97çæ¥å£ä¼ éç»dacï¼æåä¼ ç»è¿æ¥å¨codecä¸çspeakerã
å¿å¾ï¼
1.ac97æ°æ®ä¼ è¾é¢å¤æï¼åæ¶å¤ç¨ï¼cpu端fifoåcodec端adc/dacå
³ç³»è¦å¯¹åºå¥½ãæ¯å¦ï¼cpu端çpcm left fifoå ç¨slot3ï¼é£ä¹adcåªæé
ç½®æslot3æè½ææ°æ®ä¼ éç»å®ï¼å¦æé
ç½®æslot6ï¼é£å°±ä¼ ç»cpuçmic in fifoäºãå½é³å声éé常éæ©slot6ï¼å½é³å声éé常两个adcåå«éæ©slot3åslot4ã
2.wavé³é¢æ件大å°è®¡ç®ï¼è¦æµè¯å½é³æ¯å¦ä¸¢ç¥¯ï¼å°±å¿
ç¶è¦è®¡ç®æ件大å°ï¼é常çæ¹æ³æ¯ï¼æ ¹æ®å½é³æ¶é´ï¼ç¨å
¬å¼ï¼å½é³æ¶é´(åä½s)xéæ ·çx(éæ ·ä½æ°/8)xééæ°ãæ¯å¦ï¼å½é³æ¶é´5ç§ï¼éæ ·ç8kHzï¼ä½æ°16ä½ï¼ééæ°1,é£ä¹5x8000x(16/8)x1=80kï¼å®é
çwavæ件大å°ç¨å¤§äº80k就对äºãè¿æä¸ç§è®¡ç®æ件大å°çæ¹æ³ï¼é常é³é¢ç³»ç»è¦ç¨dmaï¼ä¹ä¼ç¨å°dmaä¸æï¼å¯ä»¥å¨dmaä¸æä¸æå°è®¡æ°ï¼æ¬¡æ°xdmaä¸æå¨æåèå°±è¡äºã
3.æ°æ®äº¤æ¢ç大å°é®é¢ï¼å¾
ç»1ä¸DMAä¼ è¾å¿
é¡»åFIFOçç¹æ§å¹é
ï¼è¥FIFOä½å®½æ¯16ä½ï¼æ·±åº¦æ¯16ï¼å¹¶ä¸å满æ¶åDMAååºè¯·æ±(æ¡æ)ï¼åé¾è¡¨å¼DMAå¿
é¡»é
ç½®æä¼ è¾ä½å®½16ä½ï¼1次çªå16åèï¼æè½ä¿è¯ä¸ä¸¢å¤±ä½æ°åæ°æ®ä¸ªæ°ãå¾
ç»2ä¸cpu端FIFOä½æ°è¦åcodec端adc/dacéæ ·ä½æ°å¹é
ï¼i2s/pcmæ¥å£å¯ä»¥é
ç½®æä¸æ ·çå¼ï¼æ¯å¦16ä½ï¼ac97æ¥å£å¤æä¸ç¹ï¼cpu端ä¸ç¨é
ç½®ï¼é£ä¹éæ ·ä½æ°æ¯å¤å°å¢?è¥cpu端fifoä¸ä¸ªå£°éä½å®½16ä½ï¼codec端adc/dacä½å®½18ä½ï¼ac97éé20ä½ï¼åä¼ è¾å°fifo端就被æªåå°ææç16ä½ï¼æ´ä½éæ ·ä½æ°16ä½ï¼adc/dacçæ§è½æ²¡æå
ååæ¥èå·²ãå¾
ç»3ä¸snd_pcm_readiãsnd_pcm_writeiå½æ°ç¬¬ä¸ä¸ªåæ°è¡¨ç¤ºè¯»åæ°æ®ç大å°ï¼åä½æ¯ç¥¯ï¼ä¸æ¯åèãå声é16ä½æ ¼å¼ä¸ç¥¯å¤§å°ä¸º4åè
温馨提示:答案为网友推荐,仅供参考