你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

急!!!STM32与AD73360通讯问题

[复制链接]
chunchun 提问时间:2015-1-27 16:35 /
阅读主题, 点击返回1楼
收藏 评论19 发布时间:2015-1-27 16:35
19个回答
党国特派员 回答时间: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[SampleNum] = 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

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
我最近也遇到了这个问题,有什么解决方案吗
12
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版