搜索
bottom↓
回复: 19

L3G4200D采不出来数据,痛苦中,求帮助

[复制链接]

出0入0汤圆

发表于 2011-11-25 17:34:05 | 显示全部楼层 |阅读模式
L3G4200D按照数据手册上的硬件连接,采用SPI通讯接口

(原文件名:l3g4200d.jpg)

使用STM32F103控制,SPI时钟9M,大端模式发送地址和数据。示波器检测到时钟和数据发送信号。
      
程序控制如下:
  GPIOA->ODR = ~CS;//
  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
  SPI_I2S_SendData(SPI1,0x20);
  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
  SPI_I2S_ReceiveData(SPI1);
  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
  SPI_I2S_SendData(SPI1,0x0F);
  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
  SPI_I2S_ReceiveData(SPI1);
  while (1)
  {
    while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
    SPI_I2S_SendData(SPI1,0xA8);
    while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
    SPI1_RecData[0] = SPI_I2S_ReceiveData(SPI1);
    while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
    SPI_I2S_SendData(SPI1,0xA9);
    while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
    SPI1_RecData[1] = SPI_I2S_ReceiveData(SPI1);
  }
就是没有返回值,4脚一直没反应,全速运行得到的值都是0,断点仿真倒是收到数了,SPI_DR全是0xFF
检查了电路,对比了时序。现在是不知道是电路设计问题,芯片没工作。还是程序时序不对导致的芯片不启动。
用过的指点一下,谢谢大家了!

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2011-11-25 20:49:03 | 显示全部楼层
不懂帮顶!坐等高手解答!

出0入0汤圆

 楼主| 发表于 2011-11-27 23:15:41 | 显示全部楼层
回复【1楼】XYM741
-----------------------------------------------------------------------

谢谢了,还是没有人帮忙

出0入0汤圆

发表于 2011-12-1 14:58:17 | 显示全部楼层
程序不完整,怎么帮助?首先判断硬件焊接是否OK!

出0入0汤圆

发表于 2011-12-2 13:58:05 | 显示全部楼层
回复【楼主位】zzx499
-----------------------------------------------------------------------

我也是刚刚接触这个芯片。对比你的电路,看了下手册,貌似你电路这样的设计是针对IIC通信的电路,你可以再仔细阅读下手册,看一下是不是这里出错了。

出0入0汤圆

发表于 2011-12-22 15:33:41 | 显示全部楼层
回复【楼主位】zzx499  
-----------------------------------------------------------------------
可能是你的时序有问题,我前几天也是,输出都是FF,后来改了时序,不过新问题也出来了,数据输出可能不是正确的值,我用IO模拟的SPI ,读出来的status_reg的值是0xFE。

出0入0汤圆

发表于 2012-1-10 13:44:08 | 显示全部楼层
回复【5楼】young-ive
-----------------------------------------------------------------------

期待高手解答!

出0入0汤圆

发表于 2012-1-16 23:24:12 | 显示全部楼层
回复【5楼】young-ive
-----------------------------------------------------------------------

试试用int型的。

出0入0汤圆

发表于 2012-2-5 09:49:24 | 显示全部楼层
回复【楼主位】zzx499
-----------------------------------------------------------------------

现在硬件的ID能读出来不

出0入0汤圆

发表于 2012-2-6 14:33:24 | 显示全部楼层
电路有问题。
用SPI读数据的时候,有关引脚不能上拉电阻。
详细参看datasheet

出0入0汤圆

发表于 2012-2-6 22:02:15 | 显示全部楼层
回复【9楼】chenhuizai210
-----------------------------------------------------------------------

根据我多次的实验,上拉电阻不会对数字信号照成影响,无非就是芯片内mos的导通和截止。他的问题在于第4脚接的上拉电阻接到了GND。而且还用spi

出0入0汤圆

发表于 2012-2-6 23:37:30 | 显示全部楼层
这个接法看起来是I2C的接法。还是建议四线接法接SPI。

出0入0汤圆

发表于 2012-2-12 23:24:41 | 显示全部楼层
我帖子里有  IIC的程序 有需要可以参考下

出0入0汤圆

发表于 2012-2-14 13:22:00 | 显示全部楼层
回复【10楼】MrLCL  
-----------------------------------------------------------------------

恩,对。我指的就是那个下拉电阻。呵呵

出0入0汤圆

发表于 2012-2-14 22:52:06 | 显示全部楼层
回复【13楼】chenhuizai210
-----------------------------------------------------------------------

出0入0汤圆

发表于 2012-2-16 23:42:49 | 显示全部楼层
SPI读数,相应接口不需要上拉

出0入0汤圆

发表于 2012-7-28 17:22:51 | 显示全部楼层
请问下SPI 模式下L3G4200D 的DRDY 和INT脚接哪呢?

出0入0汤圆

发表于 2013-3-8 19:19:32 | 显示全部楼层
mark,要用示波器看看CS、CLK、MO是不是正常

出0入0汤圆

发表于 2013-5-21 10:22:35 | 显示全部楼层
网上都是IIC的程序,怎么没多少人用SPI的呢?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 23:32

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表