0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32入门学习笔记之EEPROM存储实验3

jf_78858299 来源:滑小稽笔记 作者:电子技术园地 2023-02-16 14:22 次阅读

16.3.5 自身地址寄存器1:I2Cx_OAR1

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ADDMODE - ADD[9:8] ADD[7:1] ADD0

Bit 15:寻址模式(从模式)

0:7位从地址(不响应10位地址)

1:10位从地址(不响应7位地址)

Bit 9~Bit 8:接口地址

7位地址模式时不用关心

10位地址模式时为地址的9~8位

Bit 7Bit 1:接口地址,地址的71位

Bit 0:接口地址

7位地址模式时不用关心

10位地址模式时为地址第0位

16.3.6 自身地址寄存器2:I2Cx_OAR2

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- ADD2[7:1] ENDUAL

Bit 7Bit 1:接口地址,在双地址模式下地址的71位

Bit 0:双地址模式使能位

0:在7位地址模式下,只有OAR1被识别

1:在7位地址模式下,OAR1和OAR2都被识别

16.3.7 状态寄存器1:I2Cx_SR1

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SMBALERT TIMEOUT - PECERR OVR AF ARL0 BERR TXE RXNE - STOPF ADD10 BTF ADDR SB

Bit 15: SMBus提醒

在SMBus主机模式下:

0:无SMBus提醒

1:在引脚上产生SMBAlert提醒事件

在SMBus从机模式下:

0:没有SMBAlert响应地址头序列

1:收到SMBAlert响应地址头序列至SMBAlert变低

Bit 14:超时或Tlow错误

0:无超时错误

1:SCL低电平达到25ms;或主机低电平累积时间超过10ms;或从设备低电平累积时间超过25ms

Bit 12:在接收时发生PEC错误

0:无PEC错误:接收到PEC后接收器返回ACK(如果ACK=1)

1:有PEC错误:接收到PEC后接收器返回NACK(不管ACK是什么值)

Bit 11:过载/欠载

0:无过载/欠载

1:出现过载/欠载

Bit 10:应答失败

0:没有应答失败

1:应答失败

Bit 9:仲裁丢失(主模式)

0:没有检测到仲裁丢失

1:检测到仲裁丢失

Bit 8:总线出错

0:无起始或停止条件出错

1:起始或停止条件出错

Bit 7:数据寄存器为空(发送时)

0:数据寄存器非空

1:数据寄存器空

Bit 6:数据寄存器非空(接收时)

0:数据寄存器为空

1:数据寄存器非空

Bit 4:停止条件检测位(从模式)

0:没有检测到停止条件

1:检测到停止条件

Bit 3:10位头序列已发送(主模式)

0:没有ADD10事件发生

1:主设备已经将第一个地址字节发送出去

Bit 2:字节发送结束

0:字节发送未完成

1:字节发送结束

Bit 1:地址已被发送(主模式)/地址匹配(从模式)

地址匹配(从模式)

0:地址不匹配或没有收到地址

1:收到的地址匹配Bit 1:

地址发送标志(主模式)

0:地址发送没有结束

1:地址发送结束

10位地址模式时,当收到地址的第二个字节的ACK后该位被置1

7位地址模式时,当收到地址的ACK后该位被置1

Bit 0:起始位(主模式)

0:未发送起始条件

1:起始条件已发送

16.3.8 状态寄存器2:I2Cx_SR2

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PEC[7:0] DUALF SMBHOST SMBDEFAULT GENCALL - TRA BUSY MSL

Bit 15~Bit 8:数据包出错检测,当ENPEC=1时,PEC[7:0]存放内部的PEC的值

Bit 7:双标志(从模式)

0:接收到的地址与OAR1内的内容相匹配

1:接收到的地址与OAR2内的内容相匹配

Bit 6:SMBus主机头系列(从模式)

0:未收到SMBus主机的地址

1:当SMBTYPE=1且ENARP=1时,收到SMBus主机地址

Bit 5:SMBus设备默认地址(从模式)

0:未收到SMBus设备的默认地址

1:当ENARP=1时,收到SMBus设备的默认地址

Bit 4:广播呼叫地址(从模式)

0:未收到广播呼叫地址

1:当ENGC=1时,收到广播呼叫的地址

Bit 2:发送/接收

0:接收到数据

1:数据已发送

Bit 1:总线忙,在检测到SDA或SCl为低电平时,硬件将该位1

0:在总线上无数据通讯

1:在总线上正在进行数据通讯

Bit 0:主从模式

0:从模式

1:主模式

16.3.9 数据寄存器:I2Cx_DR

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- DR[7:0]

Bit 7~Bit 0:8位数据寄存器,用于存放接收到的数据或放置用于发送到总线的数据

发送器模式:当写一个字节至DR寄存器时,自动启动数据传输。一旦传输开始,如果能及时把下一个需传输的数据写入DR寄存器,I2C模块将保持连续的数据流

接收器模式:接收到的字节被拷贝到DR寄存器。在接收到下一个字节之前读出数据寄存器,即可实现连续的数据传送

注1:在从模式下,地址不会被拷贝进数据寄存器DR

注2:硬件不管理写冲突(如果TxE=0,仍能写入数据寄存器)

注3:如果在处理ACK脉冲时发生ARLO事件,接收到的字节不会被拷贝到数据寄存器里,因此不能读到它

16.4 实验例程

16.4.1 软件模拟IIC控制

(1)创建at24cxx.h文件,并输入以下代码。

/*********************************************************************************************************
                EEPROM    驱    动    文    件
*********************************************************************************************************/
#ifndef _AT24Cxx_H_
#define _AT24Cxx_H_


#include "sys.h"
/*********************************************************************************************************
                硬    件    端    口    定    义
*********************************************************************************************************/
#define IIC_SCL      PBout( 6 )
#define IIC_SDA      PBout( 7 )
#define IIC_SDA_READ  PBin( 7 )
/*********************************************************************************************************
                    函    数    列    表
*********************************************************************************************************/
void AT24Cxx_Init( void ) ;                                        //AT24C初始化
void AT24Cxx_Write_Data( u16 Address, u8 Data ) ;                            //写入1个数据
void AT24Cxx_Write_nData( u16 Address, u8 *Buffer, u16 Len ) ;                      //写入n个数据
void AT24Cxx_Read_Data( u16 Address, u8 *Data ) ;                            //读取1个数据
void AT24Cxx_Read_nData( u16 Address, u8 *Buffer, u16 Len ) ;                      //读取n个数据


#endif
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储器
    +关注

    关注

    38

    文章

    7484

    浏览量

    163775
  • EEPROM
    +关注

    关注

    9

    文章

    1019

    浏览量

    81564
  • 存储芯片
    +关注

    关注

    11

    文章

    896

    浏览量

    43136
收藏 人收藏

    评论

    相关推荐

    小白高手都适用,STM32学习教程(入门合集、自学笔记和例程)

    一个综合实例讲述一个STM32完整应用方案的实现过程。本书条理清楚,通俗易懂,贴近读者,主要面向STM32的初学者,以及所有对ARM Cortex—M3系列微控制器感兴趣的朋友们。STM32
    发表于 04-10 14:56

    CubeMX入门STM32 HAL库的学习笔记

    STM32CubeMX是ST官方开发的一款很好用的软件,主要用于STM32系列单片机的硬件驱动层的配置。网上也有一些关于STM32CubeMX的相关教程,对它的相关操作进行说明。从今天起,小柯希望能将自己从CubeMX
    发表于 08-17 06:55

    STM32入门学习笔记 精选资料分享

    STM32入门学习笔记本文为笔者入门学习过程的记录,只是零散的记录了一些个人不太懂得,觉得需要经
    发表于 08-24 07:56

    EEPROM开机记忆存储实验

    EEPROM开机记忆存储实验
    发表于 07-13 18:10 25次下载

    STM32各模块学习笔记

    STM32个模块学习笔记 目录 STM32笔记之一 中断优先级.......................................
    发表于 11-30 03:32 3158次阅读

    单片机学习EEPROM-IIC实验的资料合集免费下载

    本文档的主要内容详细介绍的是单片机学习EEPROM-IIC实验的资料合集免费下载。
    发表于 07-21 08:00 1次下载
    单片机<b class='flag-5'>学习</b><b class='flag-5'>之</b><b class='flag-5'>EEPROM</b>-IIC<b class='flag-5'>实验</b>的资料合集免费下载

    cortex_m3_stm32嵌入式学习笔记16ADC资料下载

    电子发烧友网为你提供cortex_m3_stm32嵌入式学习笔记16ADC资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决
    发表于 04-28 08:44 45次下载
    cortex_m<b class='flag-5'>3_stm32</b>嵌入式<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>16<b class='flag-5'>之</b>ADC资料下载

    STM32学习笔记1——软硬件基础keil5编程与GPIO开发

    STM32学习笔记1——软硬件基础keil5编程与GPIO开发
    发表于 11-30 12:36 4次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>1——软硬件基础<b class='flag-5'>之</b>keil5编程与GPIO开发

    STM32学习I2C协议(读写EEPROM

    关于STM32学习分享第七章 I2C协议(读写EEPROM)文章目录关于STM32学习分享前言二、代码1.i2c.c2.i2c.h
    发表于 11-30 15:21 32次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>学习</b><b class='flag-5'>之</b>I2C协议(读写<b class='flag-5'>EEPROM</b>)

    UM1766_STM32CubeF3入门STM32F3系列

    UM1766_STM32CubeF3入门STM32F3系列
    发表于 11-22 08:22 6次下载
    UM1766_<b class='flag-5'>STM32CubeF3</b><b class='flag-5'>入门</b><b class='flag-5'>之</b><b class='flag-5'>STM32F3</b>系列

    STM32入门学习笔记EEPROM存储实验1

    EEPROM(Electrically Erasable Programmable read only memory),称为带电可擦除可编程只读存储器,是一种可以断电保存数据的存储芯片,EEP
    的头像 发表于 02-16 14:22 2383次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>入门</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b><b class='flag-5'>之</b><b class='flag-5'>EEPROM</b><b class='flag-5'>存储</b><b class='flag-5'>实验</b>1

    STM32入门学习笔记EEPROM存储实验2

    EEPROM(Electrically Erasable Programmable read only memory),称为带电可擦除可编程只读存储器,是一种可以断电保存数据的存储芯片,EEP
    的头像 发表于 02-16 14:22 940次阅读

    STM32入门学习笔记EEPROM存储实验4

    EEPROM(Electrically Erasable Programmable read only memory),称为带电可擦除可编程只读存储器,是一种可以断电保存数据的存储芯片,EEP
    的头像 发表于 02-16 14:22 1526次阅读

    STM32入门学习笔记EEPROM存储实验5

    EEPROM(Electrically Erasable Programmable read only memory),称为带电可擦除可编程只读存储器,是一种可以断电保存数据的存储芯片,EEP
    的头像 发表于 02-16 14:23 618次阅读

    EEPROM存储实验

    可以在电脑上或专用设备上擦除已有信息,重新编程,一般用在即插即用设备中,这种存储芯片可以通过高于普通电压的作用来擦除或重写,EEPROM芯片一般用在需要频繁存储数据,但是数据量不大的场合,本
    的头像 发表于 03-01 14:54 9506次阅读
    <b class='flag-5'>EEPROM</b><b class='flag-5'>存储</b><b class='flag-5'>实验</b>