PSOC的I2C的另一个疑惑

[复制链接]
3206|6
 楼主| mzscg 发表于 2008-11-12 16:09 | 显示全部楼层 |阅读模式
如下面一个简单的I2C master写语句:
while(1)
{
I2CHW_bWriteBytes(sla,tb,1,I2CHW_NoStop);
while(!I2CHW_bReadI2CStatus() & I2CHW_WR_COMPLETE);
I2CHW_ClrWrStatus();
}

在没有挂slaver的情况下,,,,用示波器能够不断可以看到SDA和SCL的波形..

1..在写语句中, `slaver没有影应的情况下,,'
while(!I2CHW_bReadI2CStatus() & I2CHW_WR_COMPLETE);
不是一直在等待吗???为什么程序能够不断循环??

2..当写语句没有在while大循环中,即只执行一次的情况下:
依然能不断可以看到SDA和SCL的波形...

大虾们来解释一下PSOC 硬件I2C的这个现象..........


 楼主| mzscg 发表于 2008-11-12 16:14 | 显示全部楼层

我在用的芯片的时候....不是这种现象啊..

在用别的芯片时..

也是用等待的方式来判断I2C的各种事件是否完成(比如成功发送起始们,发送slaver地址等等)

只要事件没有成功,,,,,,,,会一直等待下去,,,程序也死掉了.....



PSOC达人快快现身说法.
PSoC_Rock 发表于 2008-11-14 15:59 | 显示全部楼层

PSoC 的I2C Master由硬件和软件共同作用

PSoC 的I2C Master由硬件发完第一个Slave地址字节后会产生一个中断,检查是否有ACK,如果是NACK,它会将Slave的地址加1再发,如此不断重复,所以你会依然能不断可以看到SDA和SCL的波形...
 楼主| mzscg 发表于 2008-12-9 14:26 | 显示全部楼层

psoc-rock你说的情况不符合测量结果

完全不是这样的.
这么久时间了又来翻这个帖子.

PSoC_Rock 发表于 2008-12-9 15:23 | 显示全部楼层

可以把测量结果贴上来吗?

疯癫球球 发表于 2017-4-11 17:49 | 显示全部楼层
我也用了这个函数,也是没有用示波器测到波形,请问怎么回事
msq199058 发表于 2017-4-14 11:57 | 显示全部楼层
期待最终解释
您需要登录后才可以回帖 登录 | 注册

本版积分规则

51

主题

234

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部