硬件IIC和软件IIC的比较

(一)硬件IIC

        硬件IIC是由STM32内部的硬件模块实现的,使用CPU的时钟信号来控制数据传输和时序,通信速度较快,可以达到几十MHz的速度。硬件IIC的实现相对简单,无需编写复杂的代码,因此在实现IIC通信时,硬件IIC通常是首选的方式。硬件IIC的主要优点有:

1、速度快,可以实现高速通信;

2、实现简单,无需编写复杂的代码;

3、稳定性好,不容易出现通信错误。

(二)软件IIC

        软件IIC是由CPU的GPIO模拟实现的,通过CPU的软件来控制时序和数据传输,通信速度相对较慢,一般在几十kHz到几百kHz之间。软件IIC的实现相对复杂,需要编写复杂的代码,因此在实现IIC通信时,软件IIC通常是在硬件IIC无法满足需求时才采用的方式。软件IIC的主要优点有:

1、可以实现多路IIC通信,硬件IIC一般只能实现单路通信;

2、可以在STM32的任何GPIO上实现IIC通信,相对灵活;

3、可以实现任意时序,更加灵活。

实现软件IIC的代码需要通过GPIO模拟IIC时序,具体步骤如下:

(1)配置GPIO用于IIC通信,将SCL和SDA引脚分别配置为推挽输出模式

(2)实现IIC起始信号、停止信号、产生ACK应答、不产生ACK应答、发送数据、接收数据等操作;

编写具体的IIC外设读写函数:1.主机发送起始信号启用总线

                                                2.主机发送一个字节数据指明从机地址和后续字节的传送向

                                                3.被寻址的从机发送应答信号回应主机

                                                4.发送器发送一个字节数据

                                                5.接收器发送应答信号回应发送器

                                                   ... ...(循环步骤4、5)

                                                n.通信完成后主机发送停止信号释放总线

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/24188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何理解与学习数学分析——第二部分——数学分析中的基本概念——第5章——序列

第2 部分:数学分析中的基本概念 (Concepts in Analysis) 5. 序列(Sequences) 本章介绍了序列属性,例如单调性、有界性和收敛性,使用图表和示例来解释这些属性,并演示如何在各种证明中使用它们的定义。讨论了趋于无穷大的序列出…

API key学习笔记

API Key 基本上可以认为是一个长字符串,允许 API 消费者(即使用 API 的人)访问受限的功能和数据。它作为一种安全措施,确保了 API 服务能够控制谁有权限访问什么数据,同时也帮助跟踪API的使用情况。生成API key来调用A…

centos官方yum源不可用 解决方案(随手记)

昨天用yum安装软件的时候,就报错了 [rootop01 ~]# yum install -y net-tools CentOS Stream 8 - AppStream 73 B/s | 38 B 00:00 Error: Failed to download metadata for repo appstream: Cannot prepare internal mirrorlis…

创新指南 | 5个行之有效的初创企业增长策略

本文探讨了五种初创企业实现快速增长的有效策略:利用网络效应通过激励和资本化用户增长;通过持续提供高质量内容建立信任和权威的内容营销;利用简单有效的推荐计划扩展用户群;采用敏捷开发方法快速适应市场变化和客户反馈&#xf…

Codeforces Round 950 (Div. 3) A B C D E

A. Problem Generator time limit per test: 1 second memory limit per test: 256 megabytes input: standard input output: standard output Vlad is planning to hold m m m rounds next month. Each round should contain one problem of difficulty levels ‘A’, ‘B’…

Java:JDK8 GC中ParNew和CMS的问题说明

JDK8中常用如下的垃圾收集器,它们分别运用在年轻代和老年代: ParNew : 年轻代垃圾收集器,多线程,采用标记—复制算法。 CMS:老年代的收集器,全称(Concurrent Mark and Sweep)&#…

[消息队列 Kafka] Kafka 架构组件及其特性(二)Producer原理

这边整理下Kafka三大主要组件Producer原理。 目录 一、Producer发送消息源码流程 二、ACK应答机制和ISR机制 1)ACK应答机制 2)ISR机制 三、消息的幂等性 四、Kafka生产者事务 一、Producer发送消息源码流程 Producer发送消息流程如上图。主要是用…

国自然基金的检索

(1)网址 跳转国自然基金网址:https://www.nsfc.gov.cn/ (2)查询入口 (3)进行查询

【LeetCode 滑动窗口】LC_3_无重复字符的最长子串

文章目录 1. 无重复字符的最长子串 1. 无重复字符的最长子串 题目链接🔗 🍎题目思路:🐧① 滑动窗口的思想;🐧② 用什么来维护窗口呢 ? 用 双指针 和 unordered_set来维护,为什么呢…

标题:深入探索Linux中的`ausyscall`

标题:深入探索Linux中的ausyscall(注意:ausyscall并非Linux内核标准命令,但我们可以探讨类似的概念) 在Linux系统中,系统调用(syscall)是用户空间程序与内核空间进行交互的一种重要…

Git介绍及应用

1.简介 Git是一个分布式版本控制器,通常用来对软件开发过程中的源代码文件进行管理。通过Git仓库来存储和管理这些文件,Git仓库分为两种: 本地仓库:开发人员自己电脑上的Git仓库远程仓库:远程服务器上的Git仓库 2.执行流程 3.Git代码托管服务…

【TB作品】MSP430F5529 单片机,温度控制系统,DS18B20,使用MSP430实现的智能温度控制系统

作品功能 这个智能温度控制系统基于MSP430单片机设计,能够实时监测环境温度并根据预设的温度报警值自动调节风扇和加热片的工作状态。主要功能包括: 实时显示当前温度。通过OLED屏幕显示温度报警值。通过按键设置温度报警值。实际温度超过报警值时&…

【经验分享】嵌入式入坑经历(选段)

文章目录 你现在的工作中所用到的专业知识有哪些呢?为什么想转行了?后来为什么从事了嵌入式行业呢?你对嵌入式的兴趣是何时培养起来的?你是怎么平衡兴趣爱好和工作的关系的?平时做的事情对你现在的工作有哪些帮助?对于有志学习嵌入式开发的在校大学生…

【96】write combine机制介绍

前言 这篇文章主要介绍了write combine的机制 一、write combine的试验 1.系统配置 (1)、CPU:11th Gen Intel(R) Core(TM) i7-11700 2.50GHz (2)、GPU:XX (3)、link status&am…

MySQL(四) - SQL优化

一、SQL执行流程 MySQL是客户端-服务器的模式。一条SQL的执行流程如下: 在执行过程中,主要有三类角色:客户端、服务器、存储引擎。 大致可以分为三层: 第一层:客户端连接到服务器,构造SQL并发送给服务器…

Python | 排队取奶茶

队列的基本概念(队头、队尾)和特点(先入先出) 在 Python 语言中,标准库中的queue模块提供了多种队列的实现,比如普通队列和优先级队列,因此你可以使用queue.Queue类来创建队列,不过…

惠海 H5528 升降压芯片 12V24V36V48V60V75V LED恒流驱动IC 调光细腻顺滑无阶梯感

惠海H5528是一款升压、降压、升压降压的LED恒流驱动IC,其具备宽范围调光比且无频闪调光的特性,使得它在智能照明、Dali调光、0~10V调光、摄影灯照明以及补光灯照明等多种应用中具有广泛的应用前景。 这款芯片支持降压、升压和升降压拓扑的应用&#xff0…

C++面向对象程序设计 - 文件操作与文件流

在实际应用中,常以磁盘文件作为对象,即能从磁盘文件读取数据,也能将数据输出到磁盘文件,磁盘是计算机的外部存储器,能够长期保留信息,能读能写,可以刷新重写等等。 在C中,文件操作通…

Flink Rest Basic Auth - 安全认证

背景 公司目前需要将Flink实时作业云化,构建多租户实时计算平台。目前考虑为了资源高效利用,并不打算为每个租户部署一套独立的Kubernetes集群。也就意味着多个租户的作业可能会运行在同一套kubernets集群中。此时实时作业的任务就变的很危险,因为网络可能是通的,就会存在…

106.网络游戏逆向分析与漏洞攻防-装备系统数据分析-在UI中显示装备与技能信息

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了 内容…