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

C64X 配成一个SPI1主机,一个从机SP0,自发自收。

BCBSP1配置成SP1主机;

MCBSP0配置成SP0从机; 

           CLKX1—CLKX0

          FSX1—FSX0

          DX1—DR0

         DR1—DX0 

           SP1的接收口DR1连接示波器测试输入数据,  发现DSP首次复位运行,SP0输出数据正确。但之后SP0发送数据不正确(仍然发送上次调试数据),第二发送数据才是正确(发送本次调试的数据)? SP1之后也会发生RFULL错误!?

            [  备注:SP0的接收口DX1连接示波器测试输入数据, 调试都是正确的  ]

while(1)
{
     //SPI0从机发程序准备
     if( ( MCBSP0_SPCR & MCBSP_SPCR_XRDY ) != 0)
    {        MCBSP0_DXR_8BIT = B0txBEYT;    }
    //SPI1主机发程序
    if( ( MCBSP1_SPCR & MCBSP_SPCR_XRDY ) != 0)
    {       MCBSP1_DXR_8BIT = B1txBEYT;    } _waitusec( 20000 ); //等待发送数据

   //SPI0从机收程序收
   if( ( MCBSP0_SPCR & MCBSP_SPCR_RRDY ) != 0)
   {       B0rxBEYT = MCBSP0_DRR_8BIT;   }   //SPI1主机收程序收
   if( ( MCBSP1_SPCR & MCBSP_SPCR_RRDY ) != 0)//读后该地址自动清除RRDY
   {      B1rxBEYT = MCBSP1_DRR_8BIT;  }    

     _waitusec( 20 ); 

}

============================================

今天早上有测试一遍:结果是:

         第一次调试:首次复位工作,第一次彼此收发数据正确;

        第二次调试:第二次收发数据,从机SP0执行MCBSP0_DXR_8BIT = B0txBEYT; 后,并没有将DXR中的数据拷贝到XSR中,因为XEMPTY一直为0;直到主机SP1产生时钟发送完数据后从机SP0才执行DXR中的数据拷贝到XSR中;所以就出错了,第二调试后都不能将数据发送出来??

       

Shine:

请问用的是哪款DSP器件?是两块DSP之间的mcbsp0和mcbsp1通信吗?

dong wei1:

回复 Shine:

C6424,是的。

      我是把mcbsp0配置成SPI0从机,  mcbsp1配置成SPI1主机;mcbsp0和mcbsp1都是一个DSP上的资源。

dong wei1:

回复 dong wei1:

问题已经解决,延迟时间,或判断标志等待。

赞(0)
未经允许不得转载:TI中文支持网 » C64X 配成一个SPI1主机,一个从机SP0,自发自收。
分享到: 更多 (0)