当前位置: 首页 > news >正文

【嵌入式学习笔记】嵌入式入门7——IIC总线协议

1.IIC简介

IIC即Inter Integrated Circuit,集成电路总线,是一种同步,串行,半双工通信总线。
IIC总线协议——总线就是传输数据通道,协议就是传输数据的规则
,有以下特点:

  • 由时钟线SCL和数据线SDA组成,并且都接上拉电阻,确保总线空闲状态为高电平
  • 总线支持多设备连接,允许多主机存在,每个设备都有一个唯一的地址
  • 连接到总线上的数目受总线的最大电容400pf限制
  • 数据传输速率:标准模式100k bit/s 快速模式400k bit/s 高速模式3.4Mbit/s
    在这里插入图片描述

IIC协议时序

在这里插入图片描述
在这里插入图片描述

IIC通信过程

  • 写操作过程
    在这里插入图片描述
  • 读操作过程
    在这里插入图片描述

2.EEPROM与24C02简介

EEPROM是一种掉电后数据不丢失的储存器,常用来存储一些配置信息,在系统重新上电时就可以加载
AT24C02是一个2K bit的EEPROM存储器,使用IIC通信方式。
在这里插入图片描述

  • A0/1/2 : 设备地址决定引脚
  • WP : 写保护引脚
  • SCL : 时钟线
  • SDA : 数据线

24C02的通讯地址

在这里插入图片描述

24C04的储存范围是4Kbit=512KB,使用8位地址无法表示全其储存地址(28=256KB),需要在设备地址中借位(29=512KB)

24C02的读写时序

  • 写操作
    字节写模式:一个地址一个数据进行写入。
    页写模式:连续写入数据。只需要写一个地址,连续写入数据时地址会自增,但存在页的限制,超出一页时,超出数据覆盖原先写入的数据。但读会自动翻页。

  • 读操作
    当前读模式:基于上一次读/写操作的最后位置继续读出数据。
    随机地址读模式:指定地址读出数据。
    顺序读模式:连续读出数据。

  • 写操作过程(字节写入/页写入)
    注意:EEPROM比较慢,必须等到10ms后再写下一个字节
    在这里插入图片描述
    在这里插入图片描述

  • 读操作过程
    在这里插入图片描述

3.IIC协议驱动24C02实验

  • 硬件IIC——使用复杂、速度快、较稳定、特定引脚
  • 软件IIC——使用简单、速度较慢、稳定、任意引脚

推荐使用软件IIC,一是因为硬件IIC设计复杂,稳定性一般;二是因为软件IIC方便移植

3.1.IIC配置步骤

  • 使能SCL和SDA对应时钟——__HAL_RCC_GPIOB_CLK_ENABLE()
  • 设置GPIO工作模式——SDA开漏SCL推挽输出,使用HAL_GPIO_Init初始化
  • 编写基本信号——起始信号、停止信号、应答信号
  • 编写读和写函数——iic_read_byte、iic_send_byte
    注意:发送完成,主机释放SDA

为什么IIC总线SDA建议用开漏模式?

  • IIC的SDA脚即要作为输出,又要作为输入,用开漏输出模式,很好实现输出输入共用,避免IO模式频繁切换带来的麻烦。
  • 输出时:主机(MCU)输出0,可以拉低信号,实现低电平发送,主机输出1(实际不起作用),由外部上拉电阻上拉,实现高电平发送
  • 输入时:主机(MCU)设置输出1状态,此时因为MCU无法输出1,相当于释放了SDA脚,此时外部器件可以主动拉低SDA脚/释放SDA脚(同样由上拉电阻提供“输出1的功能”),实现SDA脚的高低电平变化。
  • 由于开漏输出模式下,MCU还是可以读取IDR状态寄存器,来获取引脚高低电平,因此MCU读取IDR,即可获得SDA脚的高低电平状态,从而实现输入检测。
    也可以参考http://t.csdn.cn/fLxa9和http://t.csdn.cn/3x1wU

3.2.24C02配置步骤

  • 初始化IIC接口
  • 编写写入/读取一个字节数据函数——遵循时序流程编写
  • 编写连续读和连续写函数——在上面的基础上进行实现

相关文章:

【嵌入式学习笔记】嵌入式入门7——IIC总线协议

1.IIC简介 IIC即Inter Integrated Circuit,集成电路总线,是一种同步,串行,半双工通信总线。 IIC总线协议——总线就是传输数据通道,协议就是传输数据的规则,有以下特点: 由时钟线SCL和数据线S…...

你永远想象不到有多折磨的 Android 开发 react-native gradle*!¥%#

很难过,拿到项目运行不起来,错误报告研究几天没研究明白,改代码,装gradle,忙和好久还是一个样,也不知道是码的问题还是什么,一开始 后面装完gradle,不报错了,但是也跑不起…...

关于STM32 hal printf重定向 “FILE“ is undefined

> 关于STM32 hal printf重定向,及报错。“FILE” is undefined 增加以下内容: #include "string.h" #include "stdio.h" #pragma import(__use_no_semihosting) 标准库需要的支持函数 struct __…...

“深入剖析JVM内部机制:理解Java虚拟机的工作原理“

标题:深入剖析JVM内部机制:理解Java虚拟机的工作原理 介绍: Java虚拟机(JVM)是Java语言的核心组件,负责将Java源代码转换为可以在计算机上运行的机器码。了解JVM的内部机制对于开发人员来说非常重要&#…...

939. 最小面积矩形;2166. 设计位集;2400. 恰好移动 k 步到达某一位置的方法数目

939. 最小面积矩形 核心思想:枚举矩形的右边那条边的两个点,并用一个哈希表存储相同纵坐标的最近出现的列的列数,不断更新最近出现的左边那条边。 2166. 设计位集 核心思想:这题主要是时间复杂度的优化,用一个flag来标记当前翻转…...

GPT垂直领域相关模型 现有的开源领域大模型

对于ToC端来说,广大群众的口味已经被ChatGPT给养叼了,市场基本上被ChatGPT吃的干干净净。虽然国内大厂在紧追不舍,但目前绝大多数都还在实行内测机制,大概率是不会广泛开放的(毕竟,各大厂还是主盯ToB、ToG市…...

学习Vue:slot使用

在Vue.js中,组件高级特性之一是插槽(Slots)。插槽允许您在父组件中插入内容到子组件的特定位置,从而实现更灵活的组件复用和布局控制。本文将详细介绍插槽的使用方法和优势。 什么是插槽? 插槽是一种让父组件可以向子…...

【Linux】Shell脚本之流程控制语句 if判断、for循环、while循环、case循环判断 + 实战详解[⭐建议收藏!!⭐]

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…...

【数据结构】“栈”的模拟实现

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …...

12 注册登录

12 注册登录 整体概述 使用数据库连接池实现服务器访问数据库的功能,使用POST请求完成注册和登录的校验工作。 本文内容 介绍同步实现注册登录功能,具体涉及到流程图、载入数据库表、提取用户名和密码、注册登录流程与页面跳转的代码实现。 流程图&a…...

动态规划之最长上升子序列模板

今天开始更新动态规划的模板(动态规划哪有模板呀!!!)话是这么说,但我们经常做题会发现有些题目有些共性,我们抽取共性总结出来,应付动态规划基础题目还是可以的。 回归正题&#xf…...

Python源码05:使用Pyecharts画词云图图

**Pyecharts是一个用于生成 Echarts 图表的 Python 库。Echarts 是一个基于 JavaScript 的数据可视化库,提供了丰富的图表类型和交互功能。**通过 Pyecharts,你可以使用 Python 代码生成各种类型的 Echarts 图表,例如折线图、柱状图、饼图、散…...

MariaDB 10.11.4 安装教程(zip格式,Windows环境)

前言 MariaDB 10.11.4 这个版本是目前最新的长期支持版,下面来安装下 下载 官网:MariaDB 10.11.4 打开上面链接,点Download 安装 解压缩下载的 zip 文件,到 bin 目录,管理员运行cmd,执行如下命令 mys…...

【Python国内源】pip换源终极方法【Windows】

1、为什么要pip换源下载 安装第三方库时,很多库来自于国外,下载速度慢得感人! 2、常见的国内源 https://pypi.tuna.tsinghua.edu.cn/simple #清华 http://mirrors.aliyun.com/pypi/simple/ #阿里云 https://pypi.mirrors.ustc.e…...

【elementUi】绘制自定义表格、绘制曲线表格

要求绘制下图系列表格: 实现步骤: 1.绘制树,实现树勾选字段—>表格绘制字段 逻辑: 树:check-change“treeChart.handleCheckChange” 绑定点击选择事件,改变data.column3数据项;表格:columns"data…...

使用 Python 中的 Langchain 从零到高级快速进行工程

大型语言模型 (LLM) 的一个重要方面是这些模型用于学习的参数数量。模型拥有的参数越多,它就能更好地理解单词和短语之间的关系。这意味着具有数十亿个参数的模型有能力生成各种创造性的文本格式,并以信息丰富的方式回答开放式和挑战性的问题。 ChatGPT 等法学硕士利用 T...

神经网络基础-神经网络补充概念-07-使用计算图求导

步骤 定义计算节点和操作: “x” 是输入变量。 “Add” 表示加法操作。 “Sub” 表示减法操作。 “Multiply” 表示乘法操作。 计算函数值: 首先,我们将 x0 的值代入计算图中,计算出函数的值。 反向传播计算导数: 我…...

docker常用指令

一、Docker指令 1、启动Docker :systemctl start docker 2、查看Docker状态:systemctl status docker 状态为active表示正在运行中 3、停止运行Docker:systemctl stop docker 4、重启Docker:systemctl restart docker 5、开机启动Docker:systemctl enable docker 二…...

【金融量化】对企业进行估值的方法有哪些?

估值的方法有哪些? 如何对企业进行估值?有2个方法估算。 1 绝对估值法 它是一种定价模型,用于计算企业的内在价值。 比如说你可以根据公司近N年的现金流情况。借此去预测未来N年的现金流情况。所有的现金流数据都可以在年报上查询到。最后…...

Qt+C++自定义控件仪表盘动画仿真

程序示例精选 QtC自定义控件仪表盘动画仿真 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<QtC自定义控件仪表盘动画仿真>>编写代码&#xff0c;代码整洁&#xff0c;规则&…...

霜儿-汉服-造相Z-Turbo模型推理优化:理解与避免神经网络中的耦合过度

霜儿-汉服-造相Z-Turbo模型推理优化&#xff1a;理解与避免神经网络中的耦合过度 不知道你有没有遇到过这种情况&#xff1a;想让AI画一个穿汉服的女孩&#xff0c;结果出来的图&#xff0c;发型和衣服总是一起“跑偏”。比如&#xff0c;你想生成一个“唐代齐胸襦裙”的造型&…...

祝贺电影《得闲谨制》荣获2026亚洲艺术电影节 六项提名

电影《得闲谨制》荣获2026亚洲艺术电影节「金海燕奖」主竞赛单元六项提名&#xff1a; 祝贺导演孔笙 提名最佳导演&#xff1b; 祝贺编剧伍千万里四十八 提名最佳编剧&#xff1b; 祝贺演员肖战 提名最佳男主角&#xff1b; 祝贺演员尹正 提名最佳男配角&#xff1b; 祝贺美术指…...

交叉编译microcom

由于默认的busybox没有支持microcom工具&#xff0c;也没有提供源码&#xff0c;所以需要自己交叉编译microcom工具。 microcom工具 https://packages.ubuntu.com/zh-cn/plucky/microcom 下载ubuntu带的软件包microcom&#xff0c;下载microcom_2023.09.0.orig.tar.xz版本&…...

Nanobot技能扩展开发:自定义OpenClaw功能模块教程

Nanobot技能扩展开发&#xff1a;自定义OpenClaw功能模块教程 1. 引言 想给你的Nanobot智能助手添加一些个性化功能吗&#xff1f;比如让它帮你查天气、管理待办事项&#xff0c;或者连接你常用的办公软件&#xff1f;今天就来手把手教你如何为Nanobot开发自定义技能模块。 …...

收藏!30岁转行AI大模型,来得及吗?小白程序员必看的真实转型干货

“30岁&#xff0c;人生好像走到了岔路口&#xff0c;转行还来得及吗&#xff1f;”这是很多职场人遭遇瓶颈时&#xff0c;都会反复纠结的问题。尤其是面对AI大模型这样的新兴领域&#xff0c;不少人既心动又胆怯——怕年龄太大、怕没有基础、怕跟不上节奏。但今天我想明确告诉…...

手写 Vue3 自定义指令:防抖、点击外部、权限控制

在 Vue3 开发中&#xff0c;指令&#xff08;Directive&#xff09;是一个非常实用的特性&#xff0c;它允许我们在 DOM 元素上添加自定义行为&#xff0c;封装可复用的逻辑。Vue3 内置了 v-model、v-show、v-bind 等常用指令&#xff0c;但在实际开发中&#xff0c;我们经常会…...

CPCIe507全国产信号处理板卡:FT-M6678+JFM7VX690T互联调试

CPCIe507 为标准的6U CPCIe 板卡&#xff0c;采用全国产芯片设计。出于匠行科技技术团队。主处理器采用复旦微电子FPGA JFM7VX690T36和长城银河多核 DSP FT-M6678N&#xff0c;二者之间通过SRIO x5 互联。板卡对外高速接口为PCIe3.0 x4、预留GTH x4&#xff0c;低速接口RS422 x…...

宇树一年赚6亿背后:研发投入不足1亿,7成人形机器人卖给高校

文章目录前言一、这不是科技公司&#xff0c;这是"高校特供"的硬体印钞机二、七成卖给高校&#xff1a;科研界的"乐高积木"三、研发费用不到1亿&#xff1a;极致省钱的"小脑"路线四、42亿募资背后的焦虑&#xff1a;要补"大脑"短板了五…...

终极指南:3个维度解锁Cyber Engine Tweaks,重塑赛博朋克2077游戏体验

终极指南&#xff1a;3个维度解锁Cyber Engine Tweaks&#xff0c;重塑赛博朋克2077游戏体验 【免费下载链接】CyberEngineTweaks Cyberpunk 2077 tweaks, hacks and scripting framework 项目地址: https://gitcode.com/gh_mirrors/cy/CyberEngineTweaks Cyber Engine …...

Qwen3.5-35B-AWQ-4bit企业应用指南:教育题图解析、医疗影像初筛、办公文档理解

Qwen3.5-35B-AWQ-4bit企业应用指南&#xff1a;教育题图解析、医疗影像初筛、办公文档理解 1. 引言&#xff1a;当AI学会“看图说话”&#xff0c;企业效率能提升多少&#xff1f; 想象一下这样的场景&#xff1a;一位老师需要快速从几十张试卷中找出典型错题&#xff0c;一位…...