STM32读取EEPROM存储芯片AT24C512故障然后排坑记录

news2024/12/29 10:12:44

背景:

有一个项目用到STM32F091芯片去读取 AT24C512C-SSHD  EEPROM 芯片,我直接移植了之前项目的IIC库,结果程序运行后,读不出EEPROM里面的数据。

摘要:

本文主要介绍一个基于STM32F091芯片和AT24C512C-SSHD EEPROM芯片的项目,该项目旨在读取EEPROM芯片中的数据。我直接移植了之前项目的库,但是遇到了读不出EEPROM数据的问题。本文记录了问题的发型与排查过程。

运行开发环境介绍

硬件环境

STM32F091CBT6

J-LINK  V11

软件开发环境

IAR 8.32.1 

VSCODE 

软件支持包ST HAL 库

正文:

来到新公司后接了一个项目,用到STM32F091芯片去读取 AT24C512C-SSHD  EEPROM 芯片,我直接移植了之前项目的IIC驱动库,结果程序运行后,读不出EEPROM里面的数据。

解决方法:

1.单步仿真,在IIC驱动部门的SCL和SDA 拉高和拉低之后打断点,然后单步运行,用万用表测量电压,看SCL 和SDA线的电平变化是否正常。

2.重新查看EEPROM芯片数据手册,搜索定位问题。

实验结果:

解决方法1:

单步仿真,用电压表量电压,发现电压变化正常。

解决方法2:

重新查看数据手册,发现了下面的东东:

大体意思就是说, AT24C512C Device Address 的地址字中

A0 A1 A2 代表着EEPROM芯片的IIC通讯地址。

而且设备地址的LSB最后一位还代表着不同的读写模式。

 再看一下我的电路图,可以看到,我的电路中A0是1,A1 A2 为 0 

可以看到我发送的器件地址为  0xA0,这就是因为我直接用的之前AT24C512 的 IIC  驱动库,没有注意到芯片的地址是可更改的。

所以程序中应该将地址改为:0xA8

容易踩的坑:

AT24C系列EEPROM的IIC通讯器件地址是可以硬件配置的!

移植原有代码的时候,特别是像我这样跳槽了后注意不同硬件设计人员的设计习惯不一样!

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

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

相关文章

2、LLVM 函数名称加密 及3种PASS的实现

sudo usermod -a -G vboxsf nowind nowind是你的虚拟机登录的用户名解决virtualbox 虚拟机共享文件夹不能使用的问题 第一种:源码内实现pass: 实现EncodeFunctionName 的pass,核心代码如下 相关文件的修改: 因为后面同样用到…

【征稿倒计时十天】第三届高性能计算与通信工程国际学术会议(HPCCE 2023)

【有ISSN、ISBN号!!往届均已完成EI检索】 第三届高性能计算与通信工程国际学术会议(HPCCE 2023) 2023 3rd International Conference on High Performance Computing and Communication Engineering (HPCCE 2023) 2023年12月22-24日 | 中国哈尔滨 第三…

由浅入深分析c++多态原理

多态 背景多态构成多态的两个条件虚函数虚函数重写虚函数重写的两个例外 c11的override和final重载、覆盖(重写)、隐藏(重定义的对比) 抽象类接口继承和实现继承 多态底层原理虚函数表易错问题: 多态原理 动态绑定和静…

深入源码解析ArrayList:探秘Java动态数组的机制与性能

文章目录 一、 简介ArrayList1.1 介绍ArrayList的基本概念和作用1.2 与数组的区别和优势 二、 内部实现2.1 数据结构:动态数组2.2 添加元素:add()方法的实现原理2.3 扩容机制:ensureCapacity()方法的实现原理 三、 常见操作分析3.1 获取元素&…

OLED屏幕,如何成为商显主流

OLED屏幕在商显领域的应用逐渐增加,成为商显主流的原因主要有以下几点: 显示效果优异:OLED屏幕具有自发光原理,色彩鲜艳、对比度高、视角广,能够提供更好的视觉体验。在商业展示、广告宣传等场景中,OLED屏幕…

高通平台开发系列讲解(USB篇)Composite USB gadget framework

文章目录 一、Gadget framework二、Composite driver and gadget driver interaction沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要图解高通平台PCIe EP软件架构 一、Gadget framework Composite USB gadget framework 架构如下所示: The composite fram…

【二分查找】【区间合并】LeetCode2589:完成所有任务的最少时间

作者推荐 【动态规划】【广度优先】LeetCode2258:逃离火灾 本文涉及的基础知识点 二分查找算法合集 有序向量的二分查找,向量只会在尾部增加删除。 题目 你有一台电脑,它可以 同时 运行无数个任务。给你一个二维整数数组 tasks ,其中 ta…

java常用集合的区别与联系以及应用场景

文章目录 Java集合三大类(1)List概述(2)Set概述(3)Map概述 集合间的区别与联系List,Set和Map的区别ArrayList、Vector和LinkedList的区别HashSet、LinkedHashSet和TreeSet的区别HashSet与HashMa…

探索未来新趋势:鸿蒙系统的崭新时代

探索未来新趋势:鸿蒙系统的崭新时代 随着科技的不断发展,操作系统作为计算机和移动设备的核心,扮演着至关重要的角色。近年来,一种备受瞩目的操作系统——鸿蒙系统(HarmonyOS)崭露头角,正引领着…

Standoff 12 网络演习

在 11 月 21 日至 24 日于莫斯科举行的 "Standoff 12 "网络演习中,Positive Technologies 公司再现了其真实基础设施的一部分,包括软件开发、组装和交付的所有流程。安全研究人员能够在安全的环境中测试系统的安全性,并尝试将第三方…

Java - Spring中BeanFactory和FactoryBean的区别

BeanFactory Spring IoC容器的顶级对象,BeanFactory被翻译为“Bean工厂”,在Spring的IoC容器中,“Bean工厂”负责创建Bean对象。 BeanFactory是工厂。 FactoryBean FactoryBean:它是一个Bean,是一个能够辅助Spring实例…

Qt 中文处理

windows下 Qt显示中文的几种方式: 1, 环境:Qt 5.15.2 vs2019 64位 win11系统 默认用Qt 创建的文件使用utf-8编码格式,此环境下 中文没有问题 ui->textEdit->append("中文测试"); 2, 某些 低于…

js Array.every()的使用

2023.12.13今天我学习了如何使用Array.every()的使用,这个方法是用于检测数组中所有存在的元素。 比如我们需要判断这个数组里面的全部元素是否都包含张三,可以这样写: let demo [{id: 1, name: 张三}, {id: 2, name: 张三五}, {id: 3, name…

高效数组处理的Numpy入门总结

NumPy是Python中一个重要的数学库,它提供了高效的数组操作和数学函数,是数据科学、机器学习、科学计算等领域的重要工具。下面是一个简单的NumPy学习教程,介绍了NumPy的基本用法和常用函数。 安装NumPy 在使用NumPy之前,需要先安…

ArkTS的状态管理机制(State)

什么是ArkTS的状态管理机制 声明式UI中,是以状态(State)来驱动视图更新的(View)。 状态是指驱动视图更新的数据(被装饰器标记的变量)。 视图是指UI描述渲染得到的用户页面。 互动事件可以改变状态的值。状态改变以后,又会触发事件,渲染页面。…

统信UOS使用4种方法重置用户密码

原文链接:统信UOS使用4种方法重置用户密码 hello,大家好啊,今天我要给大家介绍的是在统信UOS操作系统上使用4种不同方法来重置用户密码。我们都知道,在日常使用中,偶尔会忘记密码,尤其是在使用多个账户的情…

蓝牙协议栈学习笔记

蓝牙协议栈学习笔记 蓝牙简介 蓝牙工作在全球通用的 2.4GHz ISM(即工业、科学、医学)频段,使用 IEEE802.11 协议 蓝牙 4.0 是迄今为止第一个蓝牙综合协议规范,将三种规格集成在一起。其中最重要的变化就是 BLE(Blue…

淘宝订单API接口在电商行业中的应用与实现

一、引言 随着电商行业的快速发展,订单处理成为电商运营的核心环节。淘宝作为中国最大的电商平台之一,其订单API接口在电商行业中的应用越来越广泛。本文将详细介绍淘宝订单API接口在电商行业中的应用,并深入剖析相关的技术细节,…

前端设计模式之旅:命令模式

引言 使用命令模式,我们可以将执行特定任务的对象与调用该方法的对象解耦。 核心思想 命令模式的核心思想是将请求封装成一个对象,从而使请求的发起者和请求的执行者解耦。 这样,请求的发起者只需要知道如何创建命令对象并将其传递给请求者…

基于SSM架构的超市管理系统设计

基于SSM架构的超市管理系统设计 目录 基于SSM架构的超市管理系统设计 1 环境及工具1.1 IDEA软件安装1.2 JDK环境配置1.3 MySQL数据库安装1.3.1常规情况1.3.2非常规情况 1.4 Tomcat安装 2 部署与设计2.1 数据库信息创建2.2项目创建与部署 3 相关说明4 功能操作说明4.1 管理员操作…