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

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

3天内不再提示

3线串行数据通讯EEPROM的使用

CHANBAEK 来源:羊羊课代表 作者: Dingdong 2023-10-23 17:08 次阅读

EEPROM(带电可擦可编程只读存储器)是用户可更改的只读存储器,可通过高于普通电压的作用来擦除和重编程(重写)。不像EPROM芯片,EEPROM不需从计算机中取出即可修改。在一个EEPROM中,当计算机在使用的时候可频繁地反复编程,因此EEPROM的寿命是一个很重要的设计考虑参数。EEPROM是一种特殊形式的闪存,其应用通常是个人电脑中的电压来擦写和重编程 。-(来自百度)

该芯片特性(AT93C46):

1、高速操作,最大速度3MHZ的读写操作。

2、1KB的存储空间。

3、宽电压输入(1.8V-6V)。

4、可通过ORG(6脚)来选择8位-16位数据流

5、上电写保护功能

6、1百万个编程周期

7、100年的数据保存寿命

01引脚连接及时序

管脚名称功能
CS(1)芯片片选信号(高电平有效)
SK(2)数据传输的时钟信号
DI(3)串行数据输入
DO(4)串行数据输入
GND(5)电源
ORG(6)数据位选择(GND:8Bit数据流 VCC:16位数据流)
NC(7)空脚
VCC(8)+1.8V-6V电压

内部结构:

图片

MCUSTM32F03

连接方式如图:

图片

C93_CS->CS

C93_SCK->SCK

C93-DI->DI

C93_DO->DO(引脚配置为输入模式)

除DO引脚配置为输入模式外,其余引脚均配置为输出模式。

时序图:

写时序:

图片

读时序:

图片

写保护使能(Disable):

图片

去写保护:(Enable)

图片

另外还有几条指令我们需要知道的

图片

写入的数据包含1位开始位两位操作位及地址位。

02编程方法操作

因为擦除等指令需要4.5V上的电压这里提供不了,所以并没有使用,但是写入数据的时候会自动覆盖原先数据,所以不用担心

其代码如下:

/****************************************/
/*****AT93C46 EEPROM 驱动 8Bit数据流 ****/
/****************************************/
//2021.09.03 羊羊课代表By DDY
//读取及写入需要存在一定时间间隔,请注意。
void Start_Bit()//写入开始位
{
  AT93C_CS_L;
  AT93C_CLK_L;


  AT93C_DI_H; //待写入1
  AT93C_CS_H;//选中芯片

  AT93C_CLK_H;
  AT93C_CLK_L;//给时钟信号

  AT93C_DI_L;//置位引脚
}


void AT93_Clock()//时钟信号
{
  AT93C_CLK_H;
  HAL_Delay(1);
  AT93C_CLK_L;  
}


void AT93_Send_9_Dat(uint16_t Data)
{
  for(uint8_t i=0;i< 9;i++)//加上面的开始位
  {                       //送进的格式为1 01XXXXXXX 指令加地址
    if(Data&(0x100 >>i))
      AT93C_DI_H;
    else AT93C_DI_L;

    AT93_Clock();
  }    
}


void AT93C_Enable(uint8_t Bit)
{
  uint8_t Temp=0;

  if(Bit) Temp=0x98;//Enable写使能
  else Temp=0x80; //Disable写禁使能

  AT93C_CS_L;//引脚电平重置
  AT93C_CLK_L;//引脚电平重置

  AT93C_CS_H;//选中芯片

  for(uint8_t i=0;i< 10;i++)//发送10位指令
  {
    if(Temp&0x80 >>i)
    AT93C_DI_H ;
    else AT93C_DI_L;

    AT93_Clock();
  }

  AT93C_CS_L;//置低降低功耗
  AT93C_DI_L;
}


void AT93C_Write(uint8_t Addr,uint8_t Data)
{
  AT93C_Enable(1);//写使能



  Addr|=0x80;//数据变为1XXXXXXX
  Start_Bit();  //写一个开始位

  AT93_Send_9_Dat(Addr);

  AT93C_DI_L;
  for(uint8_t i=0;i< 8;i++) //送进8Bit数据
  {

    if(Data&(0x80 >>i))
      AT93C_DI_H;
    else AT93C_DI_L;

    AT93_Clock();
  }
  AT93C_CS_L;//置低降低功耗

  AT93C_Enable(0);  //禁写使能
}


uint8_t AT93C_Read(uint8_t Addr)//读该地址的8Bit数据
{
  uint8_t Data=0;
  AT93C_Enable(1);

  Start_Bit();


  AT93_Send_9_Dat((0x7f&Addr)|0x100);//数据变成10XXXXXXX;
  AT93_Clock();

  for(uint8_t i=0;i< 8;i++)//接收8位数据
  {
    if(AT93C_ReadDO)
    {
      Data|=0x80 >>i;
    }
    AT93_Clock();
  }

  AT93C_CS_L;//置低降低功耗
  AT93C_Enable(0);

  return Data;
}


//extern char str[20];
//void Test()
//{
//  temp=AT93_Read(0x01);


//  sprintf(str,"%03d",temp);
//  OLED_Show_Str(96,0,str,Font8x16,0);
//  Updata_OLED();
//  HAL_Delay(100);
//  temp+=1;
//  AT93C_Write(0x01,temp);  
//}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    447

    文章

    47788

    浏览量

    409123
  • 闪存
    +关注

    关注

    16

    文章

    1688

    浏览量

    114226
  • 存储器
    +关注

    关注

    38

    文章

    7148

    浏览量

    161986
  • 计算机
    +关注

    关注

    19

    文章

    6649

    浏览量

    84526
  • EEPROM
    +关注

    关注

    9

    文章

    927

    浏览量

    80314
收藏 人收藏

    评论

    相关推荐

    labview 实时机与上位机之间的数据通讯

    labview中 实时机与上位机之间的数据通讯大家都是如何处理的?对采集的数据和控制数据怎样分配的?
    发表于 04-02 09:34

    远程医疗的数据通讯分析

    只能通过cable或者WIFI和远程终端进行数据交换,智能手机有着普及性和便携性绝对优势成为数据通讯的载体。智能手机和远程终端的数据交换通过GPRS(3G,4G)或者WIFI,那智能手
    发表于 09-12 13:05

    labview串口数据通讯的好例子,智能小车避障

    一个智能小车的避障监控界面,串口数据通讯,非常适合初期的学习
    发表于 04-02 19:00

    LabVIEW通过网口与安川控制器MP2300s进行数据通讯

    各位大神,本人想编写个labview程序,通过与安川控制器通讯,以达到控制电机的目的,基本程序已经在MPE720软件中编写好了,只需要进行简单的数据通讯即可。本人在通讯这方面小白一个,求赐教!!不胜感激!!
    发表于 07-07 16:01

    智能网关IGT-DSER是如何实现PLC与数据库之间的数据通讯的?

    IGT-DSER带有哪几种数据缓存功能?智能网关IGT-DSER是如何实现PLC与数据库之间的数据通讯的?
    发表于 07-02 06:04

    DHT11数字温湿度传感器的数据通讯过程是怎样的

    DHT11数字温湿度传感器是什么?有何优点呢?DHT11数字温湿度传感器的数据通讯过程是怎样的?
    发表于 01-18 06:07

    计算机之间的基本数据通讯方式有哪些

    键盘中CPU将键盘按键信息处理完后,通过USB-HID的通讯方式上传计算机的CPU。这样子的处理方式计算机(主控)CPU任务处理,更有利于设备更换(不至于键盘坏了,需要换一台计算机)。计算机之间的基本数据通讯方式有并行通讯
    发表于 02-23 06:50

    基于CANopen协议的车载平台数据通讯系统

    在分析CANopen 协议结构和特点的基础上,着重给出了用CANopen 协议开发车载平台数据通讯系统的方法,其中包括CAN 控制器的硬件接口设计和DLL 模块、对象字典、应用程序等软件部分
    发表于 07-07 14:59 25次下载

    井下供电自动化系统数据通讯电路的研究与设计

    井下供电自动化系统数据通讯电路的研究与设计 根据煤矿供电系统结构特点及功能要求,开发研制出基于微机技术的井下供电自动化系统数据通讯电路。该电路由监控终端
    发表于 10-11 17:35 13次下载

    基于USB接口的超声检测数据通讯

    为满足超声C 扫描系统对数据传输的要求,根据USB 接口芯片CH372 的工作原理,设计了单片机端的硬件和固件程序以及上位机的软件,实现了基于USB 接口的超声检测数据通讯模块。实验结
    发表于 05-12 18:02 69次下载
    基于USB接口的超声检测<b class='flag-5'>数据通讯</b>

    PLC与NC间的实时数据通讯

    本文介绍了 RS232 在冲压开卷线中的应用,并从原理上分析了RS232在PLC与NC间实现串行数据通讯的方法
    发表于 07-22 18:01 55次下载
    PLC与NC间的实时<b class='flag-5'>数据通讯</b>

    基于DSP与PC间的数据通讯

    基于DSP与PC间的数据通讯
    发表于 10-20 10:13 3次下载
    基于DSP与PC间的<b class='flag-5'>数据通讯</b>

    应该了解300 CPU MPI全局数据通讯组态的方法

    。在一个MPI通讯网络中,最多能组态4台300CPU之间的数据交换。 MPI全局数据通讯采用广播方式进行数据交换,不需要对全局数据进行编程,
    发表于 04-17 17:04 2526次阅读
    应该了解300 CPU MPI全局<b class='flag-5'>数据通讯</b>组态的方法

    如何在STM32中要实现数据通讯

    z在stm32中要实现数据通讯,首先要设置相关的寄存器,这里不做相关的介绍,直接说代码相关的能内容及相关函数对应的用法。
    的头像 发表于 03-02 08:56 1934次阅读
    如何在STM32中要实现<b class='flag-5'>数据通讯</b>

    安科瑞带防逆流功能的数据通讯网关

    AWT200 数据通讯网关应用于各种终端设备的数据采集与数据分析。用于实现设备的监测、控制、计算,为系统与设备之间建立通讯纽带,实现双向的数据通讯
    的头像 发表于 09-11 16:30 292次阅读
    安科瑞带防逆流功能的<b class='flag-5'>数据通讯</b>网关