打印

EzI2Cs问题

[复制链接]
1974|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xgk0724|  楼主 | 2009-3-31 18:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用EzI2Cs的时候,当主控有数据发送过来的时候,去哪里收啊?
是不是要开中断啊?具体怎么用啊?有没有能提供类子的啊.
沙发
ni_labview| | 2009-4-1 09:46 | 只看该作者

用不着处理中断,看下面代码

#include <m8c.h>        // part specific constants and macros
#include "PSoCAPI.h"    // PSoC API definitions for all User Modules
extern unsigned char COMBuff[32];
void main(void)
   {
    EzI2Cs_SetRamBuffer(32,32,COMBuff);  
    EzI2Cs_EnableInt();
    EzI2Cs_SetAddr(3); 
    M8C_EnableWatchDog;
    M8C_EnableGInt;
    while
     {
       COMBuff//中的32数据可以随便读写,还有更多选择参考手册

      }


}

使用特权

评论回复
板凳
xgk0724|  楼主 | 2009-4-1 11:45 | 只看该作者

能具体一点吗?

使用特权

评论回复
地板
xgk0724|  楼主 | 2009-4-1 11:53 | 只看该作者

sorry

比如说,你讲的32个数据中的 COMBuff[1]直接可以读取,想要写的时候,也是直接将数据放到COMBuff[1]里面的吗?如果这样的话主控端在写的时候会将32个数据全写了,下次主控又要读回去的时候,又可以将这些数据读回?在没有断电的情况下,完全相当于EEPROM器件,我这样理解对吗?

使用特权

评论回复
5
ni_labview| | 2009-4-1 13:25 | 只看该作者

EZI2C可以模拟成一个24C01

有一点区别他可以设置成只读去和读写区,通过API设置
EzI2Cs_SetRamBuffer(32,32,COMBuff);  这个就是把COMBuff[32]这个数组设置成完全读写,主控器像访问24C01一样读写,你也可以用读器件从哪个地址读几个字节或从哪个地址开始写几个字节的方式单独操作,与读写一般I2C器件器件无区别。
另外你的EZI2C从器件可以判断你的COMBuff【】数值中哪个字节被写过了决定是否进行操作。

使用特权

评论回复
6
xgk0724|  楼主 | 2009-4-1 17:47 | 只看该作者

这下比较明白了!

使用特权

评论回复
7
xgk0724|  楼主 | 2009-4-1 17:51 | 只看该作者

谢谢ni_labview

使用特权

评论回复
8
gary_zou| | 2009-4-3 00:45 | 只看该作者

用此方式存取有一定风险

如果数据之间有联系,最好还是关中断存取。另外,想增强一下该用户模块的功能,修改中断处理程序,但是cypress在相应的位置上并没有免覆盖功能(就是说,重新生成文件,修改会被覆盖)。试过拷贝@字符的上下文,但是不管用,不知道有没有其他方法?想到一个,就是不放置用户模块,直接添加相应文件至工程中,还不知道可行不?明天试试。要有更好的方法就好了……

使用特权

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

本版积分规则

8

主题

35

帖子

1

粉丝