TI论坛
直播中

张桂英

7年用户 1542经验值
私信 关注
[问答]

aic23与c5509传输数据时,从ddr1中读出的数据太大了是怎么回事?


  • 我是用的aic23与c5509传输数据,aic23使用线路输入,线路输入电压在1V左右(貌似这个电压一直在下降,从1.4V降到0.7V),配置成16位,44.1kHz,McBSP配置如下
    MCBSP_Config Mcbsp1Config = {
    MCBSP_SPCR1_RMK(
    MCBSP_SPCR1_DLB_OFF, /* DLB = 0,禁止自闭环方式 */
    MCBSP_SPCR1_RJUST_LZF, /* RJUST = 2 */
    MCBSP_SPCR1_CLKSTP_DISABLE, /* CLKSTP = 0 */
    MCBSP_SPCR1_DXENA_ON, /* DXENA = 1 */
    0, /* ABIS = 0 */
    MCBSP_SPCR1_RINTM_RRDY, /* RINTM = 0 */
    0, /* RSYNCER = 0 */
    MCBSP_SPCR1_RRST_DISABLE /* RRST = 0 */
    ),
    MCBSP_SPCR2_RMK(
    MCBSP_SPCR2_FREE_NO, /* FREE = 0 */
    MCBSP_SPCR2_SOFT_NO, /* SOFT = 0 */
    MCBSP_SPCR2_FRST_FSG, /* FRST = 0 */
    MCBSP_SPCR2_GRST_CLKG, /* GRST = 0 */
    MCBSP_SPCR2_XINTM_XRDY, /* XINTM = 0 */
    0, /* XSYNCER = N/A */
    MCBSP_SPCR2_XRST_DISABLE /* XRST = 0 */
    ),
    /*单数据相,接受数据长度为16位,每相2个数据*/
    MCBSP_RCR1_RMK(
    MCBSP_RCR1_RFRLEN1_OF(1), /* RFRLEN1 = 1 */
    MCBSP_RCR1_RWDLEN1_16BIT /* RWDLEN1 = 2 */
    ),
    MCBSP_RCR2_RMK(
    MCBSP_RCR2_RPHASE_SINGLE, /* RPHASE = 0 */
    MCBSP_RCR2_RFRLEN2_OF(0), /* RFRLEN2 = 0 */
    MCBSP_RCR2_RWDLEN2_8BIT, /* RWDLEN2 = 0 */
    MCBSP_RCR2_RCOMPAND_MSB, /* RCOMPAND = 0 */
    MCBSP_RCR2_RFIG_YES, /* RFIG = 0 */
    MCBSP_RCR2_RDATDLY_1BIT /* RDATDLY = 1 */
    ),
    MCBSP_XCR1_RMK(
    MCBSP_XCR1_XFRLEN1_OF(1), /* XFRLEN1 = 1 */
    MCBSP_XCR1_XWDLEN1_16BIT /* XWDLEN1 = 2 */

    ),
    MCBSP_XCR2_RMK(
    MCBSP_XCR2_XPHASE_SINGLE, /* XPHASE = 0 */
    MCBSP_XCR2_XFRLEN2_OF(0), /* XFRLEN2 = 0 */
    MCBSP_XCR2_XWDLEN2_8BIT, /* XWDLEN2 = 0 */
    MCBSP_XCR2_XCOMPAND_MSB, /* XCOMPAND = 0 */
    MCBSP_XCR2_XFIG_YES, /* XFIG = 0 */
    MCBSP_XCR2_XDATDLY_1BIT /* XDATDLY = 1 */
    ),
    MCBSP_SRGR1_DEFAULT,
    MCBSP_SRGR2_DEFAULT,
    MCBSP_MCR1_DEFAULT,
    MCBSP_MCR2_DEFAULT,
    MCBSP_PCR_RMK(
    MCBSP_PCR_IDLEEN_RESET, /* IDLEEN = 0 */
    MCBSP_PCR_XIOEN_SP, /* XIOEN = 0 */
    MCBSP_PCR_RIOEN_SP, /* RIOEN = 0 */
    MCBSP_PCR_FSXM_EXTERNAL, /* FSXM = 0 */
    MCBSP_PCR_FSRM_EXTERNAL, /* FSRM = 0 */
    0, /* DXSTAT = N/A */
    MCBSP_PCR_CLKXM_INPUT, /* CLKXM = 0 */
    MCBSP_PCR_CLKRM_INPUT, /* CLKRM = 0 */
    MCBSP_PCR_SCLKME_NO, /* SCLKME = 0 */
    MCBSP_PCR_FSXP_ACtiVEHIGH, /* FSXP = 0 */
    MCBSP_PCR_FSRP_ACTIVEHIGH, /* FSRP = 1 */
    MCBSP_PCR_CLKXP_FALLING, /* CLKXP = 1 */
    MCBSP_PCR_CLKRP_RISING /* CLKRP = 1 */
    ),
    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
    };
    声音输入输出都没有问题,只是在下面的代码这儿观察aic23data时发现aic23data虽然在变化,但是值一直是接近0xFFFF,比如64789
    while(!MCBSP_rrdy(hMcbsp)){};
    aic23data = MCBSP_read16(hMcbsp);
    MCBSP_write16(hMcbsp,aic23data);  
    可不可以因为aic23data值不正常,就认为McBSP根本就没有读进正确的数据,而声音有输出只是aic23在工作,还是说读进来的数据需要转换一下才是原始的声音数据

回帖(2)

冯琳

2024-10-21 16:58:02
 接近0xFFFF, 但不是, 这说明有数据的传输, 工作情况也可以用示波器看到.
接下来要看的是设置, 滤波器, 信号源是否有偏置的问题, (貌似这个电压一直在下降,从1.4V降到0.7V),从这点看你的信号源应该有直流偏置了
举报

周棠亨

2024-10-22 09:21:58
从您提供的信息来看,您在使用AIC23与C5509进行数据传输时遇到了一些问题。以下是一些建议和可能的原因:

1. 线路输入电压下降:您提到线路输入电压从1.4V降到0.7V。这可能是由于信号衰减或电源不稳定导致的。请检查您的电源和信号线路,确保它们正常工作。

2. 数据太大:这可能是因为您的数据格式设置不正确。您提到配置为16位,44.1kHz。请确保您的数据格式与AIC23和C5509的配置相匹配。例如,如果您的数据格式是16位,那么您需要确保McBSP配置中的位宽设置为16位。

3. McBSP配置:您提供的McBSP配置代码片段不完整,无法判断是否存在问题。请确保您的McBSP配置正确,包括采样率、位宽、帧同步等参数。您可以参考C5509的数据手册和AIC23的参考手册,了解如何正确配置McBSP。

4. 检查AIC23和C5509的时钟设置:确保AIC23和C5509的时钟设置正确,以确保数据传输的同步性。您可以参考AIC23和C5509的数据手册,了解如何设置时钟。

5. 检查数据传输过程中的错误:在数据传输过程中,可能会发生错误。您可以使用调试工具(如逻辑分析仪)来检查数据传输过程中是否存在错误。如果发现错误,请根据错误类型进行相应的调整。

6. 软件和固件:请确保您的软件和固件正确配置,以支持AIC23和C5509之间的数据传输。您可以参考AIC23和C5509的参考手册,了解如何编写软件和固件。

总之,要解决这个问题,您需要检查硬件连接、配置和软件设置。请确保所有设置都正确,以确保数据传输的稳定性和准确性。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分