打印

对于这个图,该设置为推挽、还是开漏输出?

[复制链接]
6098|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 huhu2009 于 2010-5-22 21:57 编辑


图1:STM32F10X的IO端口

图2:一个实际连接

请问:对于SO, SI, SCK, CS,GPIO端口该设置为哪种模式?
沙发
wgggjfg| | 2010-5-22 22:02 | 只看该作者
SO,SCK, CS推挽输出
SI,上拉输入

使用特权

评论回复
板凳
huhu2009|  楼主 | 2010-5-22 22:09 | 只看该作者
本帖最后由 huhu2009 于 2010-5-22 22:33 编辑

代码里,SI配置为输入浮空,为什么呢,为什么不是上拉或下拉呢?仅仅是因为没有外接上拉、下拉电阻?不应该是由电路本身决定么,电路需要上拉,才外接上拉,而不是接了上拉电阻就成输入上拉了,不是么?

从图1的结构来看,应该是推挽输出啊,为什么它却说“推挽、开漏或关闭”?

使用特权

评论回复
地板
xwj| | 2010-5-22 22:42 | 只看该作者
开漏,然后外接上拉电阻更好些

使用特权

评论回复
5
huhu2009|  楼主 | 2010-5-22 22:49 | 只看该作者
从图1的(输出驱动器)结构来看,应该是推挽输出啊,哪位能否说详细点
我在网上也查阅了不少,但大都说的不清楚,而且相互装载,所以还是不太懂,懂的请说说呗

使用特权

评论回复
6
香水城| | 2010-5-23 09:12 | 只看该作者
楼主位的图中,如果在输出端不控制上边的P-MOS(始终关闭,相当于断路),只控制下边的N-MOS,就是开漏输出;如果同时控制P-MOS和N-MOS,则是推挽输出。

使用特权

评论回复
7
huhu2009|  楼主 | 2010-5-23 11:02 | 只看该作者
本帖最后由 huhu2009 于 2010-5-23 12:40 编辑

是否可以这样理解:
1)凡是见到右边这样的(集电极开路、漏极开路),就外加上拉电阻、GPIO端口设置为开漏输出;
2)凡是见到左边那样的,就设置GPIO端口为推挽输出;
不知道这两点理解对不对?

Figure2.JPG (7.61 KB )

Figure2.JPG

使用特权

评论回复
8
xuyiyi| | 2010-5-23 18:02 | 只看该作者
恭喜!
LS理解正确!

使用特权

评论回复
9
pkat| | 2010-5-23 19:45 | 只看该作者
是这样的

使用特权

评论回复
10
hsbjb| | 2010-5-23 20:02 | 只看该作者
6楼,上下两个MOS如何控制

使用特权

评论回复
11
huhu2009|  楼主 | 2010-5-23 22:09 | 只看该作者
输出算是明白了。那么 输入浮空,   输入上拉、下拉,  模拟输入的区别呢
我的理解是:
1)输入上拉、下拉用于集电极开路、漏极开路电路中
2)模拟输入,顾名思义,是指输入的是模拟信号
3)其余情况就是输入浮空
我觉得这个理解肯定哪儿有问题,请高手指教!

使用特权

评论回复
12
huhu2009|  楼主 | 2010-5-24 18:29 | 只看该作者
要沉了……谁来说说呀

使用特权

评论回复
13
香水城| | 2010-5-25 09:52 | 只看该作者
输出算是明白了。那么 输入浮空,   输入上拉、下拉,  模拟输入的区别呢
我的理解是:
1)输入上拉、下拉用于集电极开路、漏极开路电路中
2)模拟输入,顾名思义,是指输入的是模拟信号
3)其余情况就是输入浮空
我 ...
huhu2009 发表于 2010-5-23 22:09


你这是典型的读死书。

没错,模拟输入肯定是指输入的是模拟信号。

至于其它方式,则要具体情况具体分析,根据实际情况决定。如外部电路已经有上拉或下拉,则不必使用内部的上拉或下拉。

使用特权

评论回复
14
huhu2009|  楼主 | 2010-5-25 10:11 | 只看该作者
本帖最后由 huhu2009 于 2010-5-25 10:12 编辑

从什么是电容开始看,也就上网看了几天,还没到“懂”的地步,也难怪BZ说是“读死书”~
我这里单是针对某电路连接如何对GPIO端口进行设置,如:
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
香版说的“如外部电路已经有上拉或下拉,则不必使用内部的上拉或下拉”我不太明白,GPIO端口内部的电路不是死的么,“不必使用内部的上拉或下拉”是什么意思呢?
上面代码里对GPIO_Mode的设置,到底是依据GPIO端口内部电路、还是外部连接?

使用特权

评论回复
15
香水城| | 2010-5-25 10:21 | 只看该作者
你的程序当然是配置内部的GPIO模块的,但配置的方式必须配合外部的电路,要知道没有外部电路,空谈内部应该如何配置是没有意义的。

使用特权

评论回复
16
huhu2009|  楼主 | 2010-5-25 11:03 | 只看该作者
本帖最后由 huhu2009 于 2010-5-26 15:19 编辑

《STM32参考手册》里讲到:
8.1.8  输出配置当I/O端口被配置为输出时:
● 输出缓冲器被激活
─ 开漏模式:输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’将端口置于高阻状态(P-MOS从不被激活)。
─ 推挽模式:输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’将激活P-MOS。
● 施密特触发输入被激活● 弱上拉和下拉电阻被禁止
● 在开漏模式时,对输入数据寄存器的读访问可得到I/O状态
● 在推挽式模式时,对输出数据寄存器的读访问得到最后一次写的值。

不太明白……?

使用特权

评论回复
17
huhu2009|  楼主 | 2010-5-25 20:06 | 只看该作者
论坛最近似乎冷清了许多……

使用特权

评论回复
18
哇西小蕾| | 2010-5-26 20:13 | 只看该作者
希望大家踊跃发言,我顶先

使用特权

评论回复
19
司徒老鹰| | 2010-5-26 21:45 | 只看该作者
看了半天看不明白

使用特权

评论回复
20
huhu2009|  楼主 | 2010-5-27 09:49 | 只看该作者
STM32的GPIO每个端口内部电路都一样(都是推挽),对于外部连接,比如连接到矩阵键盘(的行)用开漏输出、而连接到SPI Flash(的SI, SCK)则用推挽输出,都是直接相连,中间没有任何元件。为什么?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

163

帖子

1

粉丝