单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 67|回复: 6
打印 上一主题 下一主题
收起左侧

单片机中i2c数据传输不太理解,求分析

[复制链接]
跳转到指定楼层
楼主
帅WQ 发表于 2019-7-13 18:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这图片里的是i2c读函数,66行给SDA赋值1,然后73行经过或运算给dat赋值,这样dat不应该最后是1111 1111吗?有大佬帮忙解释下吗?就是i2c这里数据是如何传输的还不太了解。

批注 2019-07-13 181807.png (318.29 KB, 下载次数: 1)

批注 2019-07-13 181807.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

沙发
cjm82 发表于 2019-7-14 00:23 | 只看该作者
这个,SDA对应的输入口应该是上拉模式,当IO口悬空或者输入为高时,去读IO口状态为1,但输入低电平时,就会把IO口的电位拉低,去读就会读到0.所以说,每一次读SDA到底是1还是0由该IO口实际输入决定的.另外你这个读程序好像有问题,没看错的话,循环上面应该应该先把SCL拉低再进循环.
回复

使用道具 举报

板凳
admin520 发表于 2019-7-14 09:21 | 只看该作者
这个符号不是或运算?

51黑论坛_c源文件.rar

2.33 KB, 下载次数: 1

回复

使用道具 举报

地板
CTW. 发表于 2019-7-15 11:11 | 只看该作者
你这程序有问题,读数据之前应该设置IO口的模式,数据口为输入,时钟口为输出。
回复

使用道具 举报

5#
wj_yuq 发表于 2019-7-15 12:46 | 只看该作者
具体还是得认真研读I2C总线的时序图,总的来说,SDA和SCL在上拉电阻的作用下高电平是预备状态,注意程序中的延时,要将程序所描述的时间,SDA和SCL的高低电平变化画出图形与I2C总线的时序图比较才能准确地分析和理解到位。
回复

使用道具 举报

6#
372501hft 发表于 2019-7-15 14:06 | 只看该作者
感觉一楼的靠普点。
回复

使用道具 举报

7#
zhanglijin 发表于 2019-7-15 15:37 | 只看该作者
I2C读取数据应该把数据项设置为上拉输入模式,主机放弃对SDA线的占用,只从SDA读取数据,此时SDA线的电平状态是由从机决定的
回复

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51Hei单片机16群 联系QQ:125739409;技术交流QQ群7344883

Powered by 单片机教程网

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