本文之所以把BK1080,BK1086/88三个芯片一起讨论, 因为他们有以下共同点:
1. 芯片的I2C时序完全一样,都是先写芯片I2C地址, 再写寄存器地址<<1位+读写位,后面再跟读写的值.
2. 芯片的I2C地址也完全一样,都是0x80.
3. 芯片的CHIP_ID都一样,都存在REG1里面, CHIP_ID都等于0x1080.
总结以上, 一般I2C调试的第一步就是从REG1读CHIP_ID, 时序图如下:
S |
0x80 |
A |
0x03 |
A |
0x10 |
A |
0x80 |
NA |
S |
首字节为I2C地址0x80,
接着是寄存器地址0x01左移一位, 低位用读写位补充, 1表示读, 所以是0x03,
后面是读出来的值0x1080.
以下是用逻辑分析仪抓出来的值:
读REG2, 返回0x0201( BK1080默认值为0x0201).
写REG2为0x4201(给BK1080的静音位写1,使芯片输出静音)
相关博文:
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地址?
用户1442022 2014-1-7 20:40
用户1636526 2011-11-30 13:03
meng_411698409 2011-10-26 13:00
一看您就是专家,不错. 这都被你看出来了,
确实不是十分标准的I2C,但是兼容标准的I2C.
以后还请多提宝贵意见.
用户1622556 2011-10-25 17:42
meng_411698409 2011-10-21 00:48
用户1630428 2011-10-19 17:35