OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4635|回复: 8

关于iic中的新人问题

[复制链接]

5

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2018-7-25
在线时间
15 小时
发表于 2018-7-25 15:22:50 | 显示全部楼层 |阅读模式
5金钱
①关于原子个给的IIC的例程使用到PB8,PB9,是不是用其他管脚也可以实现,如果我在PB8,PB9上接线到其他从设备,是否会接收到一样的数据,实现一样的功能。
②关于SDA输出输入的问题,如图:
把SDA设置为输入后还能控制SDA的电平吗



悬赏不多,不介意的大佬教教我- -
4LWOWQ{P{@4D0JJ7L{]G5~H.png

最佳答案

查看完整内容[请看2#楼]

1、你提供的程序是模拟的IIC时序,因此用其他管脚依旧可以实现,具有非常强的可移植性。至于3楼说的器件地址,那个是你要接的从设备本身接线所决定的,与你在单片机上使用什么管脚来模拟IIC时序没有任何关系。 2、原则上,一个引脚设置为输入之后不能够再控制它输出电平。但是对于不同器件,也有一些不同:对于STM32系列来讲,一个引脚设置为输入之后可以在程序中向控制这个引脚的输出寄存器写内容,但是实际的引脚不会产生任何输 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2018-7-25 15:22:51 | 显示全部楼层
1、你提供的程序是模拟的IIC时序,因此用其他管脚依旧可以实现,具有非常强的可移植性。至于3楼说的器件地址,那个是你要接的从设备本身接线所决定的,与你在单片机上使用什么管脚来模拟IIC时序没有任何关系。
2、原则上,一个引脚设置为输入之后不能够再控制它输出电平。但是对于不同器件,也有一些不同:对于STM32系列来讲,一个引脚设置为输入之后可以在程序中向控制这个引脚的输出寄存器写内容,但是实际的引脚不会产生任何输出,说白了就是不会有任何作用;对于MSP430系列,往输出寄存器写1是设置引脚为上拉输入,写0是设置引脚为下拉输入(前提是有一个上下拉输入的寄存器中的开关得打开);我觉得楼主的程序应该是从传统51上修改得来的,传统51如果要想从一个引脚读取数据,必须先向这个引脚写1.
十六进制带我飞。
回复

使用道具 举报

5

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2018-7-25
在线时间
15 小时
 楼主| 发表于 2018-7-25 17:50:39 | 显示全部楼层
自顶一下,求回答
回复

使用道具 举报

16

主题

139

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1299
金钱
1299
注册时间
2016-10-18
在线时间
211 小时
发表于 2018-7-25 18:40:15 | 显示全部楼层
因为是模拟IIC 所以改到别的引脚也是可以的,接其他的设备,就要其他设备的地址线不一样,比如同一种芯片,一般会有两三个引脚,你把他接高或者低,这个芯片的地址就改变了。
设置为输入后再输出理论上是不行的,实际效果你可以拿万用表点看一下,原子输出那句话你删掉也不影响的。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-7-26 01:26:44 | 显示全部楼层
多自己测试,实践出真知
回复

使用道具 举报

4

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2018-2-12
在线时间
23 小时
发表于 2018-8-1 12:28:45 | 显示全部楼层
谁说输入模式不能控制输出电平的啊?最简单的,不停地配置输入时候上拉还是下拉就可以啊
回复

使用道具 举报

5

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2018-7-25
在线时间
15 小时
 楼主| 发表于 2018-8-1 23:27:32 | 显示全部楼层
HexAI 发表于 2018-8-1 12:28
谁说输入模式不能控制输出电平的啊?最简单的,不停地配置输入时候上拉还是下拉就可以啊

你是输入模式下怎么还能控制输出了,你做输入却又输出这不就冲突了吗,假如我主设备SDL是输入模式,控制主SDL = 1,再控制从SDL = 1,那么我读出来的SDL是一还是0呢
回复

使用道具 举报

5

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2018-7-25
在线时间
15 小时
 楼主| 发表于 2018-8-1 23:35:49 | 显示全部楼层
很多的地方 发表于 2018-8-1 23:27
你是输入模式下怎么还能控制输出了,你做输入却又输出这不就冲突了吗,假如我主设备SDL是输入模式,控制 ...

说错了,里面的SDL全部为SDA
回复

使用道具 举报

4

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2018-2-12
在线时间
23 小时
发表于 2018-8-7 22:24:48 | 显示全部楼层
很多的地方 发表于 2018-8-1 23:27
你是输入模式下怎么还能控制输出了,你做输入却又输出这不就冲突了吗,假如我主设备SDL是输入模式,控制 ...

不冲突啊,输入有上拉输入、下拉输入和浮空输入,STM32的IO口基本都是双向IO口,输出靠的是连接到VDD的P-MOS和连接到Vss的N-MOS两个MOS管控制的,而输入则通过一个施密特触发器连接到输入数据寄存器,输入和输出的硬件是独立的,完全可以同时控制输入和输出。具体结果看一看参考手册7.3.10,IO口的结构
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-13 19:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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