OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 14103|回复: 10

一个关于I2C电路布线问题(MPU6050)

[复制链接]

2

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2013-5-21
在线时间
0 小时
发表于 2013-6-9 16:06:33 | 显示全部楼层 |阅读模式


用这个布线去,芯片是MPU6050三轴陀螺仪加速度计,很奇怪!
#define delays delay_ms(2)     //delays;
//初始化IIC
void IIC_Init(void)
{         
  RCC->APB2ENR|=1<<3;//先使能外设IO PORTB时钟        
 GPIOB->CRL&=0X00FFFFFF;//PB6,PB7
 GPIOB->CRL|=0X33000000;   
}
//产生IIC起始信号
void IIC_Start(void)
{
 SDA_OUT();     //sda线输出
      
 IIC_SCL=1;
 delays;
 IIC_SDA=1;
 delays;
  IIC_SDA=0;
 delays;
}

就是设置那个delay的延时来控制I2C的读取速度,好奇怪的是,在读芯片存放地址的寄存器: WHO_AM_I的时候,DELAY可以取到2US没问题但是读到数据寄存器时,这次
测的是X轴加速度,竟然 DELAY要弄到2MS才能读出数据
,感觉很悲剧,结果试验了一下,一秒钟才出了5个数据左右(用串口打到PC机上扣去串口通讯目测的)。这个小板子是
玩四轴的,感觉有点小郁闷,不知1S打那么点数据够用不,所以在这里请教一下PCB的布线如上图,有什么需要注意的地方。 
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2013-6-9 17:04:53 | 显示全部楼层
1 线长很短,周围又没其他干扰源
2 你的Bottom层应该是铺地了吧 .

通常 stm32这个速度,不需要加延时肯定也没什么问题, 你可以找找其他原因吧 。
回复 支持 反对

使用道具 举报

2

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2013-5-21
在线时间
0 小时
 楼主| 发表于 2013-6-9 18:42:45 | 显示全部楼层
回复【2楼】aleda303:
---------------------------------
我用原子哥的板子和自己的板子程序一样。。。。结果还是原子哥的板子跑的频率快,原子哥的板子线长比我长好多,线间距也差不多,但是唯一的区别是原子哥的板子出门都是直线,会不会是我出门的拐弯给弄了.... 都铺地了。。。感觉现在还勉强凑合。。刚才试试了电机开的情况下数据的抖动情况,感觉抖动不是很厉害。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2013-6-9 18:50:22 | 显示全部楼层
是不是这个模块的输出速度问题?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2013-5-21
在线时间
0 小时
 楼主| 发表于 2013-6-9 20:16:12 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
三轴MPU6050模块都是用一个模块,拆过来拆过去。。。MPU6050里面说支持达到400KHZ的。估计是我的布线不太行,下次把两个引脚不弄相邻再试试



模块是用排插,然后芯片一往上插这样来做的,因为考虑到用你的板子是用杜邦线接的所以我后来又改用了杜邦线的接法,速度一样提不上去,感觉估计就是板子的问题
所以只能下次注意一点了。
回复 支持 反对

使用道具 举报

2

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2013-5-21
在线时间
0 小时
 楼主| 发表于 2013-6-9 22:19:19 | 显示全部楼层
回复【4楼】正点原子:
回复【3楼】aleda303:

---------------------------------
I2C读取那个芯片的时候我读WHO_AM_I寄存器,DELAY可以到2us而读数据寄存器就不行了,我从刚才想到这里越想越不明白啊。。求解- -
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2013-6-10 00:48:57 | 显示全部楼层
回复【6楼】小枫:
---------------------------------
是不是和你的代码有关系了,呵呵.MPU6050论坛有人发过代码,你参考下试试.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2013-5-21
在线时间
0 小时
 楼主| 发表于 2013-6-10 08:03:51 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
恩恩我再调调。
回复 支持 反对

使用道具 举报

2

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2013-5-21
在线时间
0 小时
 楼主| 发表于 2013-6-10 08:22:42 | 显示全部楼层
终于解决了,是速度太快初始化没完成,所以读不出数据。把初始化调慢一点或者中间弄点间隔就OK了谢谢原子哥啊,看你的回复突然来灵感的说。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2013-6-10 11:10:59 | 显示全部楼层
回复【9楼】小枫:
---------------------------------
恭喜
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

50

主题

270

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
492
金钱
492
注册时间
2013-2-2
在线时间
0 小时
发表于 2013-8-31 12:59:41 | 显示全部楼层
回复【9楼】小枫:
---------------------------------楼主,你的MPU6050读取的数据准确吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-23 04:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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