打印

IIC模拟问题

[复制链接]
1551|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需要切换方向

使用特权

评论回复
5
雪山飞狐D| | 2018-11-26 23:14 | 只看该作者
   两边都要接上拉电阻。。。。。

使用特权

评论回复
6
ayb_ice| | 2018-11-27 08:29 | 只看该作者
不适合

使用特权

评论回复
7
af11050|  楼主 | 2018-11-27 08:48 | 只看该作者
airwill 发表于 2018-11-26 21:57
I2C 并不需要很强的驱动电流, 为啥会使用 245 来推动呢, 找麻烦

小白想做个测试板,IIC挂一组8个传感器,传感器的iic地址都是相同的,所以想通过模拟开关来切换,挨个读取

使用特权

评论回复
8
af11050|  楼主 | 2018-11-27 08:49 | 只看该作者
linqing171 发表于 2018-11-26 21:31
SDA是双向的,要切换。
SCL是单向的,DIR不变就可以了。
所以公用SDA,把SCL分成两个,模拟起来简单一些。 ...

代码里已经写了DIR=0, OE=0, 但是这样模拟出来的IIC取值是乱码

使用特权

评论回复
9
arm86| | 2018-11-27 10:48 | 只看该作者
我觉得使用 74HC4051 比较合适。
控制 SCL 端就可以。

使用特权

评论回复
10
af11050|  楼主 | 2018-11-27 10:54 | 只看该作者
arm86 发表于 2018-11-27 10:48
我觉得使用 74HC4051 比较合适。
控制 SCL 端就可以。

io模拟iic,需要读跟写, 245需要不停切换方向,好别扭

使用特权

评论回复
11
arm86| | 2018-11-27 10:57 | 只看该作者
af11050 发表于 2018-11-27 10:54
io模拟iic,需要读跟写, 245需要不停切换方向,好别扭

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

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
af11050 + 1 赞一个!
12
arm86| | 2018-11-27 11:00 | 只看该作者
af11050 发表于 2018-11-27 10:54
io模拟iic,需要读跟写, 245需要不停切换方向,好别扭

直接复用 SDA,控制 SCL 的输出就可以。

使用特权

评论回复
13
af11050|  楼主 | 2018-11-27 11:04 | 只看该作者
arm86 发表于 2018-11-27 11:00
直接复用 SDA,控制 SCL 的输出就可以。

SCL共用, 控制SDA,才可以节省主控的IO口使用呀

使用特权

评论回复
14
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选择切换时,可以正确选择到器件吗

使用特权

评论回复
15
arm86| | 2018-11-27 11:07 | 只看该作者
af11050 发表于 2018-11-27 11:04
SCL共用, 控制SDA,才可以节省主控的IO口使用呀

那你先试试使用 74HC245 该怎么实现 8 个通道的 I2C 吧。

使用特权

评论回复
16
arm86| | 2018-11-27 11:12 | 只看该作者
af11050 发表于 2018-11-27 11:06
SDA串在一起,而且共VDD,共GND, 一组器件iic地址是相同的,都是上电状态,scl选择切换时,可以正确选择 ...

那就控制 SDA 端,还是使用 4051。
刚才忘了细看一下 I2C 的启动信号时序。
两线常高,SDA 负跳变后为启动信号。
控制 SDA 端才是正确的做法。

使用特权

评论回复
17
af11050|  楼主 | 2018-11-27 11:14 | 只看该作者
arm86 发表于 2018-11-27 11:12
那就控制 SDA 端,还是使用 4051。
刚才忘了细看一下 I2C 的启动信号时序。
两线常高,SDA 负跳变后为启 ...

好的,我去试试, 多谢交流啊

使用特权

评论回复
18
ayb_ice| | 2018-11-27 15:59 | 只看该作者
满足线与功能就可以

使用特权

评论回复
19
雪山飞狐D| | 2018-11-27 16:16 | 只看该作者
   IO口不值钱,没必要这样搞吧?你搞个74hc245还不如加几毛钱或者1块钱换个管脚多的8位STC单片机。。。。。

使用特权

评论回复
评论
af11050 2018-11-27 17:04 回复TA
测试夹具,一次有好几百个产品的 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

8

帖子

0

粉丝