您好!
以下是我的配置:




描述:
我想与外部闪存通信。 首先、我将传输函数(mibspiSetData()和 mibspiTransfer())的指令、然后 我希望接收 外部闪存发送给我的数据。
问题是我没有收到数据。
- 使用函数(mibspiGetData())仍然让 CS 引脚保持低电平?
- 我希望收到24位数据,天气情况下,我应该调用函数(mibspiGetData()) 3次?
期待您的回答。
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.
您好!
以下是我的配置:




描述:
我想与外部闪存通信。 首先、我将传输函数(mibspiSetData()和 mibspiTransfer())的指令、然后 我希望接收 外部闪存发送给我的数据。
问题是我没有收到数据。
期待您的回答。
uint16_t data[4]={0};
uint16_t command[1]={0x9F};
uint8_t i;
uint32_t ID;
mibspiSetData (mibspiREG4、0、command);
mibspiTransfer (mibspiREG4、0);
while (mibspiIsTransferComplete (mibspiREG4、0)= 1){
C (mibspiREG4、0、data);
ID|=DATA[0]<<24;
mibspiGetData (mibspiREG4,0、data);
id=data[1]<<16;
mibspiGetData (mibspiREG4,0、data);
ID|=DATA[2]<<8;
mibspiGetData (mibspiREG4,0、data);
ID|=DATA[3];
}
根据您的示例、命令是1个16位数据。
当您设置 MibSPI TX 缓冲区(配置中有8个缓冲区)时、第一个缓冲区填充为0x9F、但第二个到第七个缓冲区是 SRAM 中的未知值。 这7个 unknow 值是否会影响闪存的响应?
DATA[4]={0};-->我想 命令0x9F 的返回次数是4个16位值。 命令和返回数据之间是否需要延迟? 如果闪存只返回4个值、那么为什么您的 define TG0=8 buffer?
我的建议:
1.使用 SPI 模式而不是 MibSPI 模式

2.定义 charlen=8而不是16

3.定义命令[4]={0x9F、0x0、0x、0、0x0};数据[4]={0};
4.检查闪存设备是否接受 CSHOLD。
4. 在多项模式中使用 spiTransmitAndReceiveData(), 在中断模式中使用 spiSendAndGetData()以获取 dat