[求助]CH341模块读写IIC时只能读0地址的芯片

从淘宝上买了个模块,USB2IIC(URIT) 的,读写IIC存储器时,不能读取芯片地址为0以外的其它芯片。有什么办法? 我有一个数据卡,地址固定为 非零了,还是DICE封装邦定的IC,肯定没法改芯片的接线了。 [Emot]1[/Emot]

请问你是自己编程来读写eeprom的还是直接用的我们的例程来操作的啊! 如果是自己编程来读写的话,请使用下面的API

BOOL WINAPI CH341WriteEEPROM( // 向EEPROM中写入数据块 ULONG iIndex, // 指定CH341设备序号 EEPROM_TYPE iEepromID, // 指定EEPROM型号 ULONG iAddr, // 指定数据单元的地址 ULONG iLength, // 准备写出的数据字节数 PUCHAR iBuffer ) // 指向一个缓冲区,放置准备写出的数据

BOOL WINAPI CH341ReadEEPROM( // 从EEPROM中读取数据块,速度约56K字节 ULONG iIndex, // 指定CH341设备序号 EEPROM_TYPE iEepromID, // 指定EEPROM型号 ULONG iAddr, // 指定数据单元的地址 ULONG iLength, // 准备读取的数据字节数 PUCHAR oBuffer ) // 指向一个缓冲区,返回后是读入的数据

其中第3个参数可以指定地址啊,下面简单说明(假如你使用的是24c02) 240c2 2K/8 = 256字节 假如a2 = a1 = a0 = 0的话(就是说说24c02的A2,A1,A0引脚),iAddr = 0,就从第一个设备的地址0开始读写 假如a2 = a1 = 0 a0 = 1的话(就是说说24c02的A2,A1,A0引脚),iAddr = 0x100,就从第二个设备的地址0开始读写 假如a2 = a0 = 0 a1 = 1的话(就是说说24c02的A2,A1,A0引脚),iAddr = 0x200,就从第三个设备的地址0开始读写 依次类推,不知道你是否明白了,如果还不明白,请直接与我联系


什么意思呀,没看明白? 000 001 010 011 100 101 110 111 假设 A2=1 A1=1 A0=1 那么iAddr = 0x800 ?


那个iAddr的参数是一个32位变量,低8位或者低16位是数据单元地址(比如你要读写某个设备的地址3的数据),在数据单元地址之前的8位就是设备地址,


只有登录才能回复,可以选择微信账号登录