从模式没法主动发数据,只有能过中断请求来主动发数据
我是在中断的时候给AD73360发送数据的。你看我的代码。
void EXTI0_IRQHandler(void)
{
if(RESET != EXTI_GetFlagStatus(EXTI_Line0))
{
if(exti0_cnt == 0)
{SPI_SendData( 0x8000 );}//CRA,Program Mode
else if(exti0_cnt == 1)
{SPI_SendData( 0x8104 );}//CRB,Decimation Rate£¬8KHz
else if(exti0_cnt == 2)
{SPI_SendData( 0x8261 );}//CRC
else if(exti0_cnt == 3)
{SPI_SendData( 0x8388 );}//CRD,open ADC1,ADC2
else if(exti0_cnt == 4)
{SPI_SendData( 0x8408 );}//CRE,open ADC3,close ADC4
else if(exti0_cnt == 5)
{SPI_SendData( 0x8500 );}//CRF,close ADC5,ADC6
else if(exti0_cnt == 6)
{SPI_SendData( 0x8600 );}//CRG
else if(exti0_cnt == 7)
{SPI_SendData( 0x8700 );}//CRH
else if(exti0_cnt == 8)
{SPI_SendData( 0x8001 );}//CRA,Data Mode
else if(exti0_cnt == 9)
{SPI_SendData( 0x7fff);} /*¹Ø±Õ¿ØÖÆ×Ö·¢ËÍ*/
else if(exti0_cnt >= 10)
{
while(SPI_ReceptionFIFOStatus_Empty != SPI_GetReceptionFIFOStatus(SPI3))
{
ADDataBuffer = SPI_I2S_ReceiveData16(SPI3);//½ÓÊÕÊý¾Ý
SampleNum++;
}
}
if(SampleNum >= 320)
{
SampleNum = 0;
}
if(exti0_cnt > 250)
{
exti0_cnt = 10;
}
exti0_cnt++;
}
} chunchun 发表于 2015-1-28 09:17
从模式可以主动发送数据吧。
SPI从机是不能主动发数据的 ,因为时钟是主机提供的。而你说AD73360持续在提供时钟,这个时候你的SPI从机是可以发数据的 飞翔的起点 发表于 2015-1-28 09:40
SPI从机是不能主动发数据的 ,因为时钟是主机提供的。而你说AD73360持续在提供时钟,这个时候你的SPI从机 ...
恩。是的。但是我发送的数据却不是一次性的那种。在我发第一个控制字时还正常,发第二个时,数据在MISO上周期性连续。第三个叠加在第二个上,依次类推。但是发送完最后一个后,MISO线上就固定为一个周期性方波了。 好奇怪啊 chunchun 发表于 2015-1-28 09:17
从模式可以主动发送数据吧。
不可以。。。 cxtarm 发表于 2015-1-28 12:54
不可以。。。
AD73360持续在提供时钟,这个时候SPI从机是可以发数据的 chunchun 发表于 2015-1-28 13:22
AD73360持续在提供时钟,这个时候SPI从机是可以发数据的
那不叫发数据,只是从机将数据放在发送寄存器里面,等待时钟过来后主机读取。 cxtarm 发表于 2015-1-28 18:12
那不叫发数据,只是从机将数据放在发送寄存器里面,等待时钟过来后主机读取。 ...
楼主说的MISO上有叠加信号又是什么意思呢?
是杂波吗?还是楼主没有完全描述完问题现象??
楼主你有些乱了,你测试过不用外部AD73360提供时钟吗?用STM32自己的时钟,然后看下波形,然后确定问题所在 我最近也遇到了这个问题,有什么解决方案吗
页:
1
[2]