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:
问题已经解决,延迟时间,或判断标志等待。