AT93C56B GPIO模拟实现读写

平台

STM32F407

 

硬件介绍

AT93C56B/66B 4K: 512 x 8 or 256 x 16

硬件 pin 如下截图所示:

AT93C56B GPIO模拟实现读写_第1张图片

 

CS:片选信号。高电平有效,低电平时进入等待模式。在连续的指令之间,CS信号必须持续至少 250ns 的低电平,才能保证芯片正常工作。

CLK:串行时钟信号。在 CLK 的上升沿,操作码、地址和数据位进入器件或从器件输出。在发送序列时,CLK 最好不停止,以防止读/写数据的错误。

DI:串行数据输入。可在 CLK 的同步下输入开始位、操作码、地址位和数据位。

DO:串行数据输出。在 CLK 同步下读周期时,用于输出数据;而在地址擦/写周期或芯片擦/写周期时,该端用于提供忙/闲信息。

VSS: 接地。

VCC: 接+5V电源。

ORG: 存贮器构造配置端。该端接 VCC 或悬空时,输出为16位;接 GND 时,输出为8位

NC:空脚,不连接。

 

指令集

参考datasheet

(1)擦/写使能指令(EWEN)

由于在上电复位后 IC 首先将处于擦/写不允许状态。故该指令必须在所有编程模式前执行,一旦该指令执行后,只要外部没有断电就可以对芯片进行编程。

(2)地址擦指令(ERASE)

该指令用于强迫指定地址中所有数据位都为“1”。一旦信息在 DI 端上被译码,就需使 CS 信号保持至少 250ns 的低电平,然后将 CS 置为高电平,这时,DO 端就会指示“忙”标志,DO为“0”,表示编程正在进行;DO为“1”,表示该指定地址的寄存器单元已擦完,可以执行下一条指令

(3)地址写指令(WRITE)

写指令时,先写地址,然后将 16 位或8位数据写入到指定地址中。当 DI 端输入最后一个数据位后,在 CLK 时钟的下一个上升沿以前,CS 必须为低,且需至少保持 250ns,然后将 CS 置为高电平。需要说明的是:写周期时,每写一个字节需耗时4ms

(4)地址读指令(READ)

读指令用于从指定的单元中把数据从高位到低位输出至 DO 端,但逻辑“0”位先于数据位输出。读指令在 CLK 的上升沿触发,且需经过一段时间方可稳定。为防止出错,建议在读指令结束后,再输出2~3个 CLK 脉冲

(5)芯片擦指令(ERAL)

该指令可将整个存贮器阵列置为1,其它功能与地址擦指令相同。

(6)芯片写指令(WRAL)

该指令可将命令中指定的数据写入整个存贮器阵列,其它功能与地址写指令相同。该指令周期所花费时间的最大值为 30 ms

(7)擦/写禁止指令(EWDS)

使用该指令可对写入的数据进行保护,操作步骤与擦/写允许指令相同

 

软件实现

这次软件实现是通过GPIO 模拟实现的,中间犯了一个错,没有注意 ORG 连接,按 8 位做的读写,一直不成功,后面看手册发现,ORG 接 VCC,输出 16位,后按 16 位做读写,就 OK 了。

软件具体实现 code,见如下连接:

https://download.csdn.net/download/tuwenzan/11847271

 

 

参考资料:

《AT93C66B-SSHM-T Datasheet.pdf》

你可能感兴趣的:(AT93C56B GPIO模拟实现读写)