數(shù)字信號處理器與音頻模擬芯片的接口設(shè)計(jì)
格式如下:
系統(tǒng)復(fù)位后,必須通過DSP的DX口向TLC320AD50C的DIN寫數(shù)據(jù),如果采用一片TLC320AD50C,只需初始化其寄存器1、寄存器2和寄存器4。
由于通信數(shù)據(jù)長度為16位,初始化時(shí)應(yīng)通過RCR1和XCR1設(shè)置McBSP的傳輸數(shù)據(jù)長度為16??紤]到TLC320AD50C復(fù)位后至少經(jīng)過6個(gè)MCLK才可以脫離復(fù)位,故可以在此時(shí)間內(nèi)初始化DSP的串行口。
3.3 軟件實(shí)現(xiàn)
SERIAL_INIT:
LD #AIC_DP,DP *為AIC的復(fù)位初始化DP
ST #K_RESET,AIC_IN_RESET
PORTW #AIC_IN_RESET,K_AIC_ADDR *復(fù)位AIC
Need at least 6 cycles to pull the aic out of reset
STM #K_SERIAL_RETRSPCR1
STM #K_SERIAL_RETXSPCR2 *初始化串行口控制寄存器1,2復(fù)位串行口
STM #K_SERIAL_OUTRETR,SPCR1
STM #K_SERIAL_OUTRETX,SPXR2 *使串行口脫離復(fù)位
RSBXINTM *INTM=0,打開所有的中斷
LD #0,DP
ORM #(K_BRINT0 K_BXINT0),IMT *打開BRINT0和BXINT0
LD #AIC_DP,DP
STM #(~K_BRINT0),IFR *清除標(biāo)志
ST #K_ORESET,AIC_OUT_RESET
PORTW #AIC_OUT_RESET,K_AIC_ADDR *AIC脫離復(fù)位
STM RCR1,#K_RFW 初始化接收控制寄存器1,設(shè)置接收數(shù)據(jù)長度為16位
STM XCR1,#K_XFW *初始化發(fā)送控制寄存器1,設(shè)置發(fā)送數(shù)據(jù)長度為16位
STM PCR,#K_SERIAL *設(shè)置為串行口工作方式,而不是通用I/O方式
STM #K_DATA,DXR1 *向DIN寫數(shù)據(jù),引起二次通信,等待串行口中斷
IDLE 在BXINT0的中斷服務(wù)程序里,向DXR1寫入寄存器的值。
評論