S3C2440+ADXL345(加速度传感器) IIC通信,求助。
开发板当主机,传感器模块为从机,标准速度1kbps。问题描述:初始化ADXL345后再从被初始化的芯片寄存器读取数据,正确,但是读出的三轴测量数据却总是不正确。
程序是从网上的一个单片机模拟IIC读取芯片的程序和2440附带的ADS实验资料里的一个与AT24C02进行IIC通信改写的。
请教一下各位,问题出在哪里呢? 对了,补充一点:芯片是OK的,用单片机可以正确显示的。 从描述看,IIC通信应该没问题了。可能是寄存器设置还是有些问题 你的IIC总线上SCL是多少KHz? 100,还是400? 还有设置的数据输出率是多少? 阿南 发表于 2012-12-26 23:27 static/image/common/back.gif
从描述看,IIC通信应该没问题了。可能是寄存器设置还是有些问题
完全按照单片机的程序设置,当然数据输出速率(DOR)比它大而已,但是SCL100KHz,DOR是200Hz,符合比例呢。。 xunchangreng 发表于 2012-12-27 08:00 static/image/common/back.gif
你的IIC总线上SCL是多少KHz? 100,还是400? 还有设置的数据输出率是多少?
100KHz,DOR是200Hz,我是用ADS编译好,生成.bin文件下载到SDRAM里跑的,串口打印数据。。 本帖最后由 dumzair 于 2012-12-27 09:40 编辑
我把源码附件了,大家帮忙看看吧,非常感谢~那个图片是Z轴向下,读出的数据(非常蛋疼的数据)。。 从表述来看应该是ADXL345使用不当。
可惜我没用过这可料,只能帮顶了。 感觉还是寄存器配置有问题。
使用单片机的话,你肯定使用的是I/O 模拟时序
而使用ARM就使用I2C控制器,需要操作的就只有寄存器了
实在不行就用示波器抓波形分析吧。 软件应该没问题,速率这么低,访问ADXL345又不用repeat-start等特殊时序。看看原理图? jlass 发表于 2012-12-27 12:57 static/image/common/back.gif
从表述来看应该是ADXL345使用不当。
可惜我没用过这可料,只能帮顶了。 ...
:) 哈哈,没关系的,谢谢~。。 哎。。还是不对。。算了,结贴了。。 你看参考程序:
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.让人费解啊。 参考程序里的initial里设定却是25.说错了一句
页:
[1]