TI中文支持网
TI专业的中文技术问题搜集分享网站

5509A的MCBSP1使用SPI来发,DSP模式来收;MCBSP2使用dsp模式来收发;应该怎么配置?

原来是这样的:MCBSP1配成spi来收发,MCBSP2配成DSP模式接ak5702和wm8768来收发。现在MCBSP1只需用spi来发,在MCBSP1上再接个ak5702来收。应该怎么配置?谢谢。原来代码如下:

//16bit spi设置
MCBSP_Config mcbspCfg_daControl_16 =
{
MCBSP_SPCR1_RMK(MCBSP_SPCR1_DLB_OFF,
MCBSP_SPCR1_RJUST_LZF,
MCBSP_SPCR1_CLKSTP_DELAY,
MCBSP_SPCR1_DXENA_NA,
MCBSP_SPCR1_ABIS_DISABLE,
MCBSP_SPCR1_RINTM_RRDY,
MCBSP_SPCR1_RSYNCERR_NO,
MCBSP_SPCR1_RRST_DISABLE),
MCBSP_SPCR2_RMK(MCBSP_SPCR2_FREE_NO,
MCBSP_SPCR2_SOFT_NO,
MCBSP_SPCR2_FRST_RESET,
MCBSP_SPCR2_GRST_RESET,
MCBSP_SPCR2_XINTM_XRDY,
MCBSP_SPCR2_XSYNCERR_NO,
MCBSP_SPCR2_XRST_DISABLE),
MCBSP_RCR1_RMK( MCBSP_RCR1_RFRLEN1_OF(0),
MCBSP_RCR1_RWDLEN1_16BIT),
MCBSP_RCR2_RMK( MCBSP_RCR2_RPHASE_SINGLE,
MCBSP_RCR2_RFRLEN2_OF(0),
MCBSP_RCR2_RWDLEN2_8BIT,
MCBSP_RCR2_RCOMPAND_MSB,
MCBSP_RCR2_RFIG_YES,
MCBSP_RCR2_RDATDLY_1BIT),
MCBSP_XCR1_RMK( MCBSP_XCR1_XFRLEN1_OF(0),
MCBSP_XCR1_XWDLEN1_16BIT),
MCBSP_XCR2_RMK( MCBSP_XCR2_XPHASE_SINGLE,
MCBSP_XCR2_XFRLEN2_OF(0),
MCBSP_XCR2_XWDLEN2_8BIT,
MCBSP_XCR2_XCOMPAND_MSB,
MCBSP_XCR2_XFIG_YES,
MCBSP_XCR2_XDATDLY_1BIT),
MCBSP_SRGR1_RMK(MCBSP_SRGR1_FWID_OF(1),
MCBSP_SRGR1_CLKGDV_OF(240)), MCBSP_SRGR2_RMK(MCBSP_SRGR2_GSYNC_FREE,
MCBSP_SRGR2_CLKSP_RISING,
MCBSP_SRGR2_CLKSM_INTERNAL,
MCBSP_SRGR2_FSGM_DXR2XSR,
MCBSP_SRGR2_FPER_OF(15)), MCBSP_MCR1_DEFAULT,
MCBSP_MCR2_DEFAULT,
MCBSP_PCR_RMK( MCBSP_PCR_IDLEEN_RESET,
MCBSP_PCR_XIOEN_SP,
MCBSP_PCR_RIOEN_SP,
MCBSP_PCR_FSXM_INTERNAL,
MCBSP_PCR_FSRM_EXTERNAL,
MCBSP_PCR_CLKXM_OUTPUT,
MCBSP_PCR_CLKRM_INPUT,
MCBSP_PCR_SCLKME_NO,
MCBSP_PCR_DXSTAT_0,
MCBSP_PCR_FSXP_ACTIVELOW,
MCBSP_PCR_FSRP_ACTIVEHIGH,
MCBSP_PCR_CLKXP_RISING,
MCBSP_PCR_CLKRP_FALLING),
MCBSP_RCERA_DEFAULT,
MCBSP_RCERB_DEFAULT,
MCBSP_RCERC_DEFAULT,
MCBSP_RCERD_DEFAULT,
MCBSP_RCERE_DEFAULT,
MCBSP_RCERF_DEFAULT,
MCBSP_RCERG_DEFAULT,
MCBSP_RCERH_DEFAULT,
MCBSP_XCERA_DEFAULT,
MCBSP_XCERB_DEFAULT,
MCBSP_XCERC_DEFAULT,
MCBSP_XCERD_DEFAULT,
MCBSP_XCERE_DEFAULT,
MCBSP_XCERF_DEFAULT,
MCBSP_XCERG_DEFAULT,
MCBSP_XCERH_DEFAULT
};

//audio接口配置
MCBSP_Config mcbspCfg_audioData =
{
MCBSP_SPCR1_RMK(MCBSP_SPCR1_DLB_OFF, //DLB = 0,禁止自闭环方式
MCBSP_SPCR1_RJUST_LZF, //RJUST = 2左对齐低位补0
MCBSP_SPCR1_CLKSTP_DISABLE, //CLKSTP = 0 ,禁止clock stop模式
MCBSP_SPCR1_DXENA_NA,
MCBSP_SPCR1_ABIS_DISABLE,
MCBSP_SPCR1_RINTM_FRM,
MCBSP_SPCR1_RSYNCERR_NO,
MCBSP_SPCR1_RRST_DISABLE),
MCBSP_SPCR2_RMK(MCBSP_SPCR2_FREE_NO,
MCBSP_SPCR2_SOFT_NO,
MCBSP_SPCR2_FRST_RESET,
MCBSP_SPCR2_GRST_RESET,
MCBSP_SPCR2_XINTM_XRDY,
MCBSP_SPCR2_XSYNCERR_NO,
MCBSP_SPCR2_XRST_DISABLE),
MCBSP_RCR1_RMK( MCBSP_RCR1_RFRLEN1_OF(7), //RFRLEN1 = 7 ,接收帧长8个字节
MCBSP_RCR1_RWDLEN1_16BIT), //RWDLEN1 = 2 ,一个字节16bit
MCBSP_RCR2_RMK( MCBSP_RCR2_RPHASE_SINGLE, //RPHASE = 0 ,单相
MCBSP_RCR2_RFRLEN2_OF(0),
MCBSP_RCR2_RWDLEN2_8BIT,
MCBSP_RCR2_RCOMPAND_MSB,
MCBSP_RCR2_RFIG_YES,
MCBSP_RCR2_RDATDLY_0BIT), //RDATDLY = 0,接收帧0bit数据延迟
MCBSP_XCR1_RMK( MCBSP_XCR1_XFRLEN1_OF(7), //XFRLEN1 = 7,发送帧长8个字节
MCBSP_XCR1_XWDLEN1_16BIT), // XWDLEN1 = 2 ,一个字节16bit
MCBSP_XCR2_RMK( MCBSP_XCR2_XPHASE_SINGLE,
MCBSP_XCR2_XFRLEN2_OF(0),
MCBSP_XCR2_XWDLEN2_8BIT,
MCBSP_XCR2_XCOMPAND_MSB,
MCBSP_XCR2_XFIG_YES,
MCBSP_XCR2_XDATDLY_1BIT), //XDATDLY = 1 ,发送帧1bit延迟
MCBSP_SRGR1_RMK(MCBSP_SRGR1_FWID_OF(1),
MCBSP_SRGR1_CLKGDV_OF(1)), MCBSP_SRGR2_RMK(MCBSP_SRGR2_GSYNC_FREE,
MCBSP_SRGR2_CLKSP_RISING,
MCBSP_SRGR2_CLKSM_CLKS,
MCBSP_SRGR2_FSGM_DXR2XSR,
MCBSP_SRGR2_FPER_OF(15)), //MCBSP_MCR1_DEFAULT,
MCBSP_MCR1_RMK(0,0,0,0,1), //rmcm:receiver multiple channel mode
MCBSP_MCR2_DEFAULT,
MCBSP_PCR_RMK( MCBSP_PCR_IDLEEN_RESET, //IDLEEN = 0 , 当PERIPH域空闲时,MCBSP保持使能
MCBSP_PCR_XIOEN_SP, //XIOEN = 0 , CLKX,FSX,DX,CLKS脚是串口脚
MCBSP_PCR_RIOEN_SP, //RIOEN = 0 , CLKR,FSR,DR,CLKS脚是串口脚
MCBSP_PCR_FSXM_EXTERNAL, // FSXM = 0 , 发送帧同步脉冲由外部FSR脚提供
MCBSP_PCR_FSRM_EXTERNAL, // FSRM = 0 , 接收帧同步脉冲由外部FSR脚提供
MCBSP_PCR_CLKXM_INPUT,
MCBSP_PCR_CLKRM_INPUT, //CLKRM = 0 , 接收器时钟由CLKR引脚获得
MCBSP_PCR_SCLKME_NO,
MCBSP_PCR_DXSTAT_0,
MCBSP_PCR_FSXP_ACTIVEHIGH, //FSXP = 0 , 发送帧脉冲高电平使能
MCBSP_PCR_FSRP_ACTIVEHIGH, //FSRP = 0 ,接收帧脉冲高电平使能
MCBSP_PCR_CLKXP_FALLING, //发送数据被驱动在CLKX的下降沿
//MCBSP_PCR_CLKRP_FALLING),
MCBSP_PCR_CLKRP_RISING), //MCBSP rising edge matched for AD
// MCBSP_RCERA_DEFAULT,
MCBSP_RCERA_RMK(0x00ff), //receiver TDM enable total 8 channels
MCBSP_RCERB_DEFAULT,
MCBSP_RCERC_DEFAULT,
MCBSP_RCERD_DEFAULT,
MCBSP_RCERE_DEFAULT,
MCBSP_RCERF_DEFAULT,
MCBSP_RCERG_DEFAULT,
MCBSP_RCERH_DEFAULT,
MCBSP_XCERA_DEFAULT,
MCBSP_XCERB_DEFAULT,
MCBSP_XCERC_DEFAULT,
MCBSP_XCERD_DEFAULT,
MCBSP_XCERE_DEFAULT,
MCBSP_XCERF_DEFAULT,
MCBSP_XCERG_DEFAULT,
MCBSP_XCERH_DEFAULT
};

Shine:

如果你这个两个设备要同时工作的话,是不支持的,同一时间CLKSTOP要么是SPI模式,要么是DSP Mode。

如果不是同时工作的话,在使用前,对McBSP寄存器重新初始化。

chunying wu:

回复 Shine:

不是同时工作。使用spi时初始化spi,使用mcbsp1时初始化mcbsp1。是这样吗?那么初始化mcbsp1要怎么改

Shine:

回复 chunying wu:

McBSP1口的配置跟你之前用McBSP2时的配置一样,只是EBSR.Serial Port1 Mode位需要配成00。

chunying wu:

回复 Shine:

谢谢。EBSR.Serial Port1 Mode位需要配成00是指哪里,我找不到。是不是指打开函数MCBSP_open(MCBSP_PORT2, MCBSP_OPEN_RESET);

chunying wu:

回复 chunying wu:

CHIP_RSET( XBSR, CHIP_XBSR_RMK( CHIP_XBSR_CLKOUT_ENABLE, CHIP_XBSR_OSCDIS_ENABLE, CHIP_XBSR_HIDL_ENABLE, CHIP_XBSR_BKE_ENABLE, CHIP_XBSR_SRSTAT_ENABLE, CHIP_XBSR_HLD_RELEASE, CHIP_XBSR_HLDA_NO, CHIP_XBSR_CKE_XF, CHIP_XBSR_CKEEN_NORMAL, CHIP_XBSR_SRCOM_DISABLE, CHIP_XBSR_SP2_MCBSP, CHIP_XBSR_SP1_MCBSP, CHIP_XBSR_PP_EMIF) );

是不是这里,要改成怎么样

chunying wu:

回复 Shine:

我们原来项目是2个ak5702极联在一起(各4个通道总共8通道),一个ak5702接到mcbsp2,一个wm8768接到mcbsp2。这个收发都是8通,数据采样率8k的时候没有问题,采样率改成48k的话就经常出来5509A收数据有问题,ak5702给5509A的数据没有问题,是5509A处理数据有问题。用2个dma中断来收发。dma采用ping-pong方式处理。但不知道问题出现在哪里。同步信号一旦出错,就不会纠正回来。所以现在想把2个ak5702分别接到mcbsp1和mcbsp2

Shine:

回复 chunying wu:

“数据有问题”是指来不及收数据?

chunying wu:

回复 Shine:

不清楚。收到的数据是乱的。有什么办法吗

chunying wu:

回复 Shine:

不清楚。收到的数据是乱的。有什么办法吗?

赞(0)
未经允许不得转载:TI中文支持网 » 5509A的MCBSP1使用SPI来发,DSP模式来收;MCBSP2使用dsp模式来收发;应该怎么配置?
分享到: 更多 (0)