当前位置: 首页 > news >正文

STM32使用IIC通信的引脚配置问题

STM32使用IIC通信的引脚配置问题

在使用IIC通信时,遇到引脚配置问题,记录一下:
IIC的两个引脚SDA和SCL都要求既能输入又能输出。

问题

SDA线是由不同的器件分时控制的,这样就会有一个问题:当一个器件主动置高或者置低时,如果另一个器件发出相反电平,就会造成短路。

如果将SDA引脚配置成推挽模式,就会有短路的风险。

ALIENTEK是这样解决的:在主机(单片机)控制SDA线时,将其SDA引脚配置成推挽输出;在从机(EEPROM)控制SDA线时,将单片机的引脚配置成上拉/下拉输入,用频繁的配置切换来避免这个问题。

但是这样做感觉比较麻烦,所以STM32有一个开漏的配置,它与推挽有点像,但不完全一样。

开漏模式:输出寄存器上的’0’激活N-MOS,而输出寄存器的’1’将端口置于高阻状态(P-MOS从不被激活)。

推挽模式:输出寄存器上的’0’激活N-MOS,而输出寄存器的’1’将激活P-MOS。

在这里插入图片描述

因此,使用开漏就能很好的解决这个问题:当单片机的SDA引脚置低时,SDA线被拉低;当单片机的SDA引脚置高时,实际上引脚是浮空的,SDA线通过外接上拉电阻被VCC拉高(IIC的SDA、SCL两条线都要通过上拉电阻接到VCC,典型接法),这样就不会出现短路的状况,很巧妙。(接一个外接上拉电阻就类似于有一根弹簧,缓缓地将引脚从浮空状态拉到高电平)

http://www.lryc.cn/news/131089.html

相关文章:

  • 题解 | #K.First Last# 2023牛客暑期多校10
  • Python 程序设计入门(025)—— 使用 os 模块操作文件与目录
  • excel逻辑函数篇1
  • 前端基础(Vue的模块化开发)
  • SystemVerilog interface使用说明
  • 机器人制作开源方案 | 送餐机器人
  • Gradio部署应用到服务器不能正常访问
  • 数据暴涨时代,该如何数据治理?_光点科技
  • 2021年03月 C/C++(三级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • GPT-5出世?OpenAI GPT-5商标已注册
  • 优雅的使用 Dockerfile 定制镜像
  • limit的用法mysql
  • clickhouse Checksum doesn‘t match: 问题修复
  • 企业如何开展个人信息安全影响评估(PIA)二
  • android TextView 超出长度使用省略号
  • c++ | 字节转换 | 字长 | 机器位数
  • 7-4 交换最小值和最大值
  • 解决Pycharm的Settings中Project不见了也无法选择Python Interpreter的方法
  • AWS EKS 集群自动扩容 Cluster Autoscaler
  • excel中有哪些通配符、excel配置问题,数学函数篇1之sum系列
  • 工控行业需要熟悉的工业级通信协议
  • 力扣题解(1030. 距离顺序排列矩阵单元格),带注释
  • 每天一道leetcode:剑指 Offer 34. 二叉树中和为某一值的路径(中等图论深度优先遍历递归)
  • 利用POM完成脚本分离实现企业级自动化(POM设计模式+页面的框架封装+测试报告截图)
  • 嵌入式设计中对于只有两种状态的变量存储设计,如何高效的对循迹小车进行偏差量化
  • day53 第九章 动态规划part14● 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序和 动态规划
  • shell编程 基础
  • 人工智能在网络安全中的应用: 分析人工智能、机器学习和深度学习等技术在预测、检测和应对网络攻击中的作用
  • 使用 Redis 实现异步队列
  • RocketMQ、Dashboard部署以及安全设置