社区导航

 
查看: 1414|回复: 12

[求助] 硬件I2C的调试问题求助

[复制链接]

405

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2017-1-9 11:44:34 | 显示全部楼层 |阅读模式
本帖最后由 火火山 于 2017-1-9 11:46 编辑

实现:读取某个寄存器的值                                                                                                                                                       问题:全速运行时,RXBUF得到的是0XFF ,当单步调试时,RXBUF得到的是0X48,得到的值是正确的
请问为什么会出现这样的结果?各位大神们可以提供一下思路吗?

代码如下,使用的是TI的driverlib库写的
初始化如下:
i2c1.PNG
读单个字节代码如下:
i2c2.PNG






回复

使用道具 举报

738

TA的帖子

2

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

荣誉会员勋章

发表于 2017-1-9 13:12:13 | 显示全部楼层
硬件IIC速率限制呗,你得看器件IIC的最高速率是多少,太快的话是不支持的

点评

已经用示波器去抓波形的了,得到的结果就是上面说的那样子,速率不高的,现在的频率是100k,器件IC是可以100k-400k的  详情 回复 发表于 2017-1-9 13:44
亚里士缺德


回复

使用道具 举报

1020

TA的帖子

1

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2017-1-9 13:25:33 | 显示全部楼层
0xff是不是因为iic上拉,默认读出的结果?

点评

不会的,我用示波器抓波形,发送从机地址的时候SDA都能拉低,数值正确,当读数据的时候,就全部高了,所以不懂。。。  详情 回复 发表于 2017-1-9 13:45
没时间解释辣么多了,快上车!!!


回复

使用道具 举报

578

TA的帖子

2

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2017-1-9 13:34:01 | 显示全部楼层
本帖最后由 long521 于 2017-1-9 13:35 编辑

速率高了,拉不下来,或者说是上拉太强了
代表super captain回一贴,

点评

你这个是代表玉老板说的。。  详情 回复 发表于 2017-1-9 13:53
不会的,我用示波器抓波形,发送从机地址的时候SDA都能拉低,数值正确,当读数据的时候,就全部高了,所以不懂。。。 你成了大队长的助理了不?  详情 回复 发表于 2017-1-9 13:46
我是一头搞电子的猪,猪是一种好色的动物,猪八戒就是代表.       


回复

使用道具 举报

754

TA的帖子

2

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2017-1-9 13:39:46 | 显示全部楼层
可以全速跑,然后示波器量一下 是不是一直是高电平

点评

一直在用示波器在测量,示波器得到的结果跟上面说的是一样的。全速跑才能抓到波形,单步调试的话,抓不到波形  详情 回复 发表于 2017-1-9 13:47
物致DIY 欢迎你的加入~
QQ群:646461928 公众号:智物知心致成
小店


回复

使用道具 举报

405

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2017-1-9 13:44:28 | 显示全部楼层
汤权 发表于 2017-1-9 13:12
硬件IIC速率限制呗,你得看器件IIC的最高速率是多少,太快的话是不支持的

已经用示波器去抓波形的了,得到的结果就是上面说的那样子,速率不高的,现在的频率是100k,器件IC是可以100k-400k的


回复

使用道具 举报

405

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2017-1-9 13:45:53 | 显示全部楼层
54chenjq 发表于 2017-1-9 13:25
0xff是不是因为iic上拉,默认读出的结果?

不会的,我用示波器抓波形,发送从机地址的时候SDA都能拉低,数值正确,当读数据的时候,就全部高了,所以不懂。。。


回复

使用道具 举报

405

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2017-1-9 13:46:37 | 显示全部楼层
long521 发表于 2017-1-9 13:34
速率高了,拉不下来,或者说是上拉太强了
代表super captain回一贴, ...

不会的,我用示波器抓波形,发送从机地址的时候SDA都能拉低,数值正确,当读数据的时候,就全部高了,所以不懂。。。

你成了大队长的助理了不?


回复

使用道具 举报

405

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2017-1-9 13:47:56 | 显示全部楼层
皈依 发表于 2017-1-9 13:39
可以全速跑,然后示波器量一下 是不是一直是高电平

一直在用示波器在测量,示波器得到的结果跟上面说的是一样的。全速跑才能抓到波形,单步调试的话,抓不到波形


回复

使用道具 举报

5460

TA的帖子

186

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-1-9 13:53:13 | 显示全部楼层
long521 发表于 2017-1-9 13:34
速率高了,拉不下来,或者说是上拉太强了
代表super captain回一贴, ...

你这个是代表玉老板说的。。
EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,虽然在群里买不到板子,但是可以学会开车;虽然学不到技术,但是可以学会开车;商家勿入!加群暗号:喵


回复

使用道具 举报

2782

TA的帖子

0

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

发表于 2017-1-9 14:09:57 | 显示全部楼层
如果肯定硬件没问题,分析一下外设的读写时序,关注一下数据有效建立的时间。

点评

硬件是没有问题的,因为同样的硬件,我师父调通了的,我现在自己调试 这个建立时间是什么意思?看了规格书,只看见有一个SCL的频率范围,就没有跟I2C有时间相关的数据了  详情 回复 发表于 2017-1-9 14:35
作为一个水军,就是尽量的多回帖,因为懂的技术少,所以回帖水分大,见谅!
EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,商家勿入!加群暗号:喵


回复

使用道具 举报

405

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2017-1-9 14:35:27 | 显示全部楼层
elvike 发表于 2017-1-9 14:09
如果肯定硬件没问题,分析一下外设的读写时序,关注一下数据有效建立的时间。

硬件是没有问题的,因为同样的硬件,我师父调通了的,我现在自己调试
这个建立时间是什么意思?看了规格书,只看见有一个SCL的频率范围,就没有跟I2C有时间相关的数据了


回复

使用道具 举报

405

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2017-1-9 14:43:40 | 显示全部楼层
感谢楼上热情的各位!
解决问题了
方法:在每次置了Start的UCTXSTT位后,需要等待UCTXSTT这个位的置起,就通信正常了,代码如下
  1.     //Send start
  2.     HWREG16(EUSCI_B0_BASE + OFS_UCBxCTLW0) |= UCTXSTT;
  3.     while(HWREG16(EUSCI_B0_BASE + OFS_UCBxCTLW0) & UCTXSTT);
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2018-12-17 17:24 , Processed in 0.364314 second(s), 18 queries , Gzip On, MemCache On.

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