数字信号处理器与音频模拟芯片的接口设计
格式如下:
系统复位后,必须通过DSP的DX口向TLC320AD50C的DIN写数据,如果采用一片TLC320AD50C,只需初始化其寄存器1、寄存器2和寄存器4。
由于通信数据长度为16位,初始化时应通过RCR1和XCR1设置McBSP的传输数据长度为16。考虑到TLC320AD50C复位后至少经过6个MCLK才可以脱离复位,故可以在此时间内初始化DSP的串行口。
3.3 软件实现
SERIAL_INIT:
LD #AIC_DP,DP *为AIC的复位初始化DP
ST #K_RESET,AIC_IN_RESET
PORTW #AIC_IN_RESET,K_AIC_ADDR *复位AIC
Need at least 6 cycles to pull the aic out of reset
STM #K_SERIAL_RETRSPCR1
STM #K_SERIAL_RETXSPCR2 *初始化串行口控制寄存器1,2复位串行口
STM #K_SERIAL_OUTRETR,SPCR1
STM #K_SERIAL_OUTRETX,SPXR2 *使串行口脱离复位
RSBXINTM *INTM=0,打开所有的中断
LD #0,DP
ORM #(K_BRINT0 K_BXINT0),IMT *打开BRINT0和BXINT0
LD #AIC_DP,DP
STM #(~K_BRINT0),IFR *清除标志
ST #K_ORESET,AIC_OUT_RESET
PORTW #AIC_OUT_RESET,K_AIC_ADDR *AIC脱离复位
STM RCR1,#K_RFW 初始化接收控制寄存器1,设置接收数据长度为16位
STM XCR1,#K_XFW *初始化发送控制寄存器1,设置发送数据长度为16位
STM PCR,#K_SERIAL *设置为串行口工作方式,而不是通用I/O方式
STM #K_DATA,DXR1 *向DIN写数据,引起二次通信,等待串行口中断
IDLE 在BXINT0的中断服务程序里,向DXR1写入寄存器的值。
评论