打印
[PIC®/AVR®/dsPIC®产品]

I2C如何兼容非标I2C

[复制链接]
1289|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小明的同学|  楼主 | 2023-11-5 16:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
手册的说明部分:
I2C 总线模式
I2C总线模式只使用了SCLK和SDIO两个管脚。数据传输开始于Start条件,即SCLK为高电平时,SDIO产生下降沿。然后主机需要向SDIO输出一个8
位的Device ID。DeviceID是0x80。输出Device ID 之后, MCU 继续向SDIO上输出一个8位的控制字,控制字由7位的起始寄存器地址和一个读写
位组成(读操作为1,写操作为0)。在I 2 C 读数据时, 主机必须在BK1086/88E送出每个字节数据后给出一个ACK信号,并且在读出最后一个
字节后给出N A C K 信号。为了使通信更加稳定,SCLK信号的上升时间必须小于200ns。

经过尝试,用标准I2C驱动失败了。。。
找到了另外一个大神的说明,目前只有IO模拟的时序是成功的。
大神的尝试说明如下:
I2C接口
该设备的数据表指出 I2C 总线地址为 0x80。但是,Wire(I2C) Arduino 库在 0x80 上找不到该器件。实际上,Arduino在0x40上找到了该设备。这一定是由于地址从 8 位到 7 位的内部转换。(0x80 = 0b10000000;0x40 = 0b01000000)在尝试使用 Arduino I2C 库几次失败后,我决定编写必要的 I2C 例程来处理该设备。

然后就是纯IO模拟的时序成功的读写了该设备。。。
那么遇到这个情况如何用硬件的解决呢,有没要大佬看看。


使用特权

评论回复
沙发
小明的同学|  楼主 | 2023-11-5 16:30 | 只看该作者
是不是解决非标问题只能用IO模拟?

使用特权

评论回复
板凳
Bowclad| | 2023-11-9 19:44 | 只看该作者
非标IIC是什么时序啊?

使用特权

评论回复
地板
Undshing| | 2023-11-12 18:27 | 只看该作者
硬件的都是配置好的应该不能调吧

使用特权

评论回复
5
Henryko| | 2023-11-14 11:16 | 只看该作者
只能用io模拟吧

使用特权

评论回复
6
Jacquetry| | 2023-11-20 10:41 | 只看该作者
这个都是硬件锁死的吧

使用特权

评论回复
7
AloneKaven| | 2023-11-21 09:32 | 只看该作者
用软件模拟,什么时序都能出来

使用特权

评论回复
8
Bowclad| | 2023-11-23 15:15 | 只看该作者
嗯,硬件iic应该是定死了的

使用特权

评论回复
9
gaoyang9992006| | 2023-11-24 09:21 | 只看该作者
对付非标最好的方法就是IO模拟,这个芯片定位应该就是用IO模拟驱动。

使用特权

评论回复
10
xinpian101| | 2023-11-24 22:31 | 只看该作者
上IO模拟,这个硬件的无解。硬件的是针对标准时序的。

使用特权

评论回复
11
Bowclad| | 2023-11-27 14:18 | 只看该作者
这个还是用模拟的好

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

123

主题

1370

帖子

2

粉丝