OpenEdv-开源电子网

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

寄存器操作模拟I2C时而可以,等会就不行了。只能1.先烧写库函数程序2.再重新烧写寄存器程序,I2C才能正常工作。为什么???

[复制链接]

1

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2011-12-14
在线时间
0 小时
发表于 2012-7-17 17:09:29 | 显示全部楼层 |阅读模式
库函数操作STM32模拟的I2C完全没问题,但是用寄存器版本的来操作,刚开始还可以,过一会重新上电就不行了。
但是,如果再次烧写一遍库函数版本的程序,接着烧写寄存器的程序就可以。过一会寄存器版本程序又不能工作。
寄存器程序基于开发板自带的I2C程序修改。
 这是什么原因?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2012-7-17 17:37:38 | 显示全部楼层
回复【楼主位】lxl_lw:
---------------------------------
会不会是库函数程序里面有什么设置,而寄存器程序没有。烧写寄存器程序后,之前的库函数设置“残留”下来,断电了就消失了那个设置?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-7-17 20:14:00 | 显示全部楼层
回复【2楼】lxl_lw:
---------------------------------
不会的.
你这种情况,考虑是不是你delay函数有问题.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2012-7-18 19:07:35 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
我看了一下,发现时钟信号高低电平持续时间不是1:1的,不知道是不是这个问题?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-7-18 19:09:15 | 显示全部楼层
不是1:1关系不大.
关键是频率不能太高. 
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2012-7-18 20:59:08 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
补充:陀螺仪和加速计使用同一个I2C,但是加速计始终没问题,只有L3G4200D这个陀螺仪数据异常,数据倒是有,但是不会变化。
就是下面的样子...
 61950     2895     60960
 61950     2895     60960
 61950     2895     60960
 61950     2895     60960
 61950     2895     60960
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-7-18 23:12:01 | 显示全部楼层
单独焊接一个器件试试.
去掉你的加速度计.测试陀螺仪.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2012-7-26 16:41:38 | 显示全部楼层
问题解决了,原来是在main函数里面有I2C、陀螺仪、加速计三个初始化函数,但是陀螺仪和加速计的初始化函数中会使用到I2C,所以应该在它俩之前就初始化I2C。我之前的问题就是把I2C初始化函数放到了第三,因此读数据异常。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 22:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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