0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

m3eY_edn_china 来源:互联网 作者:佚名 2017-10-26 10:39 次阅读

一、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 位数据

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348720
  • 时钟频率
    +关注

    关注

    0

    文章

    48

    浏览量

    20188
  • 模拟电子
    +关注

    关注

    58

    文章

    642

    浏览量

    81294

原文标题:学会这个技术,再也不怕芯片不具有硬件I2C模块了!

文章出处:【微信号:edn-china,微信公众号:EDN电子技术设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32F103利用软件模拟I2C读写EEPROM,超过385个字节就读写不了的原因?

    STM32F103的芯片中,利用软件模拟I2C读写EEPROM,在使用页写入的方式进行读写时,能够读写385个字节,(EEPROM芯片每页为128个字节)。超出去的就读写不了,这会是
    发表于 03-19 07:45

    stm32f4软件模拟I2C读写EEPROM无器件响应是什么原因造成的?

    利用STM32F4软件模拟I2C读写EEPROM时,在检测I2C总线设备时,在等待应答阶段,CPU读取SDA线口状态值为1(GPIO_Rea
    发表于 03-19 06:36

    最简单的总线通讯!I2C通讯总线的原理原来这么好懂

    通讯I2C
    安泰仪器维修
    发布于 :2024年01月02日 11:16:31

    怎样精准的通过软件模拟满足I2C总线的时序及各部分定时的要求?

    怎样精准的通过软件模拟满足I2C总线的时序及各部分定时的要求?
    发表于 11-03 06:23

    使用GPIO模拟I2C的电路设计

    当使用 GPIO 模拟 I2C 时应如何进行电路设计?
    发表于 10-23 08:22

    全面掌握面试必考题I2C协议 - 第12节

    I2C协议
    充八万
    发布于 :2023年09月01日 19:07:43

    NUC240控制通过GPIO eepm模拟I2C

    : NuEdu-EVB-NUC240 v1.0 当用户需要更多的 I2C 频道时, 当微控制器提供时, 用户可以使用 GPIO 模拟 I2C 波形。 例如, 以软件为基础的 NUC24
    发表于 09-01 06:17

    M480 EEPROM使用软件I2C访问

    应用程序: EEPROM 使用软件I2C访问 BSP 版本:M480系列BSP CMSIS V3.03.001 硬件: NuMaker-PFM-M487 V V 3.0 M487 Ver 4.0
    发表于 08-30 08:14

    如何通过GPIO控制EPROM执行仿照I2C软件

    : NuEdu-EVB-NUC240 v1.0 当用户需要更多的 I2C 频道时, 当微控制器提供时, 用户可以使用 GPIO 模拟 I2C 波形。 例如, 以软件为基础的 NUC24
    发表于 08-23 07:49

    如何使用GPIO来模拟I2C进入EPROM

    应用程序: EEPROM 使用软件I2C访问 BSP 版本:M480系列BSP CMSIS V3.03.001 硬件: NuMaker-PFM-M487 V V 3.0 M487 Ver 4.0
    发表于 08-23 06:07

    80 第23.1讲 I2C实验-I2C协议和6U的I2C控制器详解 - 第2

    程序代码I2C协议
    充八万
    发布于 :2023年08月17日 10:03:33

    基于 FPGA 的模拟 I2C协议系统设计

    :基于 FPGA 的模拟 I2C协议设计(中) 基于 FPGA 的 模拟 I2C协议设计(下) 之前也有相关文章介绍,这里超链接一下,仅供各位大侠参考。源码
    发表于 08-14 18:21

    stm32f4软件模拟I2C读写EEPROM无器件响应是什么原因造成的?

    利用STM32F4软件模拟I2C读写EEPROM时,在检测I2C总线设备时,在等待应答阶段,CPU读取SDA线口状态值为1(GPIO_Rea
    发表于 08-07 06:32

    如何更改软件i2c时钟速度?

    如何更改软件i2c时钟速度,谢谢!
    发表于 08-04 16:02

    MCU是否支持从机模式下的I2C线路?

    零件号:FS32K142UAT0VLFT(IC MCU 32 位 256KB 闪存 48LQFP) 在应用中,MCU 计划在从属模式下通过 I2C 线路与主处理器连接。此 MCU 是否
    发表于 06-09 08:44