硬件I2C与模拟I2C

news/2025/1/24 17:35:32/

硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,因而效率要远高于软件模拟的I2C;一般也较为稳定,但是程序较为繁琐。硬件(固件)I2C是直接调用内部寄存器进行配置;而软件I2C是没有寄存器这个概念的。

软件I2C一般是使用GPIO管脚,用软件控制SCL,SDA线输出高低电平,模拟i2c协议的时序。

 

例如下面这段I2C的开始和结束信号,我们使用GPIOB模拟:

 

I2C接线
GPIO引脚模拟I2C引脚
GPIOB11SDA
GPIOB12SCL

                                 

                                       

                                                                                         I2C开始/结束时序图

代码如下:

Void I2C_START(void){GPIOB11 = High;GPIOB12 = High;Delay();GPIOB11 = Low;Delay();GPIOB12 = Low;}Void I2C_STOP(void){GPIOB11 = Low;GPIOB12 = High;Delay();GPIOB11 = High;}

同样,我们可以按照波形完成读/写一个字节的函数,再进一步封装完成更为复杂的功能(发送指令等等)

硬件i2c程序员只要调用i2c的控制函数即可,不用直接的去控制SCL,SDA高低电平的输出。

但是有些单片机的硬件i2c不太稳定,调试问题较多。例如网上很多人吐槽的STM32…

 

主要对比

1.硬件IIC用法比较复杂,模拟IIC的流程更清楚一些。

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

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

 


http://www.ppmy.cn/news/503497.html

相关文章

I2C详解(一)

I2C Bus(Inter-Integrated Circuit Bus) 最早是由Philips半导体(现被NXP收购)开发的两线时串行总线,常用于微控制器与外设之间的连接。要想了解详细I2C协议,目前最新的I2C标准协议是2014年第6版本,如下: I2…

ZED 2i 双目-IMU标定

目录: 前言IMU标定1、编译标定工具2、准备数据集3、标定 Camera-IMU标定1、安装依赖2、编译Kaibr3、制作标定板下载标定板生成标定板target.yaml文件 4、数据采集5、相机标定标定中遇到的问题问题1:问题2 标定结果查看 6、相机-IMU外参标定收集数据标定标…

Unity编辑器扩展-第六集-创建窗口/批量填图

第五集链接:Unity编辑器扩展-第五集-撤回操作/禁止操作/加快捷键_菌菌巧乐兹的博客-CSDN博客 一、本节目标效果展示 1.创建窗口 2.图片批量赋值到物体上 二、创建窗口 这个功能其实也很好理解,我们之前学了点击选择,但我们难免会遇见需要…

Chrome 开发者调试常用工具

Chrome调试工具介绍 ①②③④⑤⑥⑦⑧⑨⑩ 一、Elements-元素 选项说明 styles filter搜索框:查找过滤样式, 包括class名当前选中的元素 查看其伪类效果已经样式给当前选中元素添加class名可以把当前元素class名或者id, 按照css层级添加一…

【Linux】通过find命令删除相关文件

要通过通配符删除Linux目录及其子目录中的相关文件,可以使用find命令来实现。下面是一个示例命令: find /path/to/directory -type f -name "pattern" -delete 请注意将/path/to/directory替换为实际的目录路径,将pattern替换为你…

做好用户体验设计 关键看5个方面

用户来了就走,用户吐槽不好用,用户留不住,好的功能没人用,这到底是怎么回事?问题关键在于好的用户体验设计,而做好用户体验设计,关键看5个方面: 1、是否有用 我们需要考量产品。对用…

网络打印机因IP地址变动导致脱机的解决方法

PC版本win10 某一天因为种种原因导致网络打印机的IP变动了,那么我们在自己PC机上添加的打印机就无法使用了,来看作者是怎么解决的。假设目标IP由192.168.1.16改为192.168.2.195 打开我的打印机和扫面仪菜单

第五天:tibble包

今天学习了tidyverse系列中的tibble包。相比于传统的data.frame,tibble推出了一些新的改变: ####1.tibble可以更早给出了各列的数据类型,没有行名设置,可以存储任意类型,支持任意的列名,自动添加列名 ###…