查看: 3139|回复: 9

[其他] 加速度传感器MMA8451读Who_AM_I

[复制链接]

该用户从未签到

1

主题

5

帖子

0

新手上路

Rank: 1

积分
23
最后登录
1970-1-1
发表于 2015-10-12 22:29:46 | 显示全部楼层 |阅读模式
最近用TI的CC2541获取MMA8451数据,读取who_am_i寄存器或者其他寄存器返回的总是0xff,或者0x00。I2C时序应该没有什么问题,传感器也回复了ACK,但就是数据不对。时序图由硬件逻辑分析仪获得,始终想不明白哪里出错了。


我知道答案 目前已有9人回答

MMA8451读Who_am_i

MMA8451读Who_am_i
回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2015-10-13 09:33:41 | 显示全部楼层
楼主读取时序有问题,请严格按照MMA8451的手册时序操作:

18.jpg
另外,你这个地址0X38,0X39,需要保证SA0输入为0.

回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

5

帖子

0

新手上路

Rank: 1

积分
23
最后登录
1970-1-1
 楼主| 发表于 2015-10-13 10:16:10 | 显示全部楼层
SA0我是接了10K下拉地电阻的。我尝试过0x39,这个地址slave是不会响应AK信号的。难道是因为我写完地址后,有个SP信号造成的?我这个i2c总线上还挂了其它芯片,其它芯片是要这个SP信号的。除了这个SP,我也没看出其它问题了。

时序分析

时序分析
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2015-10-13 12:53:27 | 显示全部楼层
本帖最后由 FSL_TICS_ZJJ 于 2015-10-13 12:55 编辑
wisdomlau 发表于 2015-10-13 10:16
SA0我是接了10K下拉地电阻的。我尝试过0x39,这个地址slave是不会响应AK信号的。难道是因为我写完地址后, ...

你先把其他挂的I2C设备去掉,就留一个加速度传感器测试试试。
然后把SP去掉,直接跟上读命令。
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

5

帖子

0

新手上路

Rank: 1

积分
23
最后登录
1970-1-1
 楼主| 发表于 2015-10-13 16:57:19 | 显示全部楼层
另外一个I2c设备我焊掉了。我后来想了一下,写完寄存器0x0d后的SP信号没法去掉啊,不然怎么restart呢?restart的前提条件是scl和sda都要预先拉高,不就是sp了吗?后我把详细点的时序图再列出来。

详细时序图.png
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2018-8-30 16:02
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    36

    主题

    1065

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1851
    最后登录
    2019-11-19
    发表于 2015-10-14 00:00:07 | 显示全部楼层
    是否尝试过加长写与读之间的延时
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    帖子

    0

    新手上路

    Rank: 1

    积分
    23
    最后登录
    1970-1-1
     楼主| 发表于 2015-10-14 10:15:00 | 显示全部楼层
    尝试过在写和读之间加上延时,也没有效果。晕啊!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-1-6 07:38
  • 签到天数: 736 天

    连续签到: 1 天

    [LV.9]以坛为家II

    21

    主题

    3486

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    5093
    最后登录
    2024-1-7
    发表于 2015-10-14 10:45:27 | 显示全部楼层
    帮顶一下
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-10-14 16:01:40 | 显示全部楼层
    wisdomlau 发表于 2015-10-13 16:57
    另外一个I2c设备我焊掉了。我后来想了一下,写完寄存器0x0d后的SP信号没法去掉啊,不然怎么restart呢?rest ...

    楼主你好!
    下图是我用我们的FRDM-KL25测试的数据,同样读取0X0D地址的数据,能够获得ID为0X1A,下面的波形供你参考:
    20.jpg

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    帖子

    0

    新手上路

    Rank: 1

    积分
    23
    最后登录
    1970-1-1
     楼主| 发表于 2015-10-26 16:33:40 | 显示全部楼层
    感谢楼上的各位帮助,我已经成功解决了这个问题。问题的所在就是写完地址和寄存器后,不能够stop,将sck和sda信号拉高后重新restart,就没有问题了。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-22 15:51 , Processed in 0.105986 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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