AT93C46的MIX功能
1功能概述
AT93C46在DI接收到读指令时,地址被解码,数据在DO引脚上串行输出。写周期是完全自主调时的,在写入之前不需要单独的擦除周期。只有当器件处于擦除/写使能状态时,写周期才有效。当写入周期开始后,CS被置为高电平时,DO引脚输出处于就绪/忙状态。本项目要求AT93C46在前两个单独案例的基础上完成读和写功能的混合功能。
2设计思路
读(READ)指令包含要读取的存储器位置的地址代码。在接收到指令后,地址被解码,来自存储器的所选数据在串行输出引脚DO处可用。输出数据的变化与SK时钟上升沿同步。需要注意的是,在8或16位数据输出的字符串之前会有1比特的虚拟位(逻辑“0”)。
写(WRITE)指令包含要写入指定存储器的8位或16位数据。自定义编程周期twp始于最后一位数据在输入引脚DI接收的完成。如果CS在保持低电平至少250
ns(tcs)后拉高,则DO引脚输出读/忙状态。DO处的逻辑“0”表示编程仍在进行中,而逻辑“1”表示存储位置指定的地址已经写入指令中包含的数据模式,并且准备好下一步的指令。如果CS在自定义编程周期twp结束后拉高,则无法获得就绪/忙状态。
本案例要求实现一个AT93C46的接口能够根据命令,实现EWEN、WRITE和READ功能,具体思路如下:
1.上游模块在rdy=1时,给出start命令,开始进行EWEN、WRITE或者READ操作;在rdy=0期间,start命令无效。
2.当start有效时,如果mode=0表示进行EWEN操作;mode=1表示进行WRITE操作;mode=2表示进行READ操作。
3.当start有效时,addr和wdata有效。
4.当进行EWEN操作时,将addr写入at93c46。
5.当进行WRITE操作时,将addr和wdata写入at93c46。
6.当进行READ操作时,将addr写入at93c46,并从at93c46读到数据,通过rdata和rdata_vld返回给上游模块。
3程序设计