注册 登录
查看: 405|回复: 7

请教一下山外老师I2C库的相关知识

[复制链接]
发表于 2015-1-5 23:17:29 | 显示全部楼层 |阅读模式
ASSERT((SlaveID & 0x80) == 0);                      //断言,我们要求的7位地址的值仅仅是7bit,不是通信时要求的高7位
    //有些手册,给出的7位地址指的是8bit里的高7位
    //有些手册,给出的7位地址指的是7bit
    //请自行确认,可以尝试是否通信正常来确认
    i2c_Start(i2cn);                                    //发送启动信号
    i2c_write_byte(i2cn, ( SlaveID << 1 ) | MWSR);      //发送从机地址和写位
    i2c_Wait(i2cn);
这是您I2C读取的一部分函数,是i2c_read_reg()函数的一部分。不管我是用K60还是KL26 I2C总是停在 i2c_Wait(i2cn);这个位置,
然后我估摸着就是 这个地址出了问题,您表示了地址有区别
ASSERT((SlaveID & 0x80) == 0);                      //断言,我们要求的7位地址的值仅仅是7bit,不是通信时要求的高7位
    //有些手册,给出的7位地址指的是8bit里的高7位
    //有些手册,给出的7位地址指的是7bit
最近在调MMA的数字加速度计,
请问地址是应该用0X1C,还是0X38。我都试了,不管用。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2015-1-5 23:27:54 | 显示全部楼层
我想还是山外老师亲自用用这些个芯片 然后给我们解答解答疑惑呗。不明白问题到底出在哪里。
回复 支持 反对

使用道具 举报

发表于 2015-1-5 23:36:40 | 显示全部楼层
库函数,要用 0x1c 或者 0x1d
看你的 sa0管脚怎么定义
回复 支持 反对

使用道具 举报

发表于 2015-1-6 13:19:52 | 显示全部楼层
jixian79 发表于 1420471674
我想还是山外老师亲自用用这些个芯片 然后给我们解答解答疑惑呗。不明白问题到底出在哪里。
这些模块需要自己研究,用示波器测测波形。
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-6 19:56:40 | 显示全部楼层
山外メ雲ジ 发表于 1420521592
这些模块需要自己研究,用示波器测测波形。
我试过了是0X1C,但是如果器件用的地址是那个通信的地址,程序要怎么改变呢?
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-6 19:57:28 | 显示全部楼层
仰逸致 发表于 1420472200
库函数,要用 0x1c 或者 0x1d
看你的 sa0管脚怎么定义
谢谢了。昨天线松了没有接好,已经整好了,但是想知道如果用的是通信地址的话函数要怎么改变?
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

发表于 2015-1-6 20:01:59 | 显示全部楼层
jixian79 发表于 1420545400
我试过了是0X1C,但是如果器件用的地址是那个通信的地址,程序要怎么改变呢?
通信地址,不就是7bit地址吗?

不需要改啊,传递参数进去即可
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-6 20:04:51 | 显示全部楼层
山外メ雲ジ 发表于 1420545719
通信地址,不就是7bit地址吗?

不需要改啊,传递参数进去即可
8451q 飞思卡尔官网默认的例程给的地址是0x38.还有山外老师,我看那个官方例程的时候,I2C有连续读,连续写,就是一次读取N个数据只需要应答一次,我不知道这个是不是I2C协议默认都有的功能如果是的话,能不能考虑把I2C模块这个功能也加进库里边?
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

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

本版积分规则

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