智能车制作

标题: K60自带的IIC读写MMA845X难道是个bug? [打印本页]

作者: 笑而不语    时间: 2014-2-18 21:11
标题: K60自带的IIC读写MMA845X难道是个bug?
    蛋疼啊,花了一两天时间研究了k60自带的IIC模块读写MMA8451!可是写数据时候就是没有应答信号,我以无力吐槽了,代码用kl25z试过了,完全可以,k60和kl25z IIC模块一样的,考虑过可能是时钟原因,但是几乎每个分频值都用过了,不知道大家有没有人用K60自带IIC读写MMA8451,不知道你们有没有遇到这问题,反正我打算用IO口模拟了,在这里也以我这蛋疼经历建议大家如果用K60读写MMA845X,还是选IO口模拟吧,KL25z的可以选择用自带的IIC,当然如果哪位遇到过这个问题并解决的大神看到了这个帖子还望不吝赐教,真是蛋都碎了,心底还是想知道why?
作者: azraeltang    时间: 2014-2-18 22:52
表示K60,硬件IIC读写MMA8451没有碰到问题。可能是你的底层有问题。
作者: 笑而不语    时间: 2014-2-19 03:55
azraeltang 发表于 2014-2-18 22:52
表示K60,硬件IIC读写MMA8451没有碰到问题。可能是你的底层有问题。

你F寄存器设置的值是多少?你是自己写的底层库吗?代码应该没问题,自己写的,因为同样的代码在kl25z上完全运行成功了,而且网上也找了官网iic的方面代码也不行,想来想去要不就是F寄存器值设置的不对,要不就是板子问题。我已经用IO模拟了,能不能把你iic工程借我试一下

作者: azraeltang    时间: 2014-2-19 11:27
笑而不语 发表于 2014-2-19 03:55
你F寄存器设置的值是多少?你是自己写的底层库吗?代码应该没问题,自己写的,因为同样的代码在kl25z上完 ...

IIC底层我是移植野火的库。

作者: 无人的回忆    时间: 2014-2-19 11:30
一般情况下都用模拟的IIC读写时序....自带的都不是很好用的....当然你要是研究透了自带的就好说了
作者: chiusir    时间: 2014-2-19 18:29
先用模拟的试试看,确定模块没有问题了再去试试硬件IIC,注意IIC设置为大端还是小端模式,跟MMA要匹配才行的。
作者: 笑而不语    时间: 2014-2-19 21:42
azraeltang 发表于 2014-2-19 11:27
IIC底层我是移植野火的库。

额,好吧,哥们,是不是只需要Z轴的加速度就可以满足车平衡需要了?你用过ENC-03吗啊?知不知道那个1号引脚vref输出的高电平还低电平啊。

作者: 笑而不语    时间: 2014-2-19 21:44
无人的回忆 发表于 2014-2-19 11:30
一般情况下都用模拟的IIC读写时序....自带的都不是很好用的....当然你要是研究透了自带的就好说了

我觉得这绝对是真理,自己模拟写的代码时序都掌握在自己手上,出错了也方面检查出来!图方便还是模拟好了

作者: 笑而不语    时间: 2014-2-19 21:48
chiusir 发表于 2014-2-19 18:29
先用模拟的试试看,确定模块没有问题了再去试试硬件IIC,注意IIC设置为大端还是小端模式,跟MMA要匹配才行的 ...

什么是大端还是小端?是指主从关系吗?其实k60的iic我们只会用到master模式,所以真正用到的就几个寄存器,一点都不复杂,C1,F,D,再加个状态寄存器就行了。IO模拟可行,而且自己写的IIC代码去KL25z上实验完全可行。网上也看到人家遇到这个问题,说别的都能行,就K60用不起来。还特意下了一些成功的人分享的代码还是不可以。会不会是各各人用的系统版本身原因?

作者: zglyr    时间: 2014-2-22 16:11
azraeltang 发表于 2014-2-19 11:27
IIC底层我是移植野火的库。

我用的野火的库也出现了这种问题啊,有什么需要修改的地方吗?
作者: azraeltang    时间: 2014-2-24 15:58
zglyr 发表于 2014-2-22 16:11
我用的野火的库也出现了这种问题啊,有什么需要修改的地方吗?

代码里有个pause延时,把那个延时适当调大些试试。

作者: zglyr    时间: 2014-2-25 23:15
azraeltang 发表于 2014-2-24 15:58
代码里有个pause延时,把那个延时适当调大些试试。

从80到1000都调过,貌似还是不行
你调的是多少呢?

作者: azraeltang    时间: 2014-3-1 09:37
zglyr 发表于 2014-2-22 16:11
我用的野火的库也出现了这种问题啊,有什么需要修改的地方吗?

地址有没有给错?要给原来的7位地址。他会自己去算成8位

作者: zglyr    时间: 2014-3-13 17:41
azraeltang 发表于 2014-3-1 09:37
地址有没有给错?要给原来的7位地址。他会自己去算成8位

就是这个问题!!!
作者: 爱走来的那天    时间: 2014-3-13 17:47
不知道你用的8451模块是自己做的?还是买的...如果是买的,需要短掉几个电阻,就能给K60用了
作者: linwei.hex    时间: 2014-3-25 19:46
爱走来的那天 发表于 2014-3-13 17:47
不知道你用的8451模块是自己做的?还是买的...如果是买的,需要短掉几个电阻,就能给K60用了

短掉哪些电阻

作者: 爱走来的那天    时间: 2014-3-25 22:51
linwei.hex 发表于 2014-3-25 19:46
短掉哪些电阻

把两个限流电阻短掉,就行

作者: 爱走来的那天    时间: 2014-3-25 22:52
linwei.hex 发表于 2014-3-25 19:46
短掉哪些电阻

http://www.znczz.com/thread-122722-1-1.html
可以参见我之前的情况

作者: linwei.hex    时间: 2014-3-25 23:34
爱走来的那天 发表于 2014-3-25 22:51
把两个限流电阻短掉,就行

要把电阻拆下来吗

作者: 爱走来的那天    时间: 2014-3-26 00:07
linwei.hex 发表于 2014-3-25 23:34
要把电阻拆下来吗

短路就行

作者: arkey    时间: 2014-3-26 02:40
LUGUO
作者: liengzcin8    时间: 2014-4-27 20:57
azraeltang 发表于 2014-2-18 21:52
表示K60,硬件IIC读写MMA8451没有碰到问题。可能是你的底层有问题。

你好,我遇到了这个问题。是否可以接见你的代码?谢谢。QQ:714013462

作者: 阳泉    时间: 2014-5-4 13:38
azraeltang 发表于 2014-2-19 11:27
IIC底层我是移植野火的库。

我的也用的是***库,但在执行//启动信号#define i2c_Start(I2Cn)             I2C_C1_REG(I2Cx[I2Cn]) |= I2C_C1_TX_MASK;\
                                    I2C_C1_REG(I2Cx[I2Cn]) |= I2C_C1_MST_MASK
这条语句时总是卡死,并提示“*********硬件上访错误************”不知兄台是否知道缘由,我已经被折磨了快2个星期了。



作者: 牛牛~    时间: 2014-12-31 19:12
azraeltang 发表于 2014-2-18 22:52
表示K60,硬件IIC读写MMA8451没有碰到问题。可能是你的底层有问题。

能不能发一下你的那个程序看看啊我的程序读出来的一直是-1啊,不知道是哪里有问题

作者: dingygc    时间: 2015-4-2 15:40
azraeltang 发表于 2014-2-18 22:52
表示K60,硬件IIC读写MMA8451没有碰到问题。可能是你的底层有问题。

大神,能不能发一份你的i2c过来,我用k60硬件i2 c完全出不来数据





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2