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

急!!!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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版