
我准备用stm32来实现,将内部的sram通过SPI Slave接口对外模拟成一种95512型号的SPI EEPROM(5MHz SPI时钟) 简而言之就是STM32变身称为一块8PIN的95512 SPI EEPROM 95512读数据的时序是这样的 ![]() 我的疑惑是这样的,主机将CS拉低表示准备传输指令,在传输完 指令字节和地址字节之后,从机(EEPROM)会立即根据时钟返回数据比特。 立即返回数据,由于这种时效性特别讲究,用STM32这种单片机能否实现? 是不是必须要用CPLD或者FPGA才能达到这种时效性? |
5M的时钟,意思就是在接收完读指令之后,必须在 1/5000000 秒内,完成数据的读取操作,然后立即在CLK的下一个周期开始数据传送。
我觉得这个好像是不可能完成的任务
不知道是否有人实现过
对啊,我说的就是SPI的处理问题,SPI Slave是否有能力在收到指令的 1/5000000秒内立即开始数据传送呢?
不是spi的问题,看你CPU的速度,CPU速度比外设快得的多,接收完后往SPI的发送寄存器中填入下一次要发送的数据,时钟来了自动发送出去。才5M,CPU干活不多应该能忙得过来,就怕你应用程序太啰嗦复杂。
假设SPI时钟频率5M,CPU时钟72M
SPI的每个时钟间隔是 1/5M = 0.2us
那么0.2微妙这个窗口,CPU能跑多少个周期?其实很简单,72/5就算出来,是14.4个时钟周期
那么请问。14.4个cpu时钟周期够干啥?
你知道一个ARM指令占用多少个周期吗?
你想的太简单了too young too simple
EEPROM在数据传输时5M的时钟不是连续的,在收到读指令后,CLK会有一段空白时间,这段时间取决于主机何时去读,最好的情况下是主机发了指令后,隔了足够久的时间,让Slave去准备数据,这个时间有多久,要具体情况具体分析,最好是上逻辑分析仪。
我分析了一下我的场景,这个时间是1微秒,但是1微秒的时间也只够CPU跑72个时钟周期
我要实现的功能就是通过STM32去劫持EEPROM的写入操作,当发现写入某个地址时,把写入动作丢掉。
对于这种实现,1微秒这个时间还是太少了,不足以让CPU去准备数据。
所以我决定放弃此方案,改用CPLD
评分
查看全部评分
你可以选择把你的这个回复撤回,或者我Mark一下你的ID