打印

S3C2440+ADXL345(加速度传感器) IIC通信,求助。

[复制链接]
3075|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dumzair|  楼主 | 2012-12-26 21:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
开发板当主机,传感器模块为从机,标准速度1kbps。
问题描述:初始化ADXL345后再从被初始化的芯片寄存器读取数据,正确,但是读出的三轴测量数据却总是不正确。
程序是从网上的一个单片机模拟IIC读取芯片的程序和2440附带的ADS实验资料里的一个与AT24C02进行IIC通信改写的。
请教一下各位,问题出在哪里呢?

相关帖子

沙发
dumzair|  楼主 | 2012-12-26 21:43 | 只看该作者
对了,补充一点:芯片是OK的,用单片机可以正确显示的。

使用特权

评论回复
板凳
阿南| | 2012-12-26 23:27 | 只看该作者
从描述看,IIC通信应该没问题了。可能是寄存器设置还是有些问题

使用特权

评论回复
地板
xunchangreng| | 2012-12-27 08:00 | 只看该作者
你的IIC总线上SCL是多少KHz? 100,还是400? 还有设置的数据输出率是多少?

使用特权

评论回复
5
dumzair|  楼主 | 2012-12-27 09:13 | 只看该作者
阿南 发表于 2012-12-26 23:27
从描述看,IIC通信应该没问题了。可能是寄存器设置还是有些问题

完全按照单片机的程序设置,当然数据输出速率(DOR)比它大而已,但是SCL100KHz,DOR是200Hz,符合比例呢。。

使用特权

评论回复
6
dumzair|  楼主 | 2012-12-27 09:14 | 只看该作者
xunchangreng 发表于 2012-12-27 08:00
你的IIC总线上SCL是多少KHz? 100,还是400? 还有设置的数据输出率是多少?

100KHz,DOR是200Hz,我是用ADS编译好,生成.bin文件下载到SDRAM里跑的,串口打印数据。。

使用特权

评论回复
7
dumzair|  楼主 | 2012-12-27 09:36 | 只看该作者
本帖最后由 dumzair 于 2012-12-27 09:40 编辑

我把源码附件了,大家帮忙看看吧,非常感谢~那个图片是Z轴向下,读出的数据(非常蛋疼的数据)。。

1.png (5.91 KB )

1.png

TEST_IIC2ARM.zip

187.11 KB

使用特权

评论回复
8
jlass| | 2012-12-27 12:57 | 只看该作者
从表述来看应该是ADXL345使用不当。
可惜我没用过这可料,只能帮顶了。

使用特权

评论回复
9
shell.albert| | 2012-12-27 13:13 | 只看该作者
感觉还是寄存器配置有问题。
使用单片机的话,你肯定使用的是I/O 模拟时序
而使用ARM就使用I2C控制器,需要操作的就只有寄存器了
实在不行就用示波器抓波形分析吧。

使用特权

评论回复
评论
dumzair 2012-12-27 19:13 回复TA
嗯嗯,非常感谢,我再研究研究。。 
10
ymind| | 2012-12-27 13:28 | 只看该作者
软件应该没问题,速率这么低,访问ADXL345又不用repeat-start等特殊时序。看看原理图?

使用特权

评论回复
评论
dumzair 2012-12-27 19:14 回复TA
好的,我再看看,多谢啦~ 
11
dumzair|  楼主 | 2012-12-27 19:12 | 只看该作者
jlass 发表于 2012-12-27 12:57
从表述来看应该是ADXL345使用不当。
可惜我没用过这可料,只能帮顶了。 ...

:) 哈哈,没关系的,谢谢~。。

使用特权

评论回复
12
dumzair|  楼主 | 2012-12-28 10:09 | 只看该作者
哎。。还是不对。。算了,结贴了。。

使用特权

评论回复
13
清霜一梦| | 2013-9-2 17:43 | 只看该作者
你看参考程序:
dat <<= 1;
        SCL = 1;                //拉高时钟线
        Delay5us();             //延时
        dat |= SDA;             //读数据               
        SCL = 0;                //拉低时钟线
        Delay5us();   
也就是说这个时候的scl是100K hz
好,在看initial里面的设定:
Single_Write_ADXL345(0x2C,0x08);   //速率设定为12.5 参考pdf13页
这个设定对应的输出速率是25
这个参考程序在c52上正常显示了(没有验证显示是不是正确的)
好,问题来了
依据P17 里面table11上面几行里面说的scl为400K 对应的数据传输速率设定为800hz。那么以此类推参考程序中的scl是100K ,就应该是200hz。可是参考程序里的initial里设定却是50.让人费解啊。

使用特权

评论回复
14
清霜一梦| | 2013-9-2 17:45 | 只看该作者
参考程序里的initial里设定却是25.说错了一句

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

5

帖子

0

粉丝