STM32与AD73360通讯数据都叠加在MISO线上

2019-07-18 17:27发布

STM32工作在从模式,时钟由AD73360提供,只要使能AD73360,便能提供一个不间断的时钟给STM32。STM32在给AD73360发送控制字时,数据都叠加在MISO线上,且周期性持续。目前无法设置。我用的是STM32F303VC。求大神指导。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
就好国dd
1楼-- · 2019-07-19 09:15
 精彩回答 2  元偷偷看……
就好国dd
2楼-- · 2019-07-19 10:42
Shype 发表于 2019-5-27 15:28
这个AD多少M的频率?

16.384M,输出的时钟SCK是2.048M
就好国dd
3楼-- · 2019-07-19 15:19
jasonzhang_001 发表于 2019-5-27 15:20
另外你也没提出问题嘛

我的意思是,数据发送不是应该一次性的吗,发送完了后MISO上就不应该有波形啊,怎么会出现周期性的方波呢,然后后面还跟前面的叠加起来了。由于数据的叠加,让我无法确定我发送的数据是否正确,只能通过AD73360的表现来判断。目前判断结果就是,AD73360没有被正确设置。
你我然后
4楼-- · 2019-07-19 18:10
从模式没法主动发数据,只有能过中断请求来主动发数据
就好国dd
5楼-- · 2019-07-19 20:51
我是在中断的时候给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[SampleNum] = SPI_I2S_ReceiveData16(SPI3);  //½ÓÊÕÊý¾Ý
                                                                SampleNum++;
                                                }
                                }
                               
                                if(SampleNum >= 320)
                                {
                                                SampleNum = 0;
                                }
                               
                                if(exti0_cnt > 250)
                                {
                                        exti0_cnt = 10;
                                }
                                exti0_cnt++;
                }
}
zerocq
6楼-- · 2019-07-19 23:25
 精彩回答 2  元偷偷看……

一周热门 更多>