搜索
bottom↓
回复: 9

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

[复制链接]

出0入0汤圆

发表于 2019-1-31 11:16:09 | 显示全部楼层 |阅读模式
本帖最后由 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器件。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入475汤圆

发表于 2019-1-31 11:24:14 来自手机 | 显示全部楼层
那个脉冲那么窄是啥鬼?你读芯片id正常吗(如果有的话)?

出0入0汤圆

 楼主| 发表于 2019-1-31 13:20:08 | 显示全部楼层
1a2b3c 发表于 2019-1-31 11:24
那个脉冲那么窄是啥鬼?你读芯片id正常吗(如果有的话)?

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

出0入0汤圆

发表于 2019-1-31 14:11:16 | 显示全部楼层
你先只挂一个dac试试?

出0入475汤圆

发表于 2019-1-31 14:28:47 来自手机 | 显示全部楼层
upli 发表于 2019-1-31 13:20
窄脉冲是Master的SDA脚在输出ACK时较晚,而slave已经切换为输入业读ACK了,总线被电阻上拉到高电平。因为 ...

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

出0入0汤圆

 楼主| 发表于 2019-1-31 17:15:39 | 显示全部楼层
1a2b3c 发表于 2019-1-31 14:28
那我能简单粗暴的认为你的时序不对吗?

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

出0入0汤圆

发表于 2019-2-1 14:13:47 | 显示全部楼层
本帖最后由 laoshuhunya 于 2019-2-1 14:34 编辑

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




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



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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 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失败,重试再读,读出值跟前一次一样,未能读出之前写入的值。

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

出0入0汤圆

 楼主| 发表于 2019-2-2 10:29:34 | 显示全部楼层
leifeng 发表于 2019-1-31 14:11
你先只挂一个dac试试?

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

出20入25汤圆

发表于 2019-2-2 10:33:24 来自手机 | 显示全部楼层
不用怀疑,你自己时序的问题
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 23:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表