此函数EZUSB_WriteI2C(Addr,length,*p),外部IIC器件为EEPROM AT24c128。其器件地址为10100a,b,r/w
8位数据。 那么如果我要进行EEPROM写操作,Addr应该写什么值?
普通通信首次发送的地址字节应该是10100xx0 比如A0(或者别的根据xx),然后根据要写的EEPROM内地址,发送2自己的地址数据,之后再发送要写入的数据。
如果通过调用EZUSB_WriteI2C函数,*p的前两个字节为要写的EEPROM内地址,后面是要写入的数据,这时候:
那么Addr应该是什么值呢?我查找相关文档,对这个函数都没有详细说明,想看函数源代码,在keil中也无法go to defintion但是再看工程师给我的程序中这个地址是0x50
,为什么是0x50呢:0101 0000 唯一的解释是:WriteI2c这个函数不需要r/w控制,所以 原来地址
1010 0000 右移一位,左端补0,就变成0x50了。WriteI2c自己通过函数控制来操作读写。
我找了些固件构架API资料也没看到详细说明。请问是我这样理解的么? |