党国特派员 发表于 2015-1-28 09:30:00

从模式没法主动发数据,只有能过中断请求来主动发数据

chunchun 发表于 2015-1-28 09:32:16

党国特派员 发表于 2015-1-28 09:30
从模式没法主动发数据,只有能过中断请求来主动发数据

我是在中断的时候给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++;
                }
}

飞翔的起点 发表于 2015-1-28 09:40:10

chunchun 发表于 2015-1-28 09:17
从模式可以主动发送数据吧。

SPI从机是不能主动发数据的 ,因为时钟是主机提供的。而你说AD73360持续在提供时钟,这个时候你的SPI从机是可以发数据的

chunchun 发表于 2015-1-28 09:57:28

飞翔的起点 发表于 2015-1-28 09:40
SPI从机是不能主动发数据的 ,因为时钟是主机提供的。而你说AD73360持续在提供时钟,这个时候你的SPI从机 ...

恩。是的。但是我发送的数据却不是一次性的那种。在我发第一个控制字时还正常,发第二个时,数据在MISO上周期性连续。第三个叠加在第二个上,依次类推。但是发送完最后一个后,MISO线上就固定为一个周期性方波了。 好奇怪啊

cxtarm 发表于 2015-1-28 12:54:49

chunchun 发表于 2015-1-28 09:17
从模式可以主动发送数据吧。

不可以。。。

chunchun 发表于 2015-1-28 13:22:55

cxtarm 发表于 2015-1-28 12:54
不可以。。。

AD73360持续在提供时钟,这个时候SPI从机是可以发数据的

cxtarm 发表于 2015-1-28 18:12:19

chunchun 发表于 2015-1-28 13:22
AD73360持续在提供时钟,这个时候SPI从机是可以发数据的

那不叫发数据,只是从机将数据放在发送寄存器里面,等待时钟过来后主机读取。

ataudio 发表于 2015-1-29 10:20:36

cxtarm 发表于 2015-1-28 18:12
那不叫发数据,只是从机将数据放在发送寄存器里面,等待时钟过来后主机读取。 ...

楼主说的MISO上有叠加信号又是什么意思呢?

是杂波吗?还是楼主没有完全描述完问题现象??


五哥1 发表于 2018-5-25 00:20:43

楼主你有些乱了,你测试过不用外部AD73360提供时钟吗?用STM32自己的时钟,然后看下波形,然后确定问题所在

morrisl 发表于 2019-7-26 11:10:57

我最近也遇到了这个问题,有什么解决方案吗
页: 1 [2]
查看完整版本: 急!!!STM32与AD73360通讯问题