upli 发表于 2019-1-31 11:16:09

[求助]DAC8574芯片写入值与读出不匹配,Datasheet无法找到解释释

本帖最后由 upli 于 2019-1-31 13:19 编辑

各位坛友,有没有用过DAC8574的,现有一个时序,对比datasheet,看不出什么错误,但读出的值和写入的不能匹配起来。
调不出来,这个年过得也不会安稳了,请教各位大神了:
如图,对I2C地址Pin 0000的片子的channe0写入0D40,读出0c00。
图中窄脉冲是Master的SDA脚在输出ACK时较晚,而slave已经切换为输入业读ACK了,总线被电阻上拉到高电平。因为此时SCL为低,所以此SDA线的跳动没有影响。
已经确认,写入的DAC code可以在输出Pin上测到对应电压,但读入值不对。
PS.我的I2C总线上挂了十几个DAC8574器件。



1a2b3c 发表于 2019-1-31 11:24:14

那个脉冲那么窄是啥鬼?你读芯片id正常吗(如果有的话)?

upli 发表于 2019-1-31 13:20:08

1a2b3c 发表于 2019-1-31 11:24
那个脉冲那么窄是啥鬼?你读芯片id正常吗(如果有的话)?

窄脉冲是Master的SDA脚在输出ACK时较晚,而slave已经切换为输入业读ACK了,总线被电阻上拉到高电平。因为此时SCL为低,所以此SDA线的跳动没有影响。

leifeng 发表于 2019-1-31 14:11:16

你先只挂一个dac试试?

1a2b3c 发表于 2019-1-31 14:28:47

upli 发表于 2019-1-31 13:20
窄脉冲是Master的SDA脚在输出ACK时较晚,而slave已经切换为输入业读ACK了,总线被电阻上拉到高电平。因为 ...

那我能简单粗暴的认为你的时序不对吗?

upli 发表于 2019-1-31 17:15:39

1a2b3c 发表于 2019-1-31 14:28
那我能简单粗暴的认为你的时序不对吗?

有瑕疵,但没错误。因为SCL为低时,SDA线的跳变无所谓。

laoshuhunya 发表于 2019-2-1 14:13:47

本帖最后由 laoshuhunya 于 2019-2-1 14:34 编辑

I2C总线1千个人有1千种写法,貌似都可以工作,差别只在于稳定性,包括在长线、多主从、带竞争和时钟扩展、支持重入、错误定位方面的表现。
如果你的I2C总线有状态反馈,5分钟内就可以定位问题,类似这样的:
   总线状态寄存器 Status_MI2C 说明:
   
    (1)Status_MI2C 变量的值在每次调用带总线竞争仲裁功能的函数后被更新,
         用户应用程序可通过读取该变量获知本次访问I2C总线的结果(状态)。
         
    (2)Status_MI2C 值表示意义如下:
      “0xAA”表示正常;
      “0x09”表示超时;
      “0x07”表示竞争失败;
      “0x00”表示器件地址无应答;
      “0x10”表示10位器件地址的低字节无应答;
      “0x11”表示数据地址无应答;
      “0x12”表示重复方向码无应答;
      “0x13”表示数据内容无应答;
      “0x21”表示Status_MI2C的值未更新;
      “0xFF”表示函数参数错误。

static/image/hrline/1.gif

你这个时序看起来没有明显问题,但在SCL上升沿,SDA建立时间是否足够?另外,注意各个器件地址有无冲突。



如果你用的是模拟I2C总线,我或许可以帮到你。无论如何,年还是要安安稳稳得过{:titter:}

upli 发表于 2019-2-2 10:25:47

本帖最后由 upli 于 2019-2-2 10:33 编辑

laoshuhunya 发表于 2019-2-1 14:13
I2C总线1千个人有1千种写法,貌似都可以工作,差别只在于稳定性,包括在长线、多主从、带竞争和时钟扩展、 ...

已经确认写入是可以成功的,DAC模拟通道有更新。读回,我也怀疑地址有重复,导致有的片回复的高电平,被其它片拉低。但是,似乎也解释不通。因为先写入,再读check是连续的,如果有地址重复,那么写的时候,两个地址相同片子也应该同时写入了。
另外I2C总线速度是6.25K,已经从100K频率降了很多。数据变化都是在SCL电平中间,建立保持时间应该足够,示波器抓图也证实了波形良好。
而且读check失败,重试再读,读出值跟前一次一样,未能读出之前写入的值。

暂时放下,后面再调吧,过年先。

upli 发表于 2019-2-2 10:29:34

leifeng 发表于 2019-1-31 14:11
你先只挂一个dac试试?

准备后面单独焊接个片子,单个调下试。我也有怀疑过地址设置重复问题,但写+读check是连续的,又解释不通。年后再战。

chenchaoting 发表于 2019-2-2 10:33:24

不用怀疑,你自己时序的问题
页: [1]
查看完整版本: [求助]DAC8574芯片写入值与读出不匹配,Datasheet无法找到解释释