打印
[USB编程]

关于CY768013A的固件构架中 I2C函数的问题EZUSB_WriteI2C

[复制链接]
5548|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yf823547490|  楼主 | 2013-10-15 13:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
此函数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资料也没看到详细说明。请问是我这样理解的么?

相关帖子

沙发
yf823547490|  楼主 | 2013-10-15 13:20 | 只看该作者
又找了一下。。。。。在安装路径c:USB 中找到了i2c.c文件
其中找到了函数原型 在WriteI2C中会执行 I2DAT = addr << 1;  
                   在ReadI2C中会执行  I2DAT = (addr << 1) | 0x01;
所以给他们的addr为格式为0 1010 0xx  函数会根据调用的是读还是写自动改成标准格式发送。

好多问题自己想就是想不明白。。。一发帖。。帖子发完了。。。马上就想到该怎么办了。。。不知道这什么节奏啊。。。
抱歉让各位浪费时间看我帖子了。

使用特权

评论回复
板凳
Dick00| | 2013-10-15 13:45 | 只看该作者
Cypress的固件函数还是很不错的,读写操作都是已经编写好的子函数,直接调用即可,如果LZ用单片机模拟过I2C接口,那就很容易明白的。

使用特权

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

本版积分规则

31

主题

140

帖子

3

粉丝