csq1997 发表于 2013-12-11 09:25:39

两个设备发相同的IIC命令为什么一个可以读出数据,一个...

分析了一周了死活找不出原因,大家看看图分析下,差别在哪里
程序流程如下:
start--硬件地址写0X40--ACK----寄存器地址0X15---ACK--restart---硬件地址读0X41--ACK---接收数据--ACK--接收数据--NOACK--stop。
看了发出的波形图都没问题。
设备1可以读出数据,设备2每次读出的都为0,大家帮忙看看是什么原因。

csq1997 发表于 2013-12-11 09:27:23

设备1,2写数据都是正常的,就是设备2无法读出数据

jacky2011 发表于 2013-12-11 09:37:09

建议楼主逐个击破,先搞定一个的读写,再搞第二个的读写,然后再双飞,最后再多飞

Firman 发表于 2013-12-11 10:13:15

没上拉电阻吧?

csq1997 发表于 2013-12-11 10:17:52

有使用内部4K上拉加外部10k上拉

csq1997 发表于 2013-12-11 10:18:41

写都是正常的就是设备2读出数据全是0

lusson 发表于 2013-12-11 10:41:30

不会是写完之后没有把端口释放吧?

csq1997 发表于 2013-12-11 15:13:45

调的是TI家的一款芯片,看了很多波形都没问题,看来只有拿模拟IIC来试一下了

dz20062008 发表于 2013-12-12 01:21:07

同意7楼的,释放总线才能对第二个器件寻址

gallle 发表于 2013-12-12 07:35:10

2的波形宽度好像比1短

csq1997 发表于 2013-12-12 15:47:41

终于搞定了,硬件IIC跟从器件不匹配造成的,换成模拟IIC搞定。
硬件IIC程序都用了很多年了,期间也用来做了很多IIC器件的控制,都没出现问题。
页: [1]
查看完整版本: 两个设备发相同的IIC命令为什么一个可以读出数据,一个...