原文地址:https://blog.csdn.net/Derricker406/article/details/77171223

所谓硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的;软件I2C一般是用GPIO管脚,用软件控制管脚状态以模拟I2C通信波形。

硬件I2C的效率要远高于软件的,而软件I2C由于不受管脚限制,接口比较灵活。

模拟I2C 是通过GPIO,软件模拟寄存器的工作方式,而硬件(固件)I2C是直接调用内部寄存器进行配置。如果要从具体硬件上来看,可以去看下芯片手册。因为固件I2C的端口是固定的,所以会有所区别。

至于如何区分它们

  1. 可以看底层配置,比如IO口配置,如果配置了IO口的功能(IIC功能)那就是固件IIC,否则就是模拟
  2. 可以看IIC写函数,看里面有木有调用现成的函数或者给某个寄存器赋值,如果有,则肯定是固件IIC功能,没有的话肯定是数据一个bit一个bit模拟发生送的,肯定用到了循环,则为模拟。
  1. 根据代码量判断,模拟的代码量肯定比固件的要大。
  2. 1. 硬件IIC用法比较复杂,模拟IIC的流程更清楚一些。

    2. 硬件IIC速度比模拟快,并且可以用DMA

    3. 模拟IIC可以在任何管脚上,而硬件只能在固定管脚上。

    软件i2c是程序员使用程序控制SCL,SDA线输出高低电平,模拟i2c协议的时序。一般较硬件i2c稳定,但是程序较为繁琐,但不难。

    硬件i2c程序员只要调用i2c的控制函数即可,不用直接的去控制SCL,SDA高低电平的输出。但是有些单片机的硬件i2c不太稳定,调试问题较多。

硬件IIC和软件IIC区别相关推荐

  1. STM32 驱动 GY-302 光照传感器 BH1750 模块(软件IIC与硬件IIC驱动)

    1.特别说明 ​ 要是不想看原理和过程,直接下拉找代码吧,都是测试过的,很稳定,有硬件I2C驱动的,也有软件模拟I2C驱动的,基于STM32F103系列和STM32F4系列实现,基于标准库实现,条理清 ...

  2. 基于STM32F103C8T6的IIC通信协议及硬件通信和软件OLED温度显示项目

    #一.IIC协议简介 #二.IIC总线系统结构 #三.IIC总线物理层特点 #四.软/硬件IIC总线 #五.IIC总线协议层 #六.IIC通信结构 ##1.空闲状态 ##2.开始信号 ##3.停止信号 ...

  3. STM32F4软件IIC的使用

    1.开发环境 2.说明 3.F4和F1软件IIC区别 GPIO初始化区别 us级延时区别 总结 1.开发环境:硬件:STM32F407IGH6开发板 任意可使用IIC通讯协议传感器 软件:Keil C ...

  4. 【STM32】标准库与HAL库对照学习教程十三--软件IIC控制AT24C02

    [STM32]标准库与HAL库对照学习教程十三--软件IIC控制AT24C02 一.前言 二.准备工作 三.AT24C02(EEPROM)介绍 1.AT24C02简介 2.引脚功能 3.设备地址 四. ...

  5. 【FOC控制】英飞凌TC264无刷驱动方案simplefoc移植(5)-磁编码器移植AS5600 软件IIC

    [FOC控制]英飞凌TC264无刷驱动方案simplefoc移植(5)-磁编码器移植 [FOC控制]英飞凌TC264无刷驱动方案simplefoc移植(5)-磁编码器移植 一.编码器选择 二.通讯方式 ...

  6. STM32使用IIC总线通讯协议在OLED屏幕上显示字符串、汉字、单总线获取DHT11模块温湿度并通过IIC显示到屏幕(软件IIC)

    参考:基于stm32软件IIC的oled显示温湿度 作者:ZPZ DayUp 发布时间: 2021-07-25 20:52:43 网址:https://blog.csdn.net/m0_5619768 ...

  7. 硬件防火墙和软件防火墙有什么区别

    防火墙分为软件防火墙和硬件防火墙两种. 软件防火墙是安装在PC平台的软件产品,它通过在操作系统底层工作来实现网络管理和防御功能的优化. 但对国内市场上的硬件防火墙产品介绍仔细研读后,记者发现,对于硬件 ...

  8. 什么是硬件加密与软件加密,有什么区别?

    硬件加密与软件加密的定义 1.硬件加密是通过专用加密芯片或独立的处理芯片等实现密码运算.将加密芯片.专有电子钥匙.硬盘一一对应到一起时,加密芯片将把加密芯片信息.专有钥匙信息.硬盘信息进行对应并做加密 ...

  9. 软件IIC通信以及源码解析(如何使用)

    以对读取MPU6050为例,解析如何采用IIC通信源码. IIC的的通信,通常三种用途读写.分为: 1: 2: 3: 注:其中最常用的就是1和3了. 对1进行讲解: 指定地址写,通常用作对状态机模块的 ...

最新文章

  1. eclipse 的快捷键
  2. oracle cost cardinality,ORACLE 执行计划中cost cardinality bytes cpu_cost io_cost解释
  3. ABAP 向上取整和向下取整 CEIL FLOOR
  4. spark-1.6.0-cdh5.15.1环境搭建:Local模式和StandAlone
  5. Linux基础之命令练习Day2-useradd(mod,del),groupadd(mod,del),chmod,chown,
  6. collections模块之defaultdict
  7. bzoj2424 [HAOI2010]订货 费用流
  8. springmvc spring mybatis结合 - 代码共享
  9. ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室(四) 添加表情、群聊功能...
  10. Java中static代码块,main函数,构造函数运行顺序
  11. testmeshpro合批_UGUI合批原理笔记
  12. android 按钮复用,Android Button 自带阴影效果另一种解决办法
  13. JSP概述--JSP的起源,本质,运行原理
  14. HBase常用过滤器
  15. 如何实现字体沟边与发光特效?
  16. python爬虫案例-爬取当当网数据
  17. 计算机产业能否迅速发展,工业计算机得到了迅速的发展和全面的普及
  18. js判断对象类型的两种方法
  19. 电脑软件:office文档密码了怎么办,看完你就能自己找回了
  20. 浏览器是如何运作的?

热门文章

  1. TOS和DSCP总结
  2. H5实现一键复制微信并打开微信跳转好友添加页
  3. sqlplus 中的spool命令
  4. office2016实用论文排版技巧
  5. 中标麒麟编译qgis源码+PyQt环境
  6. 2022年磺化工艺考试练习题及模拟考试
  7. Taurus_Linux
  8. Google Earth Engine ——基于ENVISAT的中分辨率成像光谱仪全球土地覆盖300米分辨率数据集
  9. android的app勾选了通知消息,为何Android中大部分锁屏APP都要手动勾选“通知使用权”(Notification Access)?...
  10. 阿里云凌晨回应故障:已全部恢复 将尽快赔偿