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中;所以就出错了,第二调试后都不能将数据发送出来??