打印

PSOC的I2C的另一个疑惑

[复制链接]
2372|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你说的情况不符合测量结果

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

使用特权

评论回复
5
PSoC_Rock| | 2008-12-9 15:23 | 只看该作者

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

使用特权

评论回复
6
疯癫球球| | 2017-4-11 17:49 | 只看该作者
我也用了这个函数,也是没有用示波器测到波形,请问怎么回事

使用特权

评论回复
7
msq199058| | 2017-4-14 11:57 | 只看该作者
期待最终解释

使用特权

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

本版积分规则

51

主题

234

帖子

0

粉丝