目前、NOR 闪存正在 DSP 的 SPI 接口之外进行扩展。
读取和写入的功能已经被执行、但是擦除功能没有工作。
您能否推荐适用于28388D 的擦除闪存功能?
期待收到公司的回复、谢谢!
谢谢!
Vince
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
目前、NOR 闪存正在 DSP 的 SPI 接口之外进行扩展。
读取和写入的功能已经被执行、但是擦除功能没有工作。
您能否推荐适用于28388D 的擦除闪存功能?
期待收到公司的回复、谢谢!
谢谢!
Vince
以下程序是用于写入的擦除函数和读取/写入程序。
数据写入后、即可读回。
但是、如果下次地址未更改为新区域、则数据读回将在写入后出现错误。
更改为新区域、读写数据正常。 原因是 NOR 闪存的整个区域在出厂时已被擦除。
让专家来看看、我的擦除程序的问题在哪里?
//***** 计划启动
#define SUB_ERASE 0x2000
存储区域首地址 EEPROM_ADDR 0x7024 //μ s
#define NUM_Bytes 8
uint16_t writeBuffer[8]={0x00、0x01、0x02、0x03、0x04、 0x05、0x06、0x07};
uint16_t readBuffer[8]={0x00、0x00、0x00、0x00、0x00、 0x00、0x00、0x00};
int main()
{
enableWrite();
擦除(EEPROM_ADDR、writeBuffer、NUM_Bytes);
while (readStatusRegister ()& MSG_STATUS_READY_M == MSG_STATUS_READY_M)//等待 EEPROM 准备好写入数据
{
}
enableWrite();
while (readStatusRegister ()& MSG_STATUS_WRITE_READY_M == MSG_STATUS_WRITE_READY_M)
{//等待 EEPROM 准备好写入数据
}
writeData (EEPROM_ADDR、writeBuffer、NUM_Bytes);//写入 EEPROM
while (readStatusRegister ()& MSG_STATUS_READY_M == MSG_STATUS_READY_M)//等待 EEPROM 准备好写入数据
{
}
ReadData (EEPROM_ADDR、readBuffer、NUM_Bytes);
}
空擦除(uint16_t 地址、uint16_t *数据、uint16_t 长度)
{
CS_LOW;
SPI_writeDataBlockingNonFIFO (spic_BASE、SUB_ERASE);
SPI_readDataBlockingNonFIFO (spic_BASE);//虚拟读取以清除 INT_flag。
SPI_writeDataBlockingNonFIFO (spic_BASE、(地址和0xFF00);//发送 EEPROM 地址的 MSB。
SPI_readDataBlockingNonFIFO (spic_BASE);//虚拟读取以清除 INT_flag。
SPI_writeDataBlockingNonFIFO (spic_BASE、地址<< 8);//将地址的 LSB 发送到 EEPROM。
SPI_readDataBlockingNonFIFO (spic_BASE);//虚拟读取以清除 INT_flag。
CS_HIGH;
}
void enableWrite (void)//函数发送 WREN 操作码
{
CS_LOW;
SPI_writeDataBlockingNonFIFO (spic_BASE、WREN);
SPI_readDataBlockingNonFIFO (spic_BASE);//虚拟读取以清除 INT_flag。
CS_HIGH;
}
//***** 方案结束
期待您的回复。
谢谢你
Vince
e2e.ti.com/.../MT25Q.ce2e.ti.com/.../MT25Q.h
以上两个文件是 NOR 闪存提供的参考。
如何使用上述文件中的擦除、读取和写入函数。
NOR 闪存由重新写入28388D 的 SPI 驱动、情况如何?
期待您的回复、谢谢!
Vince、
您是否尝试读取读取了读取 ID 寄存器? 如果我是您、我将从读取"Read ID"开始
读取读取读取 ID 寄存器的伪代码:
1) 1)将 CS 驱动为低电平
2) 2)发送0x9F
3) 3)通过在一个环路中发送虚拟字节从 NOR 闪存中读取20个字节
4) 4)将 CS 驱动为高电平
确保读取 ID 根据 NOR 闪存正确反映后、您可以继续执行其他闪存操作。

此致、
曼诺伊