基于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电子技术设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

STM32F4的GPIO口AF复用模式和IN输入模式

发表于 06-19 15:28 124次 阅读
STM32F4的GPIO口AF复用模式和IN输入模式

STM32的基础实验,进阶应用,硬件描述和综合性实验的详细资料概述

该资料对STM32微控制器作了诠释和指导,STM32的基础实验,进阶应用,硬件描述和综合性实验的详细....

发表于 06-19 08:00 12次 阅读
STM32的基础实验,进阶应用,硬件描述和综合性实验的详细资料概述

关于STM32局部变量问题 数组过大,栈溢出了怎么办

当在一个函数中声明一个较大的局部 数组 变量时,程序可以编译通过,但运行时,老是进入hardfaul....

发表于 06-19 07:39 36次 阅读
关于STM32局部变量问题 数组过大,栈溢出了怎么办

总线舵机是什么?基于STM32的单线串口通信

总线伺服舵机即串行总线智能舵机,实际上可以理解为数字舵机的衍生品,数字舵机与模拟舵机相比而言是控制系....

发表于 06-19 07:05 17次 阅读
总线舵机是什么?基于STM32的单线串口通信

无人机中基于stm 32的电机拉力测试系统怎么编程呀?

发表于 06-15 11:26 201次 阅读
无人机中基于stm 32的电机拉力测试系统怎么编程呀?

STM32的平台,CAN模块,当源模块多次发送报文时CAN接收错误

发表于 06-14 15:31 232次 阅读
STM32的平台,CAN模块,当源模块多次发送报文时CAN接收错误

基于STM32的虚拟多线程(TI_BLE协议栈_ZStack协议栈)

基于STM32的虚拟多线程,可以很好的用于裸机程序中,用于模拟小型操作系统的多线程概念。本实例参考了....

发表于 06-14 10:42 110次 阅读
基于STM32的虚拟多线程(TI_BLE协议栈_ZStack协议栈)

stm32的总线AMBA、AHB、APB

系统中的各个模块之间相互通信是通过总线,总线的作用,就是把数据和地址从设备A搬运到设备B上。

发表于 06-14 10:13 65次 阅读
stm32的总线AMBA、AHB、APB

为什么串口接收的数据读取不对

发表于 06-13 13:08 294次 阅读
为什么串口接收的数据读取不对

教程:只需六步,将Hal库移植到标准库

到MCU开发的时候下载了生成的代码发现是HAL库的,无奈自己刚刚学习stm32,用的是标准库这里参考....

的头像 机智云开发者 发表于 06-12 10:10 776次 阅读
教程:只需六步,将Hal库移植到标准库

stm32f103 sht20,接不接传感器都显示128.多 的值! 请各位大神指教一下,那里有问题?

发表于 06-11 23:41 191次 阅读
stm32f103 sht20,接不接传感器都显示128.多 的值! 请各位大神指教一下,那里有问题?

TCL通讯Alcatel 3V智能手机选用意法半导体NFC技术,为用户带来卓越的非接触式体验

发表于 06-11 15:22 296次 阅读
TCL通讯Alcatel 3V智能手机选用意法半导体NFC技术,为用户带来卓越的非接触式体验

意法半导体高速、高分辨率电机驱动板,使开源3D打印机性能最大化

发表于 06-11 15:16 289次 阅读
意法半导体高速、高分辨率电机驱动板,使开源3D打印机性能最大化

STM32中DMA模块的使用

DMA_Mode_Normal,正常模式,当一次DMA数据传输完后,停止DMA传送,对于上例而言,就....

的头像 21ic电子网 发表于 06-11 08:49 387次 阅读
STM32中DMA模块的使用

用三极管做一个500mA恒流源,实测时R9(6Ω 2W)总是会过热烧掉是什么原因?如何解决?

发表于 06-10 23:59 165次 阅读
用三极管做一个500mA恒流源,实测时R9(6Ω 2W)总是会过热烧掉是什么原因?如何解决?

队列的介绍和利用环形队列实现STM32进阶之串口环形缓冲区的概述

队列 (Queue):是一种先进先出(First In First Out ,简称 FIFO)的线性....

的头像 嵌入式资讯精选 发表于 06-10 11:15 331次 阅读
队列的介绍和利用环形队列实现STM32进阶之串口环形缓冲区的概述

LY-STM32 (Cortex-M3)(大黄蜂开发板封装库)

ASTM32F103

发表于 06-10 08:00 37次 阅读
LY-STM32 (Cortex-M3)(大黄蜂开发板封装库)

请问谁有LabVIEW与stm32单片机的串口通讯程序?

发表于 06-08 16:34 206次 阅读
请问谁有LabVIEW与stm32单片机的串口通讯程序?

采用STM32设计的四轴飞行器飞控系统的详细资料概述

四轴飞行器是一种结构紧凑、飞行方式独特的垂直起降式飞行器,与普通的飞行器相比具有结构简单,故障率低和....

发表于 06-08 09:03 76次 阅读
采用STM32设计的四轴飞行器飞控系统的详细资料概述

基于STM32的Uart2串口问题

21IC买了一块1元的活动板子,移植了RTT(RT-THREAD)的国人嵌入式操作系统.系统能够正常....

发表于 06-08 08:30 152次 阅读
基于STM32的Uart2串口问题

基于STM32的串口DMA发送

使用STM32的串口进行DMA发送(Noraml模式),在某个任务中连续调用两次发送函数log_pr....

发表于 06-08 08:13 133次 阅读
基于STM32的串口DMA发送

STM32超声波测距设计的合集包括了的原始材料,原理图,程序和原理说明

本文档的主要内容介绍的是STM32超声波测距设计的合集包括了的原始材料,原理图,程序和原理说明的详细....

发表于 06-08 08:00 47次 阅读
STM32超声波测距设计的合集包括了的原始材料,原理图,程序和原理说明

如何基于STM32单片机设计电子密码锁的详细资料概述

本文档的主要内容介绍了如何基于STM32单片机设计电子密码锁的详细资料概述

发表于 06-08 08:00 53次 阅读
如何基于STM32单片机设计电子密码锁的详细资料概述

STM32 UART2发送后中断的原因是什么?

先说TC。即Transmission Complete。发送一个字节后才进入中断,这里称为“发送后中....

发表于 06-07 08:07 77次 阅读
STM32 UART2发送后中断的原因是什么?

STM32立方体的扩展软件控制低压三相无刷直流电机的详细资料概述

X-CUBE-SPN17是STM32立方体的扩展软件。该软件运行在STM32内核上,提供STPICH....

发表于 06-07 08:00 35次 阅读
STM32立方体的扩展软件控制低压三相无刷直流电机的详细资料概述

基于STM32单片机的生日快乐音频播放程序设计的详细资料概述

本文的主要内容介绍的是基于STM32的生日快乐播放程序设计的详细资料概述

发表于 06-07 08:00 49次 阅读
基于STM32单片机的生日快乐音频播放程序设计的详细资料概述

基于STM32单片机的指纹识别设计的详细资料概述

本文档的主要内容介绍的是基于STM32单片机的指纹识别设计的详细资料概述包括了STM32程序和原理图....

发表于 06-07 08:00 110次 阅读
基于STM32单片机的指纹识别设计的详细资料概述

STM32无刷电机开发板电路图详细介绍和无刷霍尔pid例程详细概述

本文档的主要内容介绍的是STM32无刷电机开发板的电路图详细介绍和无刷霍尔pid例程详细概述

发表于 06-07 08:00 87次 阅读
STM32无刷电机开发板电路图详细介绍和无刷霍尔pid例程详细概述

基于STM32VET6的MP3和数码相框设计的详细中文资料概述

本设计是以STM32VET6作为主控制器,外围辅以3.5寸TFT液晶、SD卡、VS1003音频解码器....

发表于 06-07 08:00 35次 阅读
基于STM32VET6的MP3和数码相框设计的详细中文资料概述

STM32开发板与超声波模块实验的介绍和操作方式过程以及程序的概述

本文档介绍的主要内容是STM32开发板与超声波模块实验的程序和操作方法和过程的详细资料概述

发表于 06-07 08:00 61次 阅读
STM32开发板与超声波模块实验的介绍和操作方式过程以及程序的概述

如何使用STM32来设计循迹,避障,遥控的多功能智能小车详细资料概述

本文档介绍的主要内容是如何使用STM32来设计循迹,避障,遥控的多功能智能小车详细概述

发表于 06-07 08:00 95次 阅读
如何使用STM32来设计循迹,避障,遥控的多功能智能小车详细资料概述

由stm32产生的频率分别为10khz和30khz的方波,请问如何经过滤波处理产生频率不变?

发表于 06-06 18:37 108次 阅读
由stm32产生的频率分别为10khz和30khz的方波,请问如何经过滤波处理产生频率不变?

STM32-MDK编辑(或修改)代码后调试的详细过程中文介绍

编辑(或修改)代码之后,我们需要编译代码(F7)查看是否有错误,编译无误后点击调试按钮(Ctrl +....

发表于 06-06 10:00 44次 阅读
STM32-MDK编辑(或修改)代码后调试的详细过程中文介绍

STM32-IAR 调试的详细中文资料概述

其实调试本身也并不难,楼主总结,调试关键在于两件事,一是运行,二是观察,为了更好的实现这两者,就牵涉....

发表于 06-06 08:00 31次 阅读
STM32-IAR 调试的详细中文资料概述

教你怎么用Atollic TrueStudio 9.0

ST之前发布了Atollic TrueStudio 9.0版本软件开发工具,为STM32用户提供全免....

的头像 STM32单片机 发表于 06-04 09:40 1854次 阅读
教你怎么用Atollic TrueStudio 9.0

基于STM32单片机的摄像头图像采集的处理系统项目研究报告

本项目以摄像头OV7670作为图像传感器,以存储芯片AL422作为数据中转站,以处理芯片STM32作....

发表于 06-04 08:00 106次 阅读
基于STM32单片机的摄像头图像采集的处理系统项目研究报告

STM32型永磁同步电动机V4.0的详细资料概述

SDK \/4.0软件包包含:PMSM FOC固件库和ST MC Workbench(GUI),许用....

发表于 06-01 12:35 55次 阅读
STM32型永磁同步电动机V4.0的详细资料概述

通过CAN_BTR寄存器控制LBKM和SILM

每组过滤器组必须关联且只能关联一个 FIFO。复位默认都关联到 FIFO_0。所谓“关联”是指假如收....

的头像 21ic电子网 发表于 05-31 08:54 1080次 阅读
通过CAN_BTR寄存器控制LBKM和SILM

过来人谈模拟电子学习历程

时光总在不经意间流逝,似白驹过隙。这学期开学以来一直比较忙吧,各种事项夹杂在一起,五月份弄完了论文,....

的头像 玩转单片机 发表于 05-28 11:22 555次 阅读
过来人谈模拟电子学习历程

模拟电子蜡烛电路设计与制作

模拟电子蜡烛具有“火柴点火,风吹火熄”的仿真性,设计原形来源于现实生活情节:蜡烛的使用,电路改造后可....

的头像 单片机精讲吴鉴鹰 发表于 05-25 11:19 787次 阅读
模拟电子蜡烛电路设计与制作

基于STM32F103系列单片机的无线解说器

本实例是以STM32F103系列单片机作为核心处理器,利用VS1003芯片进行音频解码的一种无线解....

的头像 电子设计 发表于 05-25 10:00 1531次 阅读
基于STM32F103系列单片机的无线解说器

STM32的三种串口通信协议介绍

本文首先介绍了STM32串口硬件电路及串口编程,其次介绍了STM32的三种串口通信协议,最后介绍了S....

发表于 05-25 09:33 1782次 阅读
STM32的三种串口通信协议介绍

基于北斗卫星系统的机载高速摄像机时间同步器

在民用飞机飞行试验中,为了保证图像测试数据的准确可靠,机上图像测试系统中不同测试设备时间需要严格的统....

的头像 电子设计 发表于 05-25 08:24 758次 阅读
基于北斗卫星系统的机载高速摄像机时间同步器

基于STM32的语音导览系统的设计方案

景点语音导览主要有以下几种方式:一种是通过全球定位系统(GPS)的用户终端接收工作卫星的导航信息,从....

的头像 电子设计 发表于 05-25 08:01 1439次 阅读
基于STM32的语音导览系统的设计方案

基于STM32C8T6的四旋翼飞行器控制系统硬件电路方案设计

本文基于四旋翼飞行器的工作原理和性能特点,设计了飞行器控制系统的硬件电路。系统包含微控制器模块、姿态....

的头像 电子设计 发表于 05-24 16:37 2105次 阅读
 基于STM32C8T6的四旋翼飞行器控制系统硬件电路方案设计

STM32的优势在哪里?如何使用DMA来进行ADC操作?

STM32的优点在哪里? 除去宣传环节,细细分析。 STM32时钟不算快,72MHZ, 也不能扩展....

发表于 05-22 07:32 311次 阅读
STM32的优势在哪里?如何使用DMA来进行ADC操作?

STM32串口实现485双机通信的原理

如果按键按下了,就会发送数据,就会产生接收中断,就会往我们定义的接收缓冲区(RS485_RX_BUF....

的头像 玩转单片机 发表于 05-21 17:27 925次 阅读
STM32串口实现485双机通信的原理

ad7606与stm32连接电路介绍

本文首先对stm32产品概述及特性进行了介绍,其次介绍了AD7606相关概念,最后介绍了ad7606....

发表于 05-21 11:45 424次 阅读
ad7606与stm32连接电路介绍

一文了解STM32窗口看门狗的真正作用

STM32有2个看门狗:独立看门狗和窗口看门狗。 独立看门狗IWDG--独立于系统之外,因为有独立....

的头像 电子发烧友网工程师 发表于 05-20 10:17 881次 阅读
一文了解STM32窗口看门狗的真正作用

如何判断STM32的复位类型_STM32软件复位bug有哪些

上电复位,是为了为程序的开始作好准备,强制的所有的数据清零,它必须要从零开始。

的头像 电子发烧友网工程师 发表于 05-20 10:06 804次 阅读
如何判断STM32的复位类型_STM32软件复位bug有哪些

STM32F0多路ADC采样中的BUG和解决方案

使用CUBE生产的ADC无法配置多路采样,多路采样采集值不对,研究后发现是底层函数没有将CHANNE....

发表于 05-18 15:01 172次 阅读
STM32F0多路ADC采样中的BUG和解决方案

一文解析stm32产生spwm原理及程序

SPWM(Sinusoidal PWM)法是一种比较成熟的,目前使用较广泛的PWM法。SPWM法就是....

的头像 陈翠 发表于 05-18 09:11 2689次 阅读
一文解析stm32产生spwm原理及程序

STM32独立看门狗和低功耗模式_RTC定时唤醒来喂狗

在STM32开发中经常会用到独立看门狗(IWDG)和低功耗模式,看门狗是为了检测和解决由软件错误引起....

发表于 05-18 01:55 138次 阅读
STM32独立看门狗和低功耗模式_RTC定时唤醒来喂狗

STM32独立看门狗介绍_STM32单片机独立看门狗实验

STM32的独立看门狗由内部专门的40Khz低速时钟驱动,即使主时钟发生故障,它也仍然有效。这里需要....

发表于 05-18 01:49 153次 阅读
STM32独立看门狗介绍_STM32单片机独立看门狗实验

基于STM32内置ADC实现简易示波器的程序设计与实现

ADC转换:STM32增强型芯片内置的2个独立ADC,可以有16个通道,并且2个通道可以并行的同步采....

发表于 05-18 01:44 473次 阅读
基于STM32内置ADC实现简易示波器的程序设计与实现

STM32单片机的模拟看门狗的库函数设置

ADC的模拟看门狗用于检查电压是否越界。他又上下两个边界,可分别在寄存器ADC_HTR和ADC_LT....

发表于 05-18 01:29 103次 阅读
STM32单片机的模拟看门狗的库函数设置

一文看懂stm32的引脚的两种用途:GPIO和AFIO

stm32的引脚有两种用途:GPIO(generalpurposeio)和AFIO(alternat....

发表于 05-18 01:22 249次 阅读
一文看懂stm32的引脚的两种用途:GPIO和AFIO

stm32驱动ad9854程序分享_ad9854构成信号发生器电路

AD9854数字合成器是高集成度的器件。本文首先介绍了ad9854优势和特点,其次介绍了ad9854....

的头像 电子魔法师 发表于 05-17 09:23 608次 阅读
stm32驱动ad9854程序分享_ad9854构成信号发生器电路

STM32调试步骤

调试前,首先跳线J9的2-3脚短接,跳线J4的右边两个脚短接,跳线J5短接,J8短接,J2的1-2短....

的头像 畅学单片机 发表于 05-16 10:42 802次 阅读
STM32调试步骤

了解TrueSTUDIO9.0给STM32开发带来的新价值

现在ST正式发布整合后第一个Atollic TrueSTUDIO版本 9.0,正式为STM32用户提....

的头像 ST MCU 信息交流 发表于 05-16 09:24 1494次 阅读
了解TrueSTUDIO9.0给STM32开发带来的新价值