原创 BK1080的I2C地址0x80与其它I2C设备地址冲突了怎么办? 如何屏蔽掉0x80这个I2C地址? 怎么修改I2C地址?

2012-8-3 11:53 3357 14 14 分类: 消费电子

如果BK1080的I2C地址0x80与其它I2C设备地址有冲突, 请使用备用芯片地址:0x70.

 

用0x70的读写格式和用0x80不一样, 有点类似硬件I2C模式, 兼容硬件I2C, 但比硬件I2C更方便.

 

除了芯片地址和寄存器地址的写入格式有点不一样外, 写入和读出数据的方法都一样.

支持从任何一个寄存器开始写

支持一次性读写1~n多个寄存器.

 

 

1.写操作

写操作举例. 用I2C地址0x80写REG3为0xaa55.

0x80

A

0x06

A

0xaa

A

0x55

A

P

首字节为I2C地址0x80, 

接着是寄存器地址0x03左移一位,低位用读写位补充0表示写,所以是0x06,

后面是要写的值0xaa,0x55.

 

用I2C地址0x70写REG3为0xaa55

0xe0

A

0x03

A

0xaa

A

0x55

A

P

首字节是0x70左移一位, 最低位用读写位补充, 0表示写, 得到数值0xe0.

接着是寄存器地址0x03.

后面是要写的值0xaa,0x55.

 

 

2.读操作

读操作举例. 用I2C地址0x80读REG3,读回来的值为0xaa55.

0x80

A

0x07

A

0xaa

A

0x55

NA

S

首字节为I2C地址0x80, 

接着是寄存器地址0x03左移一位,低位用读写位补充,1表示读,所以是0x07,

后面是要写的值0xaa,0x55.

 

用I2C地址0x70读REG3,读回来的值为0xaa55.

0xe1

A

0x00

A

0x08

A

0x10

A

0x80

A

0x02

A

0x01

A

0xaa

A

0x55

NA

S

 

首字节是0x70左移一位, 最低位用读写位补充, 1表示读, 得到数值0xe1.

默认从REG0开始读.

由于是从REG0开始读的,所以读出来的8个8bit最后两个8bit才是REG3的值.

 

此外还有一种方法,就是把要读的首地址写入REG126,这样读回来的值就以reg126的值为首地址:

       步骤1:写REG126为0x0003

0xe0

A

0x7E

A

0x00

A

0x03

A

P

步骤2:从REG3开始读(REG126在上一步已经被设为3了)

0xe1

A

0xaa

A

0x55

NA

S

 

 

3.屏蔽BK1080的0x80这个I2C地址

屏蔽0x80地址后,其它芯片的I2C的读写操作和BK1080之间就不会相互影响了,

方法:写REG125为0x01即可,

0xe0

A

0x7d

A

0x00

A

0x01

A

P

 

 

 

4.更改0x70这个I2C地址

0x70这个I2C地址保存在REG127,是可以改的.

如果0x070与其它芯片I2C地址还有冲突,我们可以改掉这个地址, 

在0x80这个地址还没屏蔽掉的情况下可如下操作:

0x80

A

0x7F

0

A

0x00

A

0x60

A

P

改后备用i2c地址变成了0x60了.

 

 

相关博文:

http://forum.eet-cn.com/BLOG_ARTICLE_9891.HTM
45. BK1080,BK1086/88 I2C波形抓图


http://forum.eet-cn.com/BLOG_ARTICLE_9136.HTM
6.BK1080 I2C通信不上如何解决? BK1080读不到芯片ID怎么办? BK1080 I2C没反映怎么解决?

 

http://forum.eet-cn.com/BLOG_ARTICLE_9878.HTM
41. BK1080的I2C地址0x80与其它I2C设备地址冲突了怎么办? 如何屏蔽掉0x80这个I2C地址? 怎么修改I2C地址?

 

 

 

文章评论0条评论)

登录后参与讨论
我要评论
0
14
关闭 站长推荐上一条 /2 下一条