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);  
//}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    455

    文章

    50714

    浏览量

    423121
  • 闪存
    +关注

    关注

    16

    文章

    1782

    浏览量

    114892
  • 存储器
    +关注

    关注

    38

    文章

    7484

    浏览量

    163759
  • 计算机
    +关注

    关注

    19

    文章

    7488

    浏览量

    87848
  • EEPROM
    +关注

    关注

    9

    文章

    1019

    浏览量

    81557
收藏 人收藏

    评论

    相关推荐

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

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

    远程医疗的数据通讯分析

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

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

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

    基于TMS320C5402的数据通讯系统的设计

    TMS320C54X系列是TI公司生产的应用于通讯领域的DSP芯片,该系列具有功耗小、高度并行等优点,能够满足通讯领域的实时处理的要求;主要阐述了基于TMS320C5402的数据通讯系统的设计方
    发表于 07-16 10:16 27次下载

    PLC数据通讯在水压机控制系统中的实现与研究

    数据通讯是控制系统的关键技术之一。本文阐述了西门子S7 系列PLC 数据通讯在某大型水压机控制系统中的实现,介绍了3 种常用的通讯网络。针对该水压机控制系统对输入信号需做
    发表于 07-30 15:16 14次下载

    一种新的数据通讯方式----电力线数据通讯

    本文概括叙述了利用电源线路实现数据通信的国际技术背景,我国电力线状况以及能有效解决电力线数据传输中各种干扰问题的扩频通信技术。关键词:电力线载波通信;扩频
    发表于 08-27 09:59 28次下载

    基于Matlab环境的串行数据通

                介绍基于Matlab 环境的微机与单片机串行数据通信方法。该方法利用Matlab 的Instrument Control 工具箱的serial 类对象实现
    发表于 09-03 12:10 25次下载

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

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

    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 2797次阅读
    应该了解300 CPU MPI全局<b class='flag-5'>数据通讯</b>组态的方法

    基于DSP实现异步串行数据通讯系统的应用设计

    TI公司的TMS320LF2407为16位定点DSP微控制器,内嵌有看门狗定时器(WDT)、CAN总线控制器、模数转换器(ADC)、串行外设接口(SPI)、异步串行口(SCI)等多种外设模块,并有
    的头像 发表于 05-31 09:35 2587次阅读
    基于DSP实现异步<b class='flag-5'>串行数据通讯</b>系统的应用设计

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

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

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

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

    HT1S-COP-MDN-S10 网关与台达PLC(CANOPEN)数据通讯配置说明

    本案例测试主要实现采集多个MODBUS RTU设备接入到台达CANOPEN接口的PLC进行数据通讯
    的头像 发表于 06-13 15:19 702次阅读
    HT1S-COP-MDN-S10 网关与台达PLC(CANOPEN)<b class='flag-5'>数据通讯</b>配置说明