I2C的硬件实现

news2024/11/19 23:17:15

因为I2C是同步的,所以相对来说I2C更好用软件来实现,硬件却相对来说没这么好,但是硬件I2C通信也是有其优点的

我们是通过软件写入控制寄存器CR和数据寄存器DR,读取状态寄存器SR来了解外设电路当前处于什么状态,来实现I2C通信的,而我们通过STM32的库函数来实现配置这些寄存器,这些操作就变得更简单了;有了I2C硬件外设的存在,硬件自动实现时序,就可以减轻CPU的负担,节省软件资源,由硬件来做这件事,可以更加专注,时序生成的性能、效率也会更高,这就是I2C外设存在的意义。

I2C外设简介

STM32 内部集成了硬件 I2C 收发电路,可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能,减轻 CPU 的负担
支持多主机模型
支持 7 /10 位地址模式
支持不同的通讯速度,标准速度 ( 高达 100 kHz) ,快速 ( 高达 400 kHz)
支持 DMA
兼容 SMBus 协议
STM32F103C8T6 硬件 I2C 资源: I2C1 I2C2
(硬件I2C的资源是有限的,这也是硬件和软件的区别)

多主机模型:

1、固定多主机:固定多台机器为主机,只有其中一台主机才可以通过主线控制所有从机,当多个主机控制主线时,会出现主线冲突,这个时候就会进行总线总裁,仲裁失败的一方会让出总线控制权;

2、可变多主机:默认情况下,全部机器都是从机,当某台机器需要控制权时,就会跳出来变成主机,控制主线,多个从机跳出来时,就会进行总线仲裁,仲裁成功的获得总线控制权。STM32的I2C就是可变多主机的模型

I2C框图

引脚定义

 

I2C基本结构

发送:移位寄存器中的数据由高位到低位先移出去,移8次就可以移一个字节,有高位到低位依次放到SDA线上;

接收:数据从GPIO口从右边依次移进来,最终移8次,一个字节就接收完成了。

配置问题:两个GPIO口都需要配置成复用开漏输出模式,复用——GPIO的状态是交由片上外设来控制的,开漏输出——I2C协议要求的端口配置(在这个模式下依然可以通过GPIO口进行输入)

主机发送

EV-标志位(多个事件发生的标志位)

对应数据手册24.6.7

EV5:(不需要手动清除的) 

 主机接收

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

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

相关文章

jvm实现的锁优化

目录 轻量级锁 轻量级锁的工作流程 轻量级锁的解锁 偏向锁 偏向锁的流程: 偏向锁和轻量级锁机区别: 其他优化 自旋锁和自适应自旋锁 锁消除 锁粗化 轻量级锁 “轻量级” 是相对于使用操作系统互斥量来实现的传统锁而言的,因此传统的…

Java学习笔记(四)——程序控制结构

一、顺序控制 二、分支控制 (一)单分支 (二)双分支 (三)多分支 (四)嵌套分支 (五)switch分支结构 (六)if和switch的选择 三、循…

Android Studio快速实现Flutter应用的国际化和多语言支持

文章目录 Flutter实现国际化和多语言支持添加依赖库Android Studio 安装flutter Intl插件项目初始化增加语言app中使用国际化在应用中切换语言:运行应用 总结easy_localization 插件intl 包Flutter GetX 包flutter_i18n 插件JSON 文件 Flutter实现国际化和多语言支持…

利用ArcGIS获取每一个冰川的中心位置经纬度坐标:要素转点和要素折点转点的区别

问题概述:下图是天山地区的冰川的分布,我们可以看到每一条冰川是一个面要素,要求得到每一个冰川(面要素)的中心经纬度坐标。 1.采用要素转点功能 选择工具箱的【数据管理工具】-【要素】-【要素转点】。完成之后再采用…

疯狂堆料!技嘉钛雕Z790 AORUS PRO X主板图赏

技嘉推出了钛雕Z790 AORUS PRO X主板。 现在这款新品已经来到了我们评测室,下面为大家带来图赏。 技嘉钛雕Z790 AORUS PRO X主板采用新一代超耐久显卡插槽,约58KG承重能力、内衬保护显卡PCB。 其采用1812相供电设计,4根双通道DDR5内存插槽&am…

药物滥用第四篇介绍

OXY: 羟考酮(Oxycodone,OXY),分子式为C18H21NO4,是一种半合成的蒂巴因衍生物。羟考酮为半合成的纯阿片受体激动药,其作用机制与吗啡相似,主要通过激动中枢神经系统内的阿片受体而起镇…

FastAdmin框架实现数据表的增删改查

目录 简介 增加数据 修改数据 控制器(controller)代码: 查询数据 控制器(controller)代码: 模型(model)代码: 删除数据 控制器(controller&#xff0…

2023年农村市场风口新商机:互联网+认养模式商业模式解析

背景:随着城市化进程的不断加快,人们对物质生活的要求和品质日益增高,特别是在疫情过亲身经历过病痛的折磨后,大家对自己的更加爱惜了,今天,微三云营销总监胡佳东发现一套2023年创业新项目新商机&#xff1…

选型销售管理软件要注意哪些问题?

近些年来,创新型企业大量涌现成为国内经济增长的新动能。同时管理者发现很快就遇到了发展瓶颈,为了保证业务的快速开展,引入销售管理软件的需求十分强烈。那么,选型销售管理软件要注意哪些问题? 一、直指痛点的功能 对于多数企…

APP开发成本的影响因素

在温州或中国任何地方开发APP的成本取决于多个因素,包括应用的规模、功能、设计、复杂性以及所需的技术和人力资源。以下是一些可能影响APP开发成本的主要因素,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司&#xf…

风电机浪涌保护器的防雷作用和意义

风电是一种利用风能转化为电能的清洁新能源,具有节约资源、减少污染、降低碳排放等优点。随着风电技术的发展和应用,风电场的规模和数量也不断增加,为人类提供了可持续的电力供应。然而,风电场也面临着一些挑战和风险,…

KingBase库模式表空间和客户端认证(kylin)

库、模式、表空间 数据库 数据库基集簇与数据库实例 KES集簇是由单个KES实例管理的数据库的集合KES集簇中的库使用相同的全局配置文件和监听端口、共享相关的进程和内存结构同一数据库集簇中的进程、相关的内存结构统称为实例 数据库 数据库是一个长期存储在计算机内的、有…

PDF编辑阅读 PDF Expert v3.5.2

PDF Expert是由Readdle开发的一款专业的PDF编辑和阅读工具。它可以帮助用户在Mac、iPad和iPhone等设备上查看、注释、编辑、填写和签署PDF文档。 以下是PDF Expert的特点: PDF编辑:PDF Expert提供了丰富的PDF编辑功能,包括添加、删除、移动…

学习pytorch14 损失函数与反向传播

神经网络-损失函数与反向传播 官网损失函数L1Loss MAE 平均MSELoss 平方差CROSSENTROPYLOSS 交叉熵损失注意code 反向传播在debug中的显示code B站小土堆pytorch视频学习 官网 https://pytorch.org/docs/stable/nn.html#loss-functions 损失函数 L1Loss MAE 平均 import to…

2022年亚太杯APMCM数学建模大赛A题结晶器熔剂熔融结晶过程序列图像特征提取及建模分析求解全过程文档及程序

2022年亚太杯APMCM数学建模大赛 A题 结晶器熔剂熔融结晶过程序列图像特征提取及建模分析 原题再现: 连铸过程中的保护渣使钢水弯液面隔热,防止钢水在连铸过程中再次氧化,控制传热,为铸坯提供润滑,并吸收非金属夹杂物…

基于Java的旅游网站系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

Linux下等待队列、定时器、中断综合应用——按键控制LED

本文通过按键控制LED的亮灭,按键每按一次,LED的状态就发生一次变化。 等待队列是为了在按键有动作发生时再读取按键值,而不是一直读取按键的值,使得CPU的占用率很高。 定时器在本实验中引入是为了按键消抖,在键值稳定了…

Node.js中常用的设计模式有哪些?

本文由葡萄城技术团队首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 设计模式简介 设计模式是由经验丰富的程序员在日积月累中抽象出的用以解决通用问题的可复用解决方案,它提…

谷歌浏览器修改背景色

地址栏输入:chrome://flags/ 改为Enabled即可把背景色改为黑色,亲测edge浏览器也生效

点菜MT2234

【题目】 这个题读起来真拗口,啥叫“有可能不存在”? 如果结果为yes,那就是说“没有三个人都选中的菜”, 如果结果为no,那就是说“有三个人都选中的菜” 换句话说,那就是没有一道菜被3个人都点过。 abc …