[PIC®/AVR®/dsPIC®产品] I2C如何兼容非标I2C

[复制链接]
2205|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 | 显示全部楼层
硬件的都是配置好的应该不能调吧
Henryko 发表于 2023-11-14 11:16 来自手机 | 显示全部楼层
只能用io模拟吧
Jacquetry 发表于 2023-11-20 10:41 来自手机 | 显示全部楼层
这个都是硬件锁死的吧
AloneKaven 发表于 2023-11-21 09:32 来自手机 | 显示全部楼层
用软件模拟,什么时序都能出来
Bowclad 发表于 2023-11-23 15:15 来自手机 | 显示全部楼层
嗯,硬件iic应该是定死了的
gaoyang9992006 发表于 2023-11-24 09:21 | 显示全部楼层
对付非标最好的方法就是IO模拟,这个芯片定位应该就是用IO模拟驱动。
xinpian101 发表于 2023-11-24 22:31 | 显示全部楼层
上IO模拟,这个硬件的无解。硬件的是针对标准时序的。
Bowclad 发表于 2023-11-27 14:18 来自手机 | 显示全部楼层
这个还是用模拟的好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

159

主题

1640

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部