//测试
/
//W25X64 FLASH支持
//SPI接口设置
#define SPI_FLASH_CS PBout(6) //W25X16片选
#define W25X16_SPI_CH SPI_CH0
//W26X16 硬件接口初始化
void __inline W25X16_HardwaveInit(void)
{
const SPI_CONFIG mConfig = {FALSE, FALSE, FALSE, TRUE, 0, 8, 4};
SPIx_Init(W25X16_SPI_CH, &mConfig);
SYS_GPIOx_SetAF(GPIO_PB6_IO);
SYS_GPIOx_OneInit(GPIOB, 6, OUT_PP, GPIO_IN_NONE); //初始化一个IO
SPI_FLASH_CS = 1;
}
/***********************W25X16相关接口************************/
//W25XXX SPI通信接口
u8 BI_W25_SPI_ReadWrtieByte(u8 data)
{
return SPIx_ReadWriteByte(W25X16_SPI_CH, data);
}
//W25XXX SPI片选控制接口
void BI_W25_SPI_SetCS(u8 CS_Level)
{
SPI_FLASH_CS = CS_Level;
}
//W25XXX 信号量申请
void BI_W25_MutexPen(void)
{
//INT8U err;
//OSMutexPend(g_SysGlobal.w25x16_semp, 0, &err); //申请W25X16信号量
}
//W25XXX 信号量释放
void BI_W25_MutexPost(void)
{
//OSMutexPost(g_SysGlobal.w25x16_semp); //释放W25X16信号量
}
//初始化W25Q128
W25X16_HardwaveInit(); //初始化W25X16底层硬件SPI接口
W25X16_OSMutexCreate(); //W25X16信号量初始化-需要在任务中进行初始化
while(1)
{
g_SysGlobal.FlashId = W25XXX_Init(&g_SysGlobal.W25X16_Handle,
BI_W25_SPI_ReadWrtieByte, //W25XXX SPI通信接口
NULL,//BI_W25_BulkRead, //SPI批量读取接口
NULL,//BI_W25_BulkWrite, //SPI批量写入接口
BI_W25_SPI_SetCS, //W25XXX SPI片选控制接口
Sleep, //系统ms延时
BI_W25_MutexPen, //W25XXX 信号量申请
BI_W25_MutexPost //W25XXX 信号量释放
);
uart_printf("FlashId:%d\r\n",g_SysGlobal.FlashId);
if(g_SysGlobal.FlashId != FLASH_NULL) break;
Sleep(500);
}
|