Someone comes into your life and someone goes away!


pSoc 在程序中动态改变 I2C slave 设备的地址
时间:2006-03-22

我使用的芯片是 CY8C29466,因为项目中要使用两块功能几乎相同的 pSoc 模块,所以我打算把两块芯片的代码放在一块。但是与主芯片通信的 I2C 地址(slave模式),却是不可以一样的。

默认生成的I2C HW 模块,address 是在 Device Editor 模块中定死的;其实看自动生成的代码,会发现地址只是被预定义为一个值I2CHW_1_SLAVE_ADDR。而对这个值的使用,只在 i2chw_1int.asm 中遇到。具体就是在判断master发过来的 address 是否是本 slave 的address.

原始代码片断(自动生成):

    mov A, reg[I2CHW_1_DR]
    and F, 0xF9                                                     
    rrc A                                                           
    xor A,  I2CHW_H_SLAVE_ADDR 
    jnz I2C_Terminate
    or [I2CHW_1_RsrcStatus], I2CHW_ISR_ACTIVE

I2CHW_1_DR 里放置的就是 master 发过来的address,而 I2CHW_H_SLAVE_ADDR 就是pSoc芯片定义的I2C address. 只要根据实际需求把 I2CHW_H_SLAVE_ADDR 换乘其他的值,就可以在程序中任意改变 I2C 的address了。

常见的方法,是读取某些 GPIO 引脚的高低,根据高低不同,把 A 与不同的质进行比较。

英文参考:an2088 Programmable I2C Addressing





  发表于  2006-03-22 17:01  引用Trackback(0) | 编辑 

评论

您好 我想问一下PSOC和单片机进行I2C通信该怎样进行呢? 请指教 或者是否有参考程序可以给我看看 QQ:496888950
yuerxie ()   发表于   2008-10-14 11:18:16

不好意思,前面表达有误,将Slave和Master弄反了。
您好!我目前正在使用PSoC—(CY8C21434,带两个I2C接口),请问PSoC能否既工作在Master状态又工作在Slave状态?我想从一个I2C接口接收数据命令(此时PSoC工作在SLAVE),然后根据数据命令的要求,通过另一个I2C接口控制一个I2C从设备(此时PSoC工作在MASTER)。请问是否可行?如果可行,如何配置?有无相关的Application Note?
Daniel.Chen ()   发表于   2008-06-26 22:56:03

您好!我目前正在使用PSoC—(CY8C21434,带两个I2C接口),请问PSoC能否既工作在Master状态又工作在Slave状态?我想从一个I2C接口接收数据命令(此时PSoC工作在Master),然后根据数据命令的要求,通过另一个I2C接口控制一个I2C从设备(此时PSoC工作在Slave)。请问是否可行?如果可行,如何配置?有无相关的Application Note?
Daniel.Chen ()   发表于   2008-06-26 22:52:09

网上和PSOC相关的东西太少了,只能向您求助了,谢谢了啊!
richyaoyuan ()   发表于   2008-05-15 15:25:25

您好,朋友,我现在在用PSOC做一个设计,I2C部份,我都憋了好几天了,非常,希望能够得到您的指点,谢谢,请加我的QQ,号码是369393101.
richyaoyuan ()   发表于   2008-05-15 15:24:25
发表评论

用户名:

Email:

主页:


   
最后更新






搜索WWW
搜索carol的blog