• I2C知识大全系列三 —— I2C驱动之单片机中的I2C


    两种方式

    单片机中的I2C驱动有两种方式。一种方式是用专用硬件I2C控制器实现,这种方式简单易行,品质也容易控制,只是会增加硬件成本方面的压力。另一种方式是用纯软件方式实现,这种方式几乎无硬件成本方面的考虑。

    主要对比:

    • (1)硬件I2C用法比较复杂,模拟IIC的流程更清楚一些
    • (2)硬件I2C速度比模拟快,并且可以用DMA

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

    硬件I2C

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

     I2C控制器操作代码STM32系列单片机)

     

    收发的三种方式:

    • 中断
    • 轮询
    • DMA

    中断和轮询可以收发任意组合。

    软件I2C

    软件I2C一般是选择单片机中的任意两个空闲GPIO口(管脚复用都选择最基本的GPIO),其中一个口线作为时钟线(SCL),另一个口线作为数据线(SDA),与I2C设备的SCLSDA一一对应连接,用软件控制GPIO口即SCLSDA输出高低电平,模拟I2C总线的时序,从而与I2C设备进行通信。

    GPIO模拟I2C程序

    起始(start)

    时钟线(SCL)高电平,数据线(SDA)从高电平跳变到低电平。代码如下:

    结束(stop)

    时钟线(SCL)在高电平期间,数据线(SDA)由低电平向高电平跳变。

    发送

    主机发送一个字节到IIC总线。

    主机从IIC总线读取一个字节数据

  • 相关阅读:
    PAT乙级 1001 害死人不偿命的(3n+1)猜想
    今天写了一个可以测试并发数和运行次数的压力测试代码。(Java)
    矢量图形编辑软件illustrator 2023 mac软件特点
    黑客大牛是怎样练成的?
    移除元素(双指针)
    NC14695 不可名状之物
    Vue中关于this指向的问题
    初始Tomcat(Tomcat的基础介绍)
    大数据(9d)Flink转换算子Transform
    Worthington丨Worthington 蛋白酶K(Proteinase K)说明书
  • 原文地址:https://blog.csdn.net/phmatthaus/article/details/127456807