bigbigcong 发表于 2021-11-12 09:26 为了琢磨楼主的问题,特意去买了几片做实验。 原本也不想吐槽,你既然问了我就说一下, 如果不是你刚好有这个片子(朋友送的,公司倒闭剩下的),就不要用这个片子。设计这东西的完全没有站在用于角度考虑过。 首先4线制,通信协议几乎就是SPI协议。撇开ORG控制脚,你需要4个IO才能操作。说法是2M的速率,实际上,我用89C52都必须加 NOP 才能稳定通信,当然,比AT24C还是快一点。但是重点来的…… 他的指令不是标准位制 即不是8位,也不是16位,24位, 而是根据型号不同 长度不同,比如93C66, 16位数据存储格式的话,指令是11位,8位数据存储格式,指令是12位, 93C46的话, 16位数据存储格式的话,指令是9位,8位数据存储格式,指令是10位,由于这奇葩的设定, 你没有办法用常见的通用的硬件SPI去驱动。大多数单片机只能用IO模拟SPI方式去驱动。 这就是所有缺点了么? 不是!!!!上面这些都不是重点, 真正的重点是: 这个芯片,一次只能读/写 1个字节,或者一个字(双字节),然后必须停止,重新启动,再发送指令,操作另一个 字/字节。 你说一个上K 的Eeprom 读写模式如此之不友好? 24C虽然是 I2C操作, 表面上速度比不过 这个93C, 但是,人家有连读连写啊,实际对比测试,连写16个字节,24C 完胜 93C。 所以,93C这个东西,这次是第一次买(本意也不是要用),深入使用了解之后,这次也是最后一次买(有人非要送给我的话,还是来者不拒的)。 以上是个人对93C 和 24C 比较后的直观结论,不做客观依据,不喜误喷。 |
新新科技 发表于 2021-11-12 09:21 通常说的 93C66 是指: AT93C66B (MicroChip的产品) 这款是有 ORG的。可以8位,16位切换 NM93C66LN (是National的产品) 是没有ORG的,只有16位。 |
本帖最后由 新新科技 于 2021-11-12 12:07 编辑 bigbigcong 发表于 2021-11-12 09:26 估计是以前在什么板子上拆出来的,手头只有3P。价格不知道,但只知道比24C要多一个或两个IO口来驱动,并且驱动方式比24C难搞,一点好处都没有。我的用AT89S52(很久以前购买的)制作的倒计时器 PCB设计有两个存储芯片位,一个是24C的,一个是93C的。这93C66现在就拿出来用用,用完了就用24C。还是24C用得比较熟悉。现在用STC等的单片机了,24C又不需要了。 |
| 这个flash跟AT24C类相比有啥好处?便宜吗? |
|
我根本不知道93c66ln是没有org的,以为是93C系列的,引脚是一致的,结果走了不少弯路。直到昨天下载到的NM93C66数据手册,才知道93C系列有的有org,有的没有。93C系列的芯片平时极少用到,不熟悉,只是刚好手头有,才拿来玩玩。 |
| 93c66ln是没有org的……,何来org接地只说?没有org的是不能读8位的…… |
188610329 发表于 2021-11-11 16:17 有呀!有接地!就是这个芯片本来就是16位的,所以不支持8位。 |
| ……,你居然口口声声,信誓旦旦说“org”接地了? |
新新科技 发表于 2021-11-10 08:56 问: 93C46 和 93C66 手册一致么? |
| 补充,使用双字节地址码,我是参考了本论坛的一个帖子,链接http://www.51hei.com/bbs/dpj-98782-1.html,这个帖子介绍的是93C56(2K),我手头的是93C66(4K)。如果不修改原程序,也是无法正确读写。昨天尝试使用双字节16位地址码(第2个字节为空字节,什么内容都可以,可以0x00,也可以0xFF,我都试过),这样就能正确读写0-255地址的数据。 |
188610329 发表于 2021-11-9 18:25 这个意义不大,如果地址码按手册说的发送9位的话,在A1位的时候DO就发生低电平应答;如果发送的是8位地址码,才是在A0发生应答。写入的检测的意义相对较大,但读取数据的检测意义不大,因为现在发送的是双字节16位地址码,远比9位多得多,等到发送完地址码,这个低电平早过去了。 如果地址码只发送8位或9位,就永远都无法读取到正确的数据。 |
| 从手册的图2a看, 当你发完地址最后一个位:A0后, DO 会有一个低电平确认,你对这个有判断么? |
188610329 发表于 2021-11-9 17:10 1、没错,24C与93C系列的读写原理完全不同。2、DO有接上拉电阻10K。各IO口有尝试输出高低电平,均为正常值(高电平接近VCC,低电平为0) 。 3、上述发的程序思路按93C手册上的时序编写的,不过手册上某些地方比较费解,估计是翻译版本。 |
288.23 KB, 下载次数: 23
|
也关注了你几天,93C这片子没玩过,提不了什么建议。 看你一直没解决,就说说以下3点: 1,你说时序与24C有点区别,这个不是有点区别,是完全不同…… 24C是 I2C接口规范,93C是SPI接口规范,完全就是两种协议…… 2,大多SPI接口的Flash 片子, DO都是需要10K 上拉到 Flash自身的VCC的然后,单片机用开漏,或者高阻模式读取DO的数据,而DI和SK,也是最好10K上拉到Flash自身的VCC 然后,单片机开漏模式控制。如果你程序上找不到原因,可以试试电路。 3,SPI由于前沿,后沿的问题,比较复杂,你最好仔细对照手册,发数据和收数据,依赖的时钟沿是否一致。 |
| 如果读写是采用双字节地址(第一个字节为辅地址,第二个字节为空字节),可以正常读写93C66,但要读写0xff以上的地址就没有办法了。ORG确定是接地的。真是百思不得其解。 |
冰火风轮 发表于 2021-10-1 23:16 有的,按地,设置为8位。 |
| ORG 悬空或接VCC 是16位模式哦,接地没? |