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

I2C读写EEPROM(AT24C02)QA


传输时序:
1.器件地址通过AT24C02上的A0、A1、A2三个地址位引脚提前设定;
2.地址指的是挂载在总线上的存储的器件的地址;
3.器件内部的存储地址是第一个要发送的数据(Data1);

SCB寄存器:
位于内核中;

为什么要使用中断:
硬件按SCL时序完成数据收发和ACK检测后,触发中断,中断服务函数读取硬件的状态标志,确认操作是否成功,再指挥硬件执行后续的数据发送/接收动作;

若在轮询模式下使用while循环,CPU会死等应答信号,造成CPU资源浪费,ACK 检测是硬件的活,CPU 不参与、不等待,全程可以处理其他任务,仅当硬件检测到ACK结果(成功/失败)然后触发中断触发时CPU才花极短时间处理结果,这正是中断模式效率高的核心原因;

多地址模式中的第二地址:
为挂载更多的设备在总线上;

Debug时遇到的问题:
1.在循环处打断点,设置循环次数,出现debug不停的现象,可以选择程序中的行号打断点,也可以选择汇编指令中的地址号打断点,ctrl+b调出菜单define断
点位置和循环次数;
2.设置条件断点 define a = 10
3.在读写内存的时候设置断点,通过选择菜单中的read或write并写入要监测的变量;

I2C的数据传输:
采用半双工的传输方式,主从设备通过地址帧握手实现数据传输;

I2C的数据寄存器:
同SPI一样,I2C外设中的数据寄存器也是数据收发的窗口,不是正真的buffer寄存器;

Systick:
是CM4的内核外设,其中重装载寄存器的值递减到0,触发一次中断,VAL保存的是当前倒计数的值,若需记录触发中断的次数需要软件记录;

数据传输时的状态读取:
由软件记录Systick的中断次数,为等待状态设定等待时间上限,防止死等;


数据流向:
由stm32向eeprom写:32的内存(pBuffPtr指针,指向的时32内存中的一块区域,里面保存有要写入的内容) -> i2c外设(数据寄存器) —> 通过i2c总线到eeprom

由stm32从eeprom读:eeprom通过i2c总线 -> i2c外设的数据寄存器 -> 32内存


为什么在向寄存器写入后又读一遍:

SET_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN);\
/* Delay after an RCC peripheral clock enabling */ \
tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN);\
UNUSED(tmpreg); \
为了实现硬件同步,在软件写入之后,寄存器会更新内容,在读的过程中会检查寄存器中的数据是否稳定,从而实现硬件同步的目的;

遇到了一次Debug显示的Pin值与程序中选择的Pin不一致:
重新编译了一次再次Debug又一致了,可能时编译器缓存或硬件调试器缓存的问题;

为什么在 HAL_I2C_MspInit 函数里先强制复位I2C再释放复位:
1.清理 “烂摊子”:保证 I2C 从一个干净、已知的状态开始初始化,清除之前可能残留的错误或异常设置。
2.配合硬件启动:硬件要求这样做,能让 I2C 与其他部分在启动时同步,还能等时钟和电源稳定后再正常工作。
3.规范与通用:遵循 HAL 库设计规范,形成标准流程,方便维护和移植,也为错误恢复提供基础。
该函数会在HAL_I2C_Init中调用;

http://www.cnnetsun.cn/news/154535.html

相关文章:

  • 揭秘CVAT自动标注:AI驱动的高效数据标注革命
  • VINS-Fusion-ROS2视觉SLAM系统:从零开始掌握多传感器融合定位技术
  • 3分钟搞定FFXIV快速启动器:新手必备的安装使用全攻略
  • 2023年6月英语六级真题完整获取与使用指南
  • MPV播放器终极调校:专业级色彩管理与HDR视觉优化指南
  • 无障碍播放器终极指南:键盘导航与屏幕阅读器完全攻略
  • 项目分享|AI 交易代理:一个开源量化交易智能体项目
  • 终极指南:5分钟掌握B站视频下载神器BiliTools
  • Langchain-Chatchat在培训资料检索中的高效组织方式
  • Ant游戏引擎:打造高性能3D渲染的终极指南
  • DBeaver GIS数据查看器完全指南:零代码掌握空间数据可视化
  • JeecgBoot大屏动态刷新实战指南:让数据实时“活“起来
  • 如何安全关闭Open-AutoGLM敏感操作?5分钟掌握核心验证机制
  • 锐捷RGSE | IS-IS中间系统到中间系统路由协议技术原理(1/2)
  • 终极图像特征提取指南:D2-Net让计算机看懂世界
  • 智能体快速适配技术:迁移学习的工程实践指南
  • 5G网络自动化运维:Ansible如何重塑通信基础设施管理新范式
  • 突破传统交互:FunASR语音识别技术如何重塑游戏体验
  • WampServer 3.1.7:为什么它成为Windows开发者必备神器?
  • DiffSynth-Engine终极指南:打造快速高效的扩散模型推理引擎
  • ghettoVCB 虚拟机备份工具仿写文章Prompt
  • Pine Script量化交易:7天从入门到实战的完整路线图
  • 如何快速掌握libhv:跨平台网络编程终极指南
  • 终极企业级管理系统搭建指南:ruoyi-vue-pro完整解决方案
  • Apple Silicon极速部署F5-TTS:流畅语音合成的完整实践指南
  • Android数学公式显示终极指南:MathView库完整教程
  • PageIndex终极指南:无需向量数据库的智能文档检索革命
  • 如何快速掌握pyimgui:Python立即模式GUI开发的终极指南
  • Obsidian主题深度定制:打造极致美观的知识管理空间
  • 多机协同SLAM:突破单机局限的分布式建图革命