startware里面spiflash数据模式是字符char类型,我想转换为float应该修改哪些参数(除了数组以外)
附相关代码如下:
/****************************************************************************/
/* */
/* 读状态寄存器 */
/* */
/****************************************************************************/
void StatusGet(void)
{
tx_data[0] = SPI_FLASH_STATUS_RX;
tx_len = rx_len = 2;
SPIDat1Config(SOC_SPI_1_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), 0x1);
SpiTransfer();
}
/****************************************************************************/
/* */
/* 写使能 */
/* */
/****************************************************************************/
void WriteEnable(void)
{
tx_data[0] = SPI_FLASH_WRITE_EN;
tx_len = rx_len = 1;
SPIDat1Config(SOC_SPI_1_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), 0x1);
SpiTransfer();
}
/****************************************************************************/
/* */
/* 忙检测 */
/* */
/****************************************************************************/
void IsFlashBusy(void)
{
do{
StatusGet();
}while(rx_data[1] & WRITE_IN_PROGRESS);
}
/****************************************************************************/
/* */
/* 扇区擦除 */
/* */
/****************************************************************************/
void SectorErase(void)
{
tx_data[0] = SPI_FLASH_SECTOR_ERASE;
tx_data[1] = SPI_FLASH_ADDR_MSB1;
tx_data[2] = SPI_FLASH_ADDR_MSB0;
tx_data[3] = SPI_FLASH_ADDR_LSB;
tx_len = rx_len = 4;
SPIDat1Config(SOC_SPI_1_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), 0x1);
SpiTransfer();
IsFlashBusy();
}
/****************************************************************************/
/* */
/* 写扇区(256字节) */
/* */
/****************************************************************************/
void WritetoFlash(void)
{
unsigned int index;
tx_data[0] = SPI_FLASH_PAGE_WRITE;
tx_data[1] = SPI_FLASH_ADDR_MSB1;
tx_data[2] = SPI_FLASH_ADDR_MSB0;
tx_data[3] = SPI_FLASH_ADDR_LSB;
// 准备要写入的数据
for (index = 10; index < 260; index++)
{
tx_data[index] = index;
}
for(index = 4; index < 260; index++)
{
vrf_data[index] = index;
}
tx_len = rx_len = index;
SPIDat1Config(SOC_SPI_1_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), 0x1);
SpiTransfer();
IsFlashBusy();
}
/****************************************************************************/
/* */
/* 读数据 */
/* */
/****************************************************************************/
void ReadFromFlash(void)
{
unsigned int index;
tx_data[0] = SPI_FLASH_READ;
tx_data[1] = SPI_FLASH_ADDR_MSB1;
tx_data[2] = SPI_FLASH_ADDR_MSB0;
tx_data[3] = SPI_FLASH_ADDR_LSB;
// 情况变量
for (index = 4; index < 260; index++)
{
tx_data[index] = 0;
}
tx_len = rx_len = index;
SPIDat1Config(SOC_SPI_1_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), 0x1);
SpiTransfer();
}
/****************************************************************************/
/* */
/* 数据校验 */
/* */
/****************************************************************************/
int VerifyData(void)
{
unsigned int index;
for(index = 4; index < 260; index++)
{
if(vrf_data[index] != rx_data[index])
{
UARTPuts("\r\n", -1);
UARTPuts("VerifyData: Comparing the data written to and read", -1);
UARTPuts(" from Flash.\r\nThe two data blocks are unequal.", -1);
UARTPuts(" Mismatch found at index ", -1);
UARTPutNum((int)index - 3);
UARTPuts("\r\n", -1);
UARTPuts("Verify Failed.\r\n", -1);
return 0;
}
}
if (index == 260)
{
UARTPuts("\r\nThe data in the Flash and the one written ", -1);
UARTPuts("to it are equal.\r\n", -1);
UARTPuts("Verify successfully.\r\n", -1);
return 1;
}
return 0;
}