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

IIC总线协议详解 E2PROM的地址指针会自动递增,数据会依次保存在内存中。在起始信号后必须传送一个从机的地址(7位) 1~7位为7位接收器件地址,第8位为读写位,用“0”表示主机发送数据(W),“1”表示主机接收数据 (R), 第9位为ACK应答位,紧接着的为第一个数据字节,然后是一位应答位,后面继续第2个数据字节。E2PROM会自动向主机发送数据,主机读取从器件发回的数据,在读一个字节后,MCU会回应一个应答信号(ACK)后,E2PROM会继续传输下一个地址的数据,MCU不断回应应答信号可以不断读取内存的数据。 阅读详情

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接口
  • 编写写入/读取一个字节数据函数——遵循时序流程编写
  • 编写连续读和连续写函数——在上面的基础上进行实现
IIC协议的配置心得 IIC协议配置 本文只是提供一种配置IIC的思路,原理上是可以实现的,但在下才疏学浅,加上之前还有别的事,所以还没有调通代码,待将来有机会,真正在板子上实现之后,再来跟大家分享心得。如果各位看官有好的建议,或者发现了错误,希望能够在评论区留言,答主感激不尽!接下来进入正题。 1. IIC协议原理 众所周知,IIC是一种广泛用于主机与从机通信的协议。其大致分为 “写”操作 和 “读”操作,都是通过一... 阅读详情

相关推荐

第二天:IIC总线协议

再其次是数据传输方式,IIC总线的数据传输是基于字节(8位)的,每次传输一个字节,数据从主机传输到从设备或从设备传输到主机。IIC协议的实现成本较低,适合用于低功耗的设备。OLED屏幕共有四个引脚,分别是VCC电源、GND地、SDA数据线、SCL时钟线,将VCC电源连接到开发板电源,将GND地连接到开发板接地端,将SDA数据线连接到开发板SDA,将SCL时钟线连接到开发板SCL。停止条件:通信结束时,主机通过将SDA线从低电平拉高到高电平,发出停止信号,表示总线的释放(SDA上升沿,SCL保持高电平)。

LC_8575的博客 729

【IIC总线架构 之 IIC协议】

【IIC总线架构 之 IIC协议】

Sugar_wolf的博客 396

IIC总线协议与软件实现

IIC总线协议与软件实现第一次写博客,主要是将自己自学的一点东西记下来,与其做笔记,不如写博客。这几天看了I2C协议,这是大部分芯片必用的协议,花了几天时间,找了很多资料,终于有所悟,我来分享给大家。一、I2C协议时序图 写时序: 起始信号:处理器将SCL置高电平,SDA下降沿,进入数据传输状态。 数据传输:不论是写还是读,i2c规定SCL被拉高之前,数据必须放在SDA上待读取,SCL一旦处于高电

IT_BOY__的博客 1338

六,IIC通讯配置

主要要注意速度,QMA7981最大通讯速度为400K,在配置速度的时候不要超过400k就行,最低速的MSSPEED是63的值,代入公司计算,我们系统频率是35M,1:iic写命令,有2个参数,寄存器地址和要发送的数据,注意寄存器地址有7位并且可以通过芯片上下拉做选择,是为了可以并联使用2个相同的芯片。:读取,我们读取从机返回的数据也是有时序的,数据也是通过SDA引脚读回来的,当然也读8个位,还是得循环。,发送与接收,发送的话需要将发送的数据写到发送数据寄存器里面,需要配合控制寄存器使用。

u013168074的博客 3924

IIC总线协议中文详解与应用实战

简介:IIC总线协议(Inter-Integrated Circuit)是由Philips公司于1982年推出的一种高效、简洁的串行通信协议,广泛应用于微控制器与低速外围设备之间的数据传输。该协议采用两线制(SDA和SCL),支持多主机仲裁、双向通信和多达128个从设备的挂载,具备良好的可扩展性和同步性。其标准模式下速率达100kbps,高速模式可达3.4Mbps,在传感器、显示模块、实时时钟等嵌入式系统中广泛应用。

weixin_35835018的博客 717

AUTOSAR E2E Protocol实战:Profile1到Profile5的配置差异与最佳实践

本文深入解析AUTOSAR E2E Protocol中Profile1到Profile5的核心配置差异与适用场景。针对经典CAN、CAN FD及以太网等不同总线,详细对比了计数器、CRC、DataID等关键参数,并结合实战代码与配置示例,为工程师根据功能安全等级、数据长度与带宽限制选择最佳Profile提供了清晰的选型路径与工程实践指南。

milk5的博客 938

【通信协议系列】IIC总线协议

本篇文章是为了重新回顾了一下通讯协议,扫扫知识盲区。本篇文章会掺和我在复习过程以及刚开始学习中的一些疑问,采用“一问一答”的方式来补充。并根据问题去网上找答案,给出答复。也方便大家复习,节省时间,加深印象!IIC总线:集成电路总线,一种同步、串行、半双工通信总线。软件IIC通过普通GPIO引脚,用代码模拟IIC协议的时序(如拉高/拉低SDA和SCL),完全由软件控制通信流程。优点高度灵活:可任意选择GPIO引脚,方便硬件布局(如PCB布线受限时);

m0_74754192的博客 2901

Python+whisper/vosk实现语音识别

Whisper 是一个由 OpenAI 开发的人工智能语音识别模型,它能够将语音转换为文本。Whisper 模型特别之处在于它的设计目标是能够理解和转录多种语言的语音,包括但不限于英语。Whisper 模型在训练时使用了大量不同语言的语音数据,这使得它具有很好的跨语言能力。Vosk 是一个开源的语音识别库,它可以在离线环境下工作,不依赖于任何外部服务。Vosk 基于Kaldi语音识别框架,支持多种语言,包括中文。Vosk提供了多种预训练模型,可以根据需求选择适合的模型进行语音识别。

weixin_44458771的博客 5937

IIC总线协议,7位,8位,10位地址

IIC总线 1.1. 概述 IIC开发于1982年,当时是为了给电视机内的CPU和外围芯片提供更简易的互连方式。电视机是最早的嵌入式系统之一,而最初的嵌入系统是使用内存映射(memory-mapped I/O)的方式来互连微控制器和外围设备的。要实现内存映射,设备必须并行连入微控制器的数据线和地址线,这种方式在连接多个外设时需大量线路和额外地址解码芯片,很不方便并且成本高。 为了节省微控制器的引脚和和额外的逻辑芯片,使印刷电路板更简单,成本更低,位于荷兰的Philips实验室开发了IIC(Inter-In

aa_jj的博客 1万+

MounRiver避坑实录:手把手迁移CH32V307 EVT工程到自定义目录

本文详细记录了将沁恒CH32V307的EVT工程迁移到自定义目录的完整流程与避坑指南。针对MounRiver Studio的虚拟链接机制,重点讲解了如何清理旧配置、重新设置头文件路径、链接脚本等关键步骤,帮助开发者创建独立、可维护的MCU项目工程。

uber9的博客 242

Vmware 17保姆级教程:从零部署华为enspPro模拟器(附镜像下载+配置优化)

本文提供了一份详尽的Vmware 17部署华为eNSP Pro模拟器的保姆级教程。内容涵盖从镜像下载、虚拟机导入、网络配置到深度性能调优的全过程,并针对常见启动失败、设备卡顿等故障提供了实用的排查方案,旨在帮助网络工程师和华为认证备考者快速搭建稳定高效的实验环境。

arduino9maker的博客 628

SPI、UART、RS232、RS485、IIC 5种嵌入式经典通信总线协议

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

p975468132的博客 1万+

王珊数据库系统概论第5版视频教材

目录 隐藏 说明:本课程共包括1种电子书、84个高清视频(共68课时)、1种纸质书(赠品)。 网授课程 王珊《数据库系统概论》(第5版)网授精讲班【共68课时】 序号 名称 课时 1 第1章 绪 论(1) 00:32:25 2 第1章 绪 论(2) 00:17:03 3 第1章 绪 论(3) 00:50:19 4 第1章 绪 论(4) 00:20:37 5 第1章 绪 论(5) 00:24:47 6 第2章 关系数据库(1) 00:47:23 7 第2章 关系数据库(2) 00:14:48 8 第2章 关系

mrtaoy96的博客 1144

嵌入式必备总线协议 UART、IIC、SPI、RS232、RS485、CAN

针对嵌入式总线协议进行展开的文章

你要拥有一个你喜欢并且热爱的人生 1万+

SAP录入总账凭证报错 公司代码未被分配给国家或用于计算程序的国家消息号 FF703

SAP系统报错FF703的解决方案:当公司代码未分配国家或未配置计税程序时,会导致增值税计算失败。处理方法:1)通过OX02检查公司代码国家字段;2)使用OBBG为国家分配计税程序(如TAXCN)。配置步骤:1)SPRO分配公司代码到国家;2)OBBG设置国家对应的计税程序。注意事项:历史数据需清理才能修改国家字段,不同账簿可配置不同计税程序。完成配置后即可正常处理含税凭证。

金牌架构师 557

Windows 11 WSL2环境下OpenClaw部署的兼容性问题分析与解决方案研究

本文研究了OpenClaw在Windows 11 WSL2环境下的部署方案。WSL2通过无缝集成Linux与Windows系统,为OpenClaw提供了良好的运行环境,支持GPU加速和跨平台开发。文章详细分析了硬件配置要求(推荐8核CPU/16GB内存/NVMe SSD)、系统选择(Windows 11 Pro+Ubuntu 22.04)以及部署步骤,包括WSL2启用、Linux发行版安装、Python/Node.js/Redis等依赖配置。通过优化.wslconfig文件参数(如内存分

博客 2278

Verilog -- IIC总线协议

Verilog – IIC总线协议 文章目录Verilog -- IIC总线协议简介读写时序写时序读时序verilog代码设计IIC发送模块的接口定义与整体设计SCL标志位创建逻辑发送逻辑读逻辑IIC设备多字节连续读写操作 参考自 https://www.cnblogs.com/liujinggang/p/9656358.html 上面的博文写的很好,下面只是摘录一些重要知识点以及自己的理解。 ...

darknessdarkness的博客 1367

【软件系统架构】系列六:系统工程

系统工程是一种跨学科方法论,用于分析、设计、集成和管理复杂系统的全生命周期。其核心特点包括系统性思维、全周期管理、跨学科协作和需求导向。主流采用V模型生命周期,涵盖需求分析、系统设计、实现、测试验证及运维退役等阶段。核心工作方法包括需求工程、系统建模、接口设计、风险管理等。系统工程与项目管理协同,分别侧重技术实现和进度资源管理。应用领域覆盖航天军工、智能制造、智慧城市等。未来将向AI融合、数字孪生、模型驱动工程等方向发展,为复杂系统开发提供系统化协作范式。

moton2017的博客 2256

【正点原子STM32】IIC总线协议(拓扑图、IIC协议的核心特征、IIC协议的时序、AT24C02基于EEPROM非易失性存储器件、AT24C02读写时序、AT24C02驱动步骤、IIC通信失败)

在实际应用中,IIC总线因其简单易用、占用IO口少、支持热插拔和故障隔离等特点,常被用于各种嵌入式系统中不同器件间的通信,如温度传感器、EEPROM、ADC、DAC等。总之,IIC总线协议作为一种简洁高效的通信协议,广泛应用于传感器、存储器、微控制器等各种集成芯片间的通信,尤其适用于那些只需要少量线路连接和较低数据速率的应用场景。总结来说,IIC协议通过严格的时序规定保证了通信的可靠性和准确性,尤其是在多设备共用一条总线的情况下,这种有序的时序控制尤为重要。一、IIC总线协议介绍。一、IIC总线协议介绍。

咖喱年糕的博客 3376

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

RS232、RS485、SPI、IIC 4种嵌入式经典通信总线协议

UART、RS232、RS485、IIC、SPI是最常用的5种通信总线协议,广泛应用于项目开发之中,可以说只要是智能终端产品,都会使用到它!智能时代,它不仅是嵌入式物联网、智能硬件开发的必备技能,也是进一步学习TCP/IP等复杂通信协议的基础。从本质上来说,RS232,RS485都是依附于UART,只不过是在电气层或者物理层上的规定不同,目的是为了提高抗干扰能力,提高传输距离和传输的速度。SPI,IIC则是独立的总线协议,但两者之间也有相同之处,我们可以将两放在一起相互比较学习,体会这两种协议之间优缺点。

wa_chao_的博客 2938

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

嵌入式系统中的常用总线协议讲解包括(UART、IIC、SPI等)

嵌入式系统中的常用总线协议讲解包括(UART、IIC、SPI等),个人学习用,如有错误,欢迎指正!

嵌入式人工智能相关 2367

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SPI、UART、RS232、RS485、IIC 5 种嵌入式经典通信总线协议

Universal Asynchronous Receiver Transmitter 即通用异步收发器,是一种通用的串行、异步通信总线该总线有两条数据线,可以实现全双工的发送和接收在嵌入式系统中常用于主机与辅助设备之间的通信。串口的时钟线不是同一条,有累计误差,不可以发送任意多的数据。IIC 总线是 Philips 公司在八十年代初推出的一种串行半双工总线主要用于近距离低速的芯片之间的通信: IIC 总线有两根双向的信号线: 一根数据线 SDA用于收发数据,一根时钟线 SCL用于通信双方时钟的同步。

qq_43298381的博客 2235

【嵌入式】串行通信协议总结:UART,SPI,IIC,CAN

随着半导体技术的发展,数据传输速度逐渐增加,随之而来的是串行通信基本取代了并行通信,因此,了解常用的串行通信协议对于嵌入式开发来说非常有必要,这里总结一些用过的串行通信协议,重点在于其数据传输时序图。由于看到很多优快云大佬写的文章非常详细也非常全面,故而本文主要是总结链接,以及总结个人实践经验。简单来说,SPI传输协议就是通过主设备发生时钟,然后交换数据,不同的模式区别只在于数据是什么时候采样,什么时候锁存传输的,但是似乎目前大部分设备这一点都是设定好的,不能修改。起始信号、停止信号、应答信号。。...

记录学习成长之路,进一寸有进一寸的欢喜 4866

嵌入式学习之IIC

https://www.toutiao.com/i6971594650234946081/

一口Linux的专栏 1752

IIC总线协议规范:深入理解与高效应用

IIC总线协议规范:深入理解与高效应用 去发现同类优质开源项目:https://gitcode.com/ IIC总线协议规范:项目的核心功能/场景 项目介绍 在嵌入式系统和微控制器通信中,IIC总线协议规范发挥着至关重要的作用。本项目旨在提供一份详尽的《IIC总线协议规范》PDF文件下载,帮助用户深入理解和掌握IIC(Inter-Integrated Circuit)总线协议的相关规范和标准。这份...

gitblog_06756的博客 970
上一篇: 【学习FreeRTOS】第7章——FreeRTOS临界段代码保护及调度器挂起与恢复
下一篇: 【学习FreeRTOS】第8章——FreeRTOS列表和列表项
Sunny_Coder
博客等级 码龄7年 124粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值