0 m% i& N- c! Y9 U. ? /* Write a 0, so that no underrun occurs after releasing the state machine */ 5 B8 r# W% ^0 s6 _. X mcasp->regs->XBUF5 = 0;3 I6 q9 _, R* `6 Z
mcasp->regs->RBUF0 = 0;, F1 f9 c1 m; U$ Q; Y$ V3 k2 H
( [8 K9 I4 J% ^& j8 F' d4 c mcasp->regs->XGBLCTL |= GBLCTL_XSMRST_ON; ' a; J2 [6 }. _$ E. R# ]
while ( ( mcasp->regs->XGBLCTL & GBLCTL_XSMRST_ON ) != GBLCTL_XSMRST_ON ); ( `$ ?% u) C, T- _* @1 J+ r8 } mcasp->regs->RGBLCTL |= GBLCTL_RSMRST_ON; 1 V: I/ u2 Q# N/ I
while ( ( mcasp->regs->RGBLCTL & GBLCTL_RSMRST_ON ) != GBLCTL_RSMRST_ON ); - u8 }% u$ @! Y! `. ?$ s4 `. Y1 }# s5 n: y, R! Y! ]
mcasp->regs->XGBLCTL |= GBLCTL_XFRST_ON; ! ^4 W5 u- {' s2 ` while ( ( mcasp->regs->XGBLCTL & GBLCTL_XFRST_ON ) != GBLCTL_XFRST_ON ); ) e( a8 \: J, c/ W, i a mcasp->regs->RGBLCTL |= GBLCTL_RFRST_ON; g2 C2 t) \+ a/ M6 w while ( ( mcasp->regs->RGBLCTL & GBLCTL_RFRST_ON ) != GBLCTL_RFRST_ON ); $ t/ z- L( I A: [2 B 3 F, T$ f8 p5 e CSR = 0x0000; 8 m6 Z) O0 z4 S9 `: D' Y8 A INTC_INTMUX1 = 0x3d; 2 O8 A* \' A" h' Q$ B( ?1 X, h ISTP = (unsigned int)vectors; " w: U% P0 i. d; ~; ~ ICR = 0xFFF0; 0 n8 p; Q" V8 x" \4 Z
IER |= 0x12; & k |& G% t7 Q4 q* V" U4 A( I+ q
CSR |= 0x01; 1 N5 s! L/ } i/ t" v3 C9 ` 4 f/ h. f) l0 G1 f3 ]& [' ^ 1 c- ]# x1 M. j" L' O' y! [) y: V/ E Y
还有就是两个输入输出函数:9 r$ g% d: Z$ C: O
void output_sample(Int32 out_data) * n C9 N; I' }) {) B. k{ - W; F' j0 F) U0 w AIC31_data.uint = out_data; $ q2 I; |6 y- i
MCASP1_XBUF5_32BIT = AIC31_data.uint;" @! ?3 p0 g( @
}% F( D+ W% d* Y5 N
0 {0 H, A5 Z: H6 c0 qInt32 input_sample(void)- E/ \7 ^8 G# Z# r6 B
{ # J, P7 {" C' P3 b: `/ \ AIC31_data.uint = MCASP1_RBUF0_32BIT;0 x' O9 W3 L0 D. [6 f, r
return (AIC31_data.uint); : a$ u- V, {( e}2 N0 \( t9 v( S8 d3 J# H/ {
4 U# {# a& c) n 作者: human 时间: 2016-3-16 11:55
可以参看创龙提供的例程:AUDIO_LINE_OUT_INTR——Line Out 音频输出(中断方式)