• STM32引脚做输入时,有开漏,浮空输入,弱上拉,弱下拉,等多种方式,如何选择????


              之前做DS18B20实验时,一直在纠结一个问题,数据线既需要接收数据,又需要传输数据,应该选择什么输入输出方式呢?

    最开始的时候选择了推挽输出和浮空输入切换的方式,当引脚作为输入的时候切换成浮空输出,当引脚作为输出的时候又切换成推挽输出,但是这样弄很麻烦不停地换来换去,最终这个实验没有成功,主要原因应该是时序的问题,过了 一段时间以后,突然想起之前在Ti申请过一片TMP101的I2C接口的温度传感器,之前那个没弄出来很不甘心,这次在心里暗下决心一定要把这个芯片调通!

           要弄好这个芯片首先遇到的问题,依然是端口的输入输出问题,这回我看了很多网友写的I2C总线的代码,绝大多数都是用推挽输出加上拉电阻实现双向数据传输的,所以我也这么干了,在芯片SDA脚加了一个5.1K的上拉电阻,刚开始用示波器看程序的时候发现SDA电平总是高,我开始有点不赖烦了,最后发现居然是示波器探头没接好(我发现有很多时候,我都会犯这种很低级的错误),就这样,在时序上花一些功夫后最后纵欲调通了。调通知后,我马上又 改配置,换成弱上拉的方式,把5.1K的上拉电阻给撤了,这样也没问题。

    其实弱上拉说白了就是,开漏输出加上拉电阻,也就是说STM32引脚的弱上拉方式就是ST公司为用户提供的一个数据双向传输口。

    同理,弱下拉就是开漏输出加下拉电阻,同样是双向数据传输口。因此大家基本上不需要用切换输出方式的方法来处理双向数据传输的问题。

    //********************************************************************************************************

    附上我在网上荡的别个的解释:

    上拉就是输入高电平,然后接一个上拉电阻(起保护作用),在你目前开发学习时,只需要知道上拉就表示该端口在默认情况下输入为高电平
    下拉就相反了,指输入接低电平,然后接一个下拉电阻(关于上拉电阻与下拉电阻,设计比较多的数电模电知识,此处就略过,反正其保护电路的作用)
    浮空,顾名思义,就相当与此端口在默认情况下什么都不接,呈高阻态,这种设置在数据传输时用的比较多,譬如,你之后学习的I2C实验
    这三种,可能只有浮空稍微深奥一点了

    //**************************************************************************************************************************************

    IO配置输入的时候有你说的三种模式外还有模拟输入。

    上拉输入模式:区别在于没有输入信号的时候默认输入高电平(因为有弱上拉)。

    下拉输入模式:区别在于没有输入信号的时候默认输入低电平(因为有弱下拉)。

    对于浮空输入模式顾名思义也就是输入什么信号才是什么信号,对于浮空输入要保证有明确的输入信号。

  • 相关阅读:
    pycharm中启动Django方法
    Python ——selenium报错 'chromedriver.exe' executable needs to be in PATH
    软件测试
    C#&.Net干货分享- 构建PrinterHelper直接调用打印机相关操作
    C#&.Net干货分享- iTextSharp导出数据源到PDF
    C#&.Net干货分享-构建Aocr_ImageHelper读取图片文字做解析
    C#&.Net干货分享-构建后台自动定时任务的源码
    SQL Server清理数据库日志的脚本-干货
    SQL Server通过函数把逗号分隔的字符串拆分成数据列表的脚本-干货
    SQL Server通过定义函数返回字段数据列表模板-干货
  • 原文地址:https://www.cnblogs.com/huazhongwang/p/STM32.html
Copyright © 2020-2023  润新知