mxzwish 发表于 2017-4-23 19:38:27

STM32模拟成EEPROM?有可能吗?

我准备用stm32来实现,将内部的sram通过SPI Slave接口对外模拟成一种95512型号的SPI EEPROM(5MHz SPI时钟)
简而言之就是STM32变身称为一块8PIN的95512 SPI EEPROM

95512读数据的时序是这样的

我的疑惑是这样的,主机将CS拉低表示准备传输指令,在传输完 指令字节和地址字节之后,从机(EEPROM)会立即根据时钟返回数据比特。
立即返回数据,由于这种时效性特别讲究,用STM32这种单片机能否实现?
是不是必须要用CPLD或者FPGA才能达到这种时效性?


mark0668 发表于 2017-4-23 22:02:05

5M速度,还是用的SRAM 应该没有问题的

asmhai 发表于 2017-4-23 22:15:04

这个创意好!

asmhai 发表于 2017-4-23 22:15:41

签到签到,支持。

衔胆栖冰 发表于 2017-4-23 22:37:49

你这种所谓的实效,跟RAM或者rom扯不上多大关系,只是一个SPI的处理问题而已。RAM掉电数据消失,还得把数据写到flash中去。不嫌麻烦可以做,但意义不大。

mxzwish 发表于 2017-4-23 22:45:40

mark0668 发表于 2017-4-23 22:02
5M速度,还是用的SRAM 应该没有问题的

5M的时钟,意思就是在接收完读指令之后,必须在 1/5000000 秒内,完成数据的读取操作,然后立即在CLK的下一个周期开始数据传送。
我觉得这个好像是不可能完成的任务
不知道是否有人实现过

mxzwish 发表于 2017-4-23 22:46:33

衔胆栖冰 发表于 2017-4-23 22:37
你这种所谓的实效,跟RAM或者rom扯不上多大关系,只是一个SPI的处理问题而已。RAM掉电数据消失,还得把数据 ...

对啊,我说的就是SPI的处理问题,SPI Slave是否有能力在收到指令的 1/5000000秒内立即开始数据传送呢?

衔胆栖冰 发表于 2017-4-23 23:06:20

mxzwish 发表于 2017-4-23 22:46
对啊,我说的就是SPI的处理问题,SPI Slave是否有能力在收到指令的 1/5000000秒内立即开始数据传送呢? ...

不是spi的问题,看你CPU的速度,CPU速度比外设快得的多,接收完后往SPI的发送寄存器中填入下一次要发送的数据,时钟来了自动发送出去。才5M,CPU干活不多应该能忙得过来,就怕你应用程序太啰嗦复杂。

mxzwish 发表于 2017-4-24 12:02:07

衔胆栖冰 发表于 2017-4-23 23:06
不是spi的问题,看你CPU的速度,CPU速度比外设快得的多,接收完后往SPI的发送寄存器中填入下一次要发送的 ...

假设SPI时钟频率5M,CPU时钟72M

SPI的每个时钟间隔是 1/5M = 0.2us
那么0.2微妙这个窗口,CPU能跑多少个周期?其实很简单,72/5就算出来,是14.4个时钟周期

那么请问。14.4个cpu时钟周期够干啥?
你知道一个ARM指令占用多少个周期吗?
你想的太简单了too young too simple

mxzwish 发表于 2017-4-24 12:09:04

这个问题不用讨论了。我已从别处某位高人那里得到了答案。
EEPROM在数据传输时5M的时钟不是连续的,在收到读指令后,CLK会有一段空白时间,这段时间取决于主机何时去读,最好的情况下是主机发了指令后,隔了足够久的时间,让Slave去准备数据,这个时间有多久,要具体情况具体分析,最好是上逻辑分析仪。
我分析了一下我的场景,这个时间是1微秒,但是1微秒的时间也只够CPU跑72个时钟周期
我要实现的功能就是通过STM32去劫持EEPROM的写入操作,当发现写入某个地址时,把写入动作丢掉。
对于这种实现,1微秒这个时间还是太少了,不足以让CPU去准备数据。

所以我决定放弃此方案,改用CPLD
页: [1] 2
查看完整版本: STM32模拟成EEPROM?有可能吗?