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

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

热门推荐

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

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

收藏 人收藏
分享:

评论

相关推荐

STM32中使用IO口作为中断源遇到的问题

程序中目的:通过设置PA10作为中断源,当PA10上升沿时进入中断; 遇到的问题:    1.运行初始化中断配置程序后...

发表于 12-17 16:48 108次 阅读
STM32中使用IO口作为中断源遇到的问题

纯手工打造-allegro软件使用基础

1、作为PCB设计工程师来说,我们一般需要用到的软件如下: 原理图设计工具(OrCAD Capture) PCB设计工具(PCB ...

发表于 12-17 10:47 126次 阅读
纯手工打造-allegro软件使用基础

分析一下uC/OS-III和FreeRTOS的区别

在阅读完uC/OS-III(V3.03.01)和FreeRTOS(V10.0.1)的源码后,我对RTOS有了较深的认识。现将它们之间的一些区...

发表于 12-17 10:31 125次 阅读
分析一下uC/OS-III和FreeRTOS的区别

请问谁用STM32的LL库

最近想学习STM32的LL库,HAL库编译起来很慢,标准库又不更新了,所以选择用LL库,有LL库的大侠们麻烦发一份或者发一...

发表于 12-17 08:54 51次 阅读
请问谁用STM32的LL库

请问st-link v2仿真器不支持stm32L4系列吗?

我手头上有一个st-link v2的仿真器,使用STM32 ST-LINK Utility工具去连接stm32f104和stm32f407的板子,都是可以正常连...

发表于 12-17 08:53 66次 阅读
请问st-link v2仿真器不支持stm32L4系列吗?

请问stm32L03系列的单片机那种模式最省电还有中断

请教下,stm32L03 系列的单片机,那种模式最省电还有中断能够唤醒 ?? 我目前使用的是 PWR_STOP_RTC 模式,目前可...

发表于 12-17 08:52 72次 阅读
请问stm32L03系列的单片机那种模式最省电还有中断

stm32f103c8t6 st-link能识别目标芯片但不能下载

发表于 12-17 08:51 81次 阅读
stm32f103c8t6 st-link能识别目标芯片但不能下载

Linux下移植mbed os到nucleo_f072开发板

请问有人做过在linux下移植mbed os到stm32f0系列的开发板吗? 或者分享一下移植思路也行,谢谢啦。 ...

发表于 12-17 08:49 59次 阅读
Linux下移植mbed os到nucleo_f072开发板

STM32F407使用FatFS,发现跟文件夹相关函数命令都可操作,但不能操作文件的函数

STM32F407使用FatFS,发现跟文件夹相关函数命令都可操作,就是不能操作文件的函数,请问这是为什么?...

发表于 12-17 08:48 60次 阅读
STM32F407使用FatFS,发现跟文件夹相关函数命令都可操作,但不能操作文件的函数

请问stm32栈区和堆区的如何设置大小

我在stm32f103c8 20k ram上跑着RT-Thread系统最近一直有个问题跑个半小时片子就死掉了。代码中找不到问题现在怀疑是ram不够用...

发表于 12-17 08:48 62次 阅读
请问stm32栈区和堆区的如何设置大小

STM32单片机教程之STM32自学笔记的详细资料说明

本文档的主要内容详细介绍的是STM32单片机教程之STM32自学笔记的详细资料说明。

发表于 12-17 08:00 18次 阅读
STM32单片机教程之STM32自学笔记的详细资料说明

ALIENTEK MiniSTM32开发板及模块元器件AD9和99SE的封装库免费下载

本文档的主要内容详细介绍的是ALIENTEK MiniSTM32开发板及模块元器件AD9和99SE的....

发表于 12-17 08:00 11次 阅读
ALIENTEK MiniSTM32开发板及模块元器件AD9和99SE的封装库免费下载

如何学习STC单片机详细STC单片机资料说明

在当前,电子信息类专业的大中专学生和想掌握产品硬件设计的工程师一般都会采用STC系列单片机作为入门的....

的头像 单片机精讲吴鉴鹰 发表于 12-15 10:50 260次 阅读
如何学习STC单片机详细STC单片机资料说明

电力电子技术发展史及应用

电力电子技术可以认为就是应用于电力领域的电子技术。电子技术包括信息电子技术和电力电子技术两大分支,通....

的头像 宽禁带半导体技术创新联盟 发表于 12-14 14:41 144次 阅读
电力电子技术发展史及应用

STM32单片机的bootloader设计流程解析资料分析

stm32在内部有硬件bootloader,但那是在生产烧录时使用的。stm32在flash开头的4....

发表于 12-13 16:45 49次 阅读
STM32单片机的bootloader设计流程解析资料分析

如何在STM32微控制器引导加载器中使用USART协议的详细资料说明

本应用程序说明描述了STM32微控制器引导加载器中使用的USART协议。它详细描述了每个支持的命令。....

发表于 12-13 15:20 36次 阅读
如何在STM32微控制器引导加载器中使用USART协议的详细资料说明

STM32F101xx和STM32F103xx微控制器的数据手册免费下载

  本参考手册针对应用开发,提供关于如何使用STM32F101xx 和STM32F103xx 微控制....

发表于 12-11 17:33 57次 阅读
STM32F101xx和STM32F103xx微控制器的数据手册免费下载

STM32时钟配置设计中的常见问题解析

在线调试的朋友应该知道,你点一下复位按钮,软件会跳转到下图的位置,其实可以看到复位之后第一个执行的函....

发表于 12-11 16:04 79次 阅读
STM32时钟配置设计中的常见问题解析

STM32F103VET6最小系统板电路原理图资料免费下载

本文档的主要内容详细介绍的是STM32F103VET6最小系统板电路原理图资料免费下载。

发表于 12-11 08:00 50次 阅读
STM32F103VET6最小系统板电路原理图资料免费下载

使用STM32CubeMx配置时容易忽视的一个地方

这里跟大家分享一个在使用该图形化配置工具做各外设功能配置时容易忽略的地方。既然说是容易忽略的地方,它....

的头像 ST MCU 信息交流 发表于 12-10 14:26 305次 阅读
使用STM32CubeMx配置时容易忽视的一个地方

红牛STM32开发板详细电路原理图资料免费下载

本文档的主要内容详细介绍的是红牛STM32开发板详细电路原理图资料免费下载。

发表于 12-10 08:00 47次 阅读
红牛STM32开发板详细电路原理图资料免费下载

如何移植uCOS-III到STM32开发板详细教程免费下载

本文档的主要内容详细介绍的是如何移植uCOS-III到STM32详细教程免费下载。

发表于 12-07 11:24 47次 阅读
如何移植uCOS-III到STM32开发板详细教程免费下载

STM32F429标准库串口的收发通信程序的详细资料免费下载

本文档的主要内容详细介绍的是STM32F429标准库串口的收发通信程序的详细资料免费下载,此程序可实....

发表于 12-07 08:00 33次 阅读
STM32F429标准库串口的收发通信程序的详细资料免费下载

STM32入门教程之如何提高STM32的学习效率详细资料说明

每当我们在入门之前(ARM 是这样,DSP 也一样),总会会有很多疑问,会有很多顾虑。我们渴望知道学....

发表于 12-06 08:00 123次 阅读
STM32入门教程之如何提高STM32的学习效率详细资料说明

STM32单片机PCB源文件详细资料免费下载

本文档的主要内容详细介绍的是STM32单片机PCB源文件详细资料免费下载。

发表于 12-05 08:00 82次 阅读
STM32单片机PCB源文件详细资料免费下载

如何使用STM32设计一个嵌入式MP3播放器

本文采用STM32系列微控制器, 结合解码芯片VS1003、SD卡、LCD等外围设备设计并实现了MP....

发表于 12-04 08:00 79次 阅读
如何使用STM32设计一个嵌入式MP3播放器

奋斗版STM32开发板Mini板硬件说明书免费下载

AMS1117-3.3 输入+5V,提供 3.3V 的固定电压输出,为了降低电磁干扰,C1-C5 为....

发表于 12-04 08:00 56次 阅读
奋斗版STM32开发板Mini板硬件说明书免费下载

STM32单片机开发板的原理库详细资料免费下载

本文档的主要内容详细介绍的是STM32单片机开发板的原理库详细资料免费下载。

发表于 12-03 08:00 96次 阅读
STM32单片机开发板的原理库详细资料免费下载

管道钢珠测量实验报告资料免费下载

本次设计内容为制作一个管道内钢珠运动测量装置,采用STM32F103Z作为主控芯片,装置使用2个非接....

发表于 12-03 08:00 40次 阅读
管道钢珠测量实验报告资料免费下载

四旋翼飞行器开源项目(视频+硬件)硬件仅剩68套,先到先得!

无人机集多种传感器与一身,无人机技术与当前最火的人工智能、物联网技术是相同的,更符合当前技术潮流和趋....

发表于 11-30 11:01 6次 阅读
四旋翼飞行器开源项目(视频+硬件)硬件仅剩68套,先到先得!

UM2322用于2G和3G蜂窝至云技术的STM32探索包的详细资料说明

STM32探索包(P-L496G-CELL01)是一个交钥匙开发平台,基于蜂窝和云技术的解决方案。该....

发表于 11-30 08:00 67次 阅读
UM2322用于2G和3G蜂窝至云技术的STM32探索包的详细资料说明

STM32中的DMA的实际应用

直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU的干预,通过....

发表于 11-29 15:49 111次 阅读
STM32中的DMA的实际应用

STM32库函数中assert_param语句的用法解析

assert_param语句是用于程序开发的时候,调试用的检测语句。默认是不开启的,你可以无视它的存....

发表于 11-28 16:03 106次 阅读
STM32库函数中assert_param语句的用法解析

超低功耗STM32L0系列现在新增了一款入门级产品线-STM32L010

此器件非常适合于设计相对简单、经济实惠的超低功耗的电池供电类应用,这些应用包括个人医疗设备、工业传感....

的头像 STM32单片机 发表于 11-28 15:39 440次 阅读
超低功耗STM32L0系列现在新增了一款入门级产品线-STM32L010

STM32开发板教程之STM32开发指南免费下载

本开发指南将由浅入深,带领大家进入 STM32 的世界。本指南总共分为三篇:1,硬件篇,主要介绍本指....

发表于 11-28 08:00 86次 阅读
STM32开发板教程之STM32开发指南免费下载

STM8和STM32混合信号微控制器选型手册资料免费下载

本文档的主要内容详细介绍的是STM8和STM32混合信号微控制器选型手册资料免费下载。

发表于 11-28 08:00 53次 阅读
STM8和STM32混合信号微控制器选型手册资料免费下载

WIFI STA STM32例程程序和资料合集免费下载

本文档的主要内容详细介绍的是WIFI STA STM32例程程序和资料合集免费下载。 在局域网内,....

发表于 11-27 08:00 63次 阅读
WIFI STA STM32例程程序和资料合集免费下载

STM32F103RCT6开发板电路原理图的详细资料免费下载

本文档的主要内容详细介绍的是STM32F103RCT6开发板电路原理图的详细资料免费下载。

发表于 11-27 08:00 85次 阅读
STM32F103RCT6开发板电路原理图的详细资料免费下载

如何在STM32串口通信程序中使用printf发送数据

在STM32串口通信程序中使用printf发送数据,非常的方便。可在刚开始使用的时候总是遇到问题,常....

发表于 11-26 15:04 117次 阅读
如何在STM32串口通信程序中使用printf发送数据

STM32F429原理图合集免费下载

本文档的主要内容详细介绍的是STM32F429原理图合集免费下载主要内容包括了:STM32F429核....

发表于 11-26 08:00 99次 阅读
STM32F429原理图合集免费下载

TFT彩屏原理图和STM32开发板原理图资料免费下载

本文档的主要内容详细介绍的是TFT彩屏原理图和STM32开发板原理图资料免费下载主要内容包括了:1.....

发表于 11-26 08:00 56次 阅读
TFT彩屏原理图和STM32开发板原理图资料免费下载

模拟电子技术基础习题答案资料免费下载

本文档的主要内容详细介绍的是模拟电子技术基础习题答案资料免费下载。 第一章 常用半导体器件 一、....

发表于 11-26 08:00 59次 阅读
模拟电子技术基础习题答案资料免费下载

STM32F101xx和STM32F103xx微控制器固件函数库的用户手册中文免费下载

该函数库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包....

发表于 11-26 08:00 69次 阅读
STM32F101xx和STM32F103xx微控制器固件函数库的用户手册中文免费下载

德飞莱STM32F103ZET6的配套程序资料合集免费下载

本文档的主要内容详细介绍的是德飞莱STM32F103ZET6的配套程序资料合集免费下载主要内容包括了....

发表于 11-26 08:00 75次 阅读
德飞莱STM32F103ZET6的配套程序资料合集免费下载

STM32F103R单片机电路原理图的资料免费下载

本文档的主要内容详细介绍的是STM32F103R单片机电路原理图的资料免费下载。包括引脚图

发表于 11-26 08:00 78次 阅读
STM32F103R单片机电路原理图的资料免费下载

STM32CubeMX配置工具创建了STM32微控制器 让优化MCU配置参数更加轻松

中国,2018年11月23日 - 使用意法半导体最新版的STM32CubeMX配置工具创建STM32....

发表于 11-25 10:35 141次 阅读
STM32CubeMX配置工具创建了STM32微控制器 让优化MCU配置参数更加轻松

STM32定时器触发DMA数据传输失败的原因如何解决

有人使用STM32的定时器事件触发DMA,让其将内存数据传输到通信外设的数据寄存器进行发送,发现DM....

的头像 ST MCU 信息交流 发表于 11-25 09:21 550次 阅读
STM32定时器触发DMA数据传输失败的原因如何解决

如何系统地入门学习stm32

不要去学STM32。我不是说STM32不好,而是这种为了学习单片机而去学习单片机的思路不对。

的头像 玩转单片机 发表于 11-23 09:02 471次 阅读
如何系统地入门学习stm32

如何使用STM32的FSMC接口驱动LCD屏的详细资料概述

LCD,即液晶显示器,因为其功耗低、体积小,承载的信息量大,因而被广泛用于信息输出、与用户进行交互,....

发表于 11-23 08:00 77次 阅读
如何使用STM32的FSMC接口驱动LCD屏的详细资料概述

STM32F103C8T6最小系统原理图的资料合集

本文档的主要内容详细介绍的是STM32F103C8T6最小系统原理图的资料合集包括了:PcbDoc和....

发表于 11-23 08:00 176次 阅读
STM32F103C8T6最小系统原理图的资料合集

STM32和MQTT及SIM800使用AT指令实现的详细资料合集免费下载

本文档的主要内容详细介绍的是STM32和MQTT及SIM800使用AT指令实现的详细资料合集免费下载....

发表于 11-22 08:00 58次 阅读
STM32和MQTT及SIM800使用AT指令实现的详细资料合集免费下载

如何使用STM32实现systick的精确延时

SYSTICK寄存器初始化 void SysTick_Configuration(void) ....

发表于 11-21 15:54 104次 阅读
如何使用STM32实现systick的精确延时

STM32通用定时器TIM2的使用方法解析

STM32中一共有11个定时器,其中2个高级控制定时器,4个普通定时器和2个基本定时器,以及2个看门....

发表于 11-21 15:40 183次 阅读
STM32通用定时器TIM2的使用方法解析

使用STM32控制ESP8266手机wifi开启窗户的详细资料合集免费下载

通过STM32F103控制ESP8266wifi模块,进行远程手机控制家内窗户开启关闭,不包含窗户状....

发表于 11-21 08:00 96次 阅读
使用STM32控制ESP8266手机wifi开启窗户的详细资料合集免费下载

基于STM32实现串口的两个分案解析

首先总结一下串口232,422,485 串口232:可双向传输,全双工,最大速率20Kbps,....

发表于 11-20 15:42 142次 阅读
基于STM32实现串口的两个分案解析

如何采用STM32配置SPI实现同步通信

SPI是一种高速的,全双工,同步的通信总线,原理和使用简单,占用引脚资源少,是一种常用的通信方式。

发表于 11-20 15:14 161次 阅读
如何采用STM32配置SPI实现同步通信

STM32F10X控制舵机转动程序详细资料免费下载

本文档的主要内容详细介绍的是STM32F10X控制舵机转动程序的详细资料免费下载。

发表于 11-20 08:00 102次 阅读
STM32F10X控制舵机转动程序详细资料免费下载

STM32定时器所支持的三种计数模式及计数过程

我们先不管合不合适,看看为什么会这样。最后发生溢出时计数器的值不等于ARR吗?结合上面图形,不难看出....

的头像 ST MCU 信息交流 发表于 11-19 19:18 1141次 阅读
STM32定时器所支持的三种计数模式及计数过程

如何用STM32配置一个EXTIx中断线的I/O口

//NVIC_CONFIG(); //2.配置EXTIx线的中断优先级 NVIC_Pri....

发表于 11-19 16:02 120次 阅读
如何用STM32配置一个EXTIx中断线的I/O口

基于STM32的MDK程序启动

__heap_base Heap_MemSPACEHeap_Size;//保留Heap_Siz....

发表于 11-19 15:56 90次 阅读
基于STM32的MDK程序启动