IIC模拟问题

[复制链接]
1853|19
 楼主| af11050 发表于 2018-11-26 17:04 | 显示全部楼层 |阅读模式
本帖最后由 af11050 于 2018-11-26 17:15 编辑


stc芯片,用两个IO口模拟IIC,读取传感器,可以正常读取数据现在把模拟IIC的SDA脚通过74hc245来扩展使用,接在它的A0脚位, 传感器的sda接在B0脚位

但是程序写DIR=0, OE=0, 读取数据异常, 是不是不能通过这种方式再模拟IIC呢

本帖子中包含更多资源

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

×
linqing171 发表于 2018-11-26 21:31 | 显示全部楼层
SDA是双向的,要切换。
SCL是单向的,DIR不变就可以了。
所以公用SDA,把SCL分成两个,模拟起来简单一些。
airwill 发表于 2018-11-26 21:57 | 显示全部楼层
I2C 并不需要很强的驱动电流, 为啥会使用 245 来推动呢, 找麻烦
cainiao518 发表于 2018-11-26 22:00 | 显示全部楼层
sda需要切换方向
雪山飞狐D 发表于 2018-11-26 23:14 | 显示全部楼层
   两边都要接上拉电阻。。。。。
ayb_ice 发表于 2018-11-27 08:29 | 显示全部楼层
不适合
 楼主| af11050 发表于 2018-11-27 08:48 | 显示全部楼层
airwill 发表于 2018-11-26 21:57
I2C 并不需要很强的驱动电流, 为啥会使用 245 来推动呢, 找麻烦

小白想做个测试板,IIC挂一组8个传感器,传感器的iic地址都是相同的,所以想通过模拟开关来切换,挨个读取
 楼主| af11050 发表于 2018-11-27 08:49 | 显示全部楼层
linqing171 发表于 2018-11-26 21:31
SDA是双向的,要切换。
SCL是单向的,DIR不变就可以了。
所以公用SDA,把SCL分成两个,模拟起来简单一些。 ...

代码里已经写了DIR=0, OE=0, 但是这样模拟出来的IIC取值是乱码
arm86 发表于 2018-11-27 10:48 | 显示全部楼层
我觉得使用 74HC4051 比较合适。
控制 SCL 端就可以。
 楼主| af11050 发表于 2018-11-27 10:54 | 显示全部楼层
arm86 发表于 2018-11-27 10:48
我觉得使用 74HC4051 比较合适。
控制 SCL 端就可以。

io模拟iic,需要读跟写, 245需要不停切换方向,好别扭
arm86 发表于 2018-11-27 10:57 | 显示全部楼层
af11050 发表于 2018-11-27 10:54
io模拟iic,需要读跟写, 245需要不停切换方向,好别扭

用 4051 就不存在切换方向的问题。

评分

参与人数 1威望 +1 收起 理由
af11050 + 1 赞一个!

查看全部评分

arm86 发表于 2018-11-27 11:00 | 显示全部楼层
af11050 发表于 2018-11-27 10:54
io模拟iic,需要读跟写, 245需要不停切换方向,好别扭

直接复用 SDA,控制 SCL 的输出就可以。
 楼主| af11050 发表于 2018-11-27 11:04 | 显示全部楼层
arm86 发表于 2018-11-27 11:00
直接复用 SDA,控制 SCL 的输出就可以。

SCL共用, 控制SDA,才可以节省主控的IO口使用呀
 楼主| af11050 发表于 2018-11-27 11:06 | 显示全部楼层
本帖最后由 af11050 于 2018-11-27 11:08 编辑
arm86 发表于 2018-11-27 11:00
直接复用 SDA,控制 SCL 的输出就可以。

SDA串在一起,而且共VDD,共GND, 一组器件iic地址是相同的,都是上电状态,scl选择切换时,可以正确选择到器件吗
arm86 发表于 2018-11-27 11:07 | 显示全部楼层
af11050 发表于 2018-11-27 11:04
SCL共用, 控制SDA,才可以节省主控的IO口使用呀

那你先试试使用 74HC245 该怎么实现 8 个通道的 I2C 吧。
arm86 发表于 2018-11-27 11:12 | 显示全部楼层
af11050 发表于 2018-11-27 11:06
SDA串在一起,而且共VDD,共GND, 一组器件iic地址是相同的,都是上电状态,scl选择切换时,可以正确选择 ...

那就控制 SDA 端,还是使用 4051。
刚才忘了细看一下 I2C 的启动信号时序。
两线常高,SDA 负跳变后为启动信号。
控制 SDA 端才是正确的做法。
 楼主| af11050 发表于 2018-11-27 11:14 | 显示全部楼层
arm86 发表于 2018-11-27 11:12
那就控制 SDA 端,还是使用 4051。
刚才忘了细看一下 I2C 的启动信号时序。
两线常高,SDA 负跳变后为启 ...

好的,我去试试, 多谢交流啊
ayb_ice 发表于 2018-11-27 15:59 | 显示全部楼层
满足线与功能就可以
雪山飞狐D 发表于 2018-11-27 16:16 | 显示全部楼层
   IO口不值钱,没必要这样搞吧?你搞个74hc245还不如加几毛钱或者1块钱换个管脚多的8位STC单片机。。。。。

评论

测试夹具,一次有好几百个产品的  发表于 2018-11-27 17:04
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

8

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部