单片机
返回首页

基于STM32系列MCU使用软件模拟I2C步骤

2024-04-11 来源:elecfans

一、Bit Bang

关于 Bit Bang 的解释:Use software to control serial communication at general-purpose I/O pins,简单来讲就是使用软件通过 IO 脚去实现 I2C 的时序从而使用 I2C 协议进行通信。


这样做的好处是可以突破硬件上的限制,例如芯片不具有硬件 I2C 模块,或者硬件 I2C 模块损坏,又或者使用硬件 I2C 模块时布线非常麻烦。坏处是需要写代码模拟时序,根据不同的硬件平台和不同的时钟频率,代码中的部分参数是不一样的。


二、代码分析

以下代码基于 STM32 系列 MCU

使用软件模拟 I2C 的步骤如下:

1、设置 GPIO 管脚

设置两个管脚作为 SCL 和 SDA,例如 GPIOA1 和 GPIOA2

2、SCL时钟周期

3、附加设置

这里主要是使用宏定义模拟函数

4、I2C 启动

5、I2C停止

6、发送 8 位数据,返回值为从响应 ACK 标志

7、接收 8 位数据

三、操作实例

以下代码为通过调用上面的基本代码来实现 I2C 通信

1、设置 DAC 寄存器的值

三个参数分比为从机地址,寄存器地址,8 位数据

2、读取 DAC 寄存器的值

两个参数分别为从机地址,寄存器地址,返回数据为 16 位。这是由于某些器件的硬件设计,采用 7 位表示寄存器地址,而每个寄存器包含 9 位数据。更常见的方式为 8 位寄存器地址,一个寄存器 8 位数据,这种方式的代码仅返回 8 位数据,见代码 2。

代码 1,返回 16 位数据,不常见

代码 2,返回 8 位数据


进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦四级调频发射机

  • 500W MOS场效应管电源逆变器,12V转110V/220V

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外开关

  • 12V转110V/220V 500W逆变器

  • DS1669数字电位器

    相关电子头条文章