工具/软件:
您好:
在 SPI 上查找适用于闪存 W25Q32和 TMSTMS570LS0432的示例代码。 其中应该有写入和读取示例。
此致、
镍锡
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.
工具/软件:
您好:
在 SPI 上查找适用于闪存 W25Q32和 TMSTMS570LS0432的示例代码。 其中应该有写入和读取示例。
此致、
镍锡
您好:还可以找到我的示例代码及其调试输出、
#include "system.h"
包含"spi.h"
#include "string.h"
void W25Q32_WriteEnable (void)
{
uint16 t[1]={0x06};
spiDAT1_t dataconfig ={
.CS_HOLD = false、
.WDEL = false、
.DFSEL = SPI_FMT_0、//格式0 (8位、CPOL=0、CPHA=0)
.csSNR = SPI_CS_1 // CSSNR =~μ s (1 << CS1)→0b11111110
};
spiSendData (spiREG2、&dataconfig、1、TX);
}
void W25Q32_WaitWhileBusy (void)
{
UINT16 TX[2]={0x05、0x00};
uint16 rx[2]={ 0 };
uint32_t TIMEOUT = 1000000;
spiDAT1_t dataconfig ={
.CS_HOLD = false、
.WDEL = false、
.DFSEL = SPI_FMT_0、//格式0 (8位、CPOL=0、CPHA=0)
.csSNR = SPI_CS_1 // CSSNR =~μ s (1 << CS1)→0b11111110
};
执行
spiTransmitAndReceiveData (spiREG2、&dataconfig、2、TX、Rx);
超时--;
IF (超时= 0)
{
printf ("等待 WIP 清除时超时\n");
printf ("Status Reg:0x%02x\n"、(uint8_t)(rx[1]& 0xFF));
休息;
}
}while ((uint8_t)(Rx[1]& 0xFF))& 0x01);
}
void W25Q32_Write (Uint32地址、uint8 *数据、Uint32 len)
{
Uint16 txBuf[260];
W25Q32_WriteEnable ();
//命令+地址
txBuf[0]= 0x02;
txBuf[1]=(地址>> 16)& 0xFF;
txBuf[2]=(地址>> 8)& 0xFF;
txBuf[3]=地址和0xFF;
spiDAT1_t dataconfig ={
.CS_HOLD = TRUE、//在传输后让 CS 变为高电平
.WDEL = false、
.DFSEL = SPI_FMT_0、//格式0 (8位、CPOL=0、CPHA=0)
.csSNR = SPI_CS_1 // CSSNR =~μ s (1 << CS1)→0b11111110
};
//有效负载
for (int i = 0;i < len;i++){
txBuf[4 + i]= data[i];
}
spiSendData (spiREG2、&dataconfig、len+4、txBuf);
W25Q32_WaitWhileBusy ();
}
void W25Q32_read (uint32地址、uint8 *缓冲器、uint32 len)
{
Uint16 txBuf[260]={0};
uint16 rxBuf[260]={0};
//命令+地址
txBuf[0]= 0x03;
txBuf[1]=(地址>> 16)& 0xFF;
txBuf[2]=(地址>> 8)& 0xFF;
txBuf[3]=地址和0xFF;
spiDAT1_t dataconfig ={
.CS_HOLD = TRUE、//在传输后让 CS 变为高电平
.WDEL = false、
.DFSEL = SPI_FMT_0、//格式0 (8位、CPOL=0、CPHA=0)
.csSNR = SPI_CS_1 // CSSNR =~μ s (1 << CS1)→0b11111110
};
spiTransmitAndReceiveData (spiREG2、&dataconfig、len+4、txBuf、rxBuf);
//有效负载
for (int i = 0;i < len;i++){
Buffer[i]= rxBuf[4 + i];
}
}
void W25Q32_readid (uint8_t *id)
{
Uint16 txBuf[4]={0x9F、0x00、0x00、0x00};
uint16 rxBuf[4]={0};
spiDAT1_t dataconfig ={
.CS_HOLD = TRUE、//在传输后让 CS 变为高电平
.WDEL = false、
.DFSEL = SPI_FMT_0、//格式0 (8位、CPOL=0、CPHA=0)
.csSNR = SPI_CS_1 // CSSNR =~μ s (1 << CS1)→0b11111110
};
spiTransmitAndReceiveData (spiREG2、&dataconfig、4、txBuf、rxBuf);
ID[0]= rxBuf[1];//Manufactr ID
ID[1]= rxBuf[2];//存储器类型
ID[2]= rxBuf[3];//Capacity
}
int main()
{
spiInit();
uint8_t jdecid[3];
W25Q32_readid (jdecid);
printf ("Manufactr ID:0x%02x\n"、jdecid[0]);
printf ("存储器类型:0x%02x\n"、jdecid[1]);
printf ("容量:0x%02x\n"、jdecid[2]);
const uint32_t targetAddress = 0x000100;
char writeData[]="Flash Write OK";
char ReadData[32];
W25Q32_Write (targetAddress、writeData、strlen (writeData));
printf ("写入地址的数据:0x%06X\n"、targetAddress);
W25Q32_READ (targetAddress、ReadData、strlen (writeData));
printf ("数据读取:%s\n"、ReadData);
返回0;
}
然后将获得类似的调试输出
制造商 ID:0xEF
存储器类型:0x40
容量:0x16
写入地址:0x000100l 的数据
等待 WIP 清除时超时
状态寄存器:0xFF
读取的数据:yyyyyyyyyyyyyyyy
请引导我、我使用数据格式 SP 模式0和8字长以及1MHz 波特率
嗨、Nitin、
[引用 userid="653121" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1515236/tms570ls0432-anyone-had-example-code-for-flash-w25q32-with-tmstms570ls0432-over-spi ] 通过 SPI 查找具有 TMS570LS0432的闪存 W25Q32的示例代码。 应该有写入和读取示例。在 W25Q32上没有任何直接的示例。
我们仅提供了 SPI 示例、您可以在以下常见问题解答中找到这些示例:
通过以上示例作为参考、只需尝试在您的端部实现 如果您遇到任何问题、请告诉我您所面临的确切问题、以便我为您提供指导。
--
此致、
Jagadish。