ZHCUAO0C November 2022 – November 2023 TMS320F280033 , TMS320F280034 , TMS320F280034-Q1 , TMS320F280036-Q1 , TMS320F280036C-Q1 , TMS320F280037 , TMS320F280037-Q1 , TMS320F280037C , TMS320F280037C-Q1 , TMS320F280038-Q1 , TMS320F280038C-Q1 , TMS320F280039 , TMS320F280039-Q1 , TMS320F280039C , TMS320F280039C-Q1
向闪存状态机发出命令。有关该函数可发出的命令列表,请参阅说明。
概要
Fapi_StatusType Fapi_issueAsyncCommand(
Fapi_FlashStateCommandsType oCommand)
参数
oCommand [in] | 向 FSM 发出的命令 |
说明
对于不需要任何附加信息(如地址)的命令,该函数向闪存状态机发出命令。典型命令为 Clear Status、Program Resume、Erase Resume 和 Clear_More。该函数不会等到命令结束;它只是发出命令并返回。因此,用户应用程序必须等待 FMC 完成给定的命令,然后才能返回到任何类型的闪存访问。Fapi_checkFsmForReady() 函数可用于监测已发出命令的状态。
以下是此类命令的详细信息:
返回值
实现示例
#include “F021_F28003x_C28x.h”
#define CPUCLK_FREQUENCY 120 /* 120 MHz System frequency */
int main(void)
{
//
// Initialize System Control
//
Device_init();
//
// Call Flash Initialization to setup flash waitstates
// This function must reside in RAM
//
Flash_initModule(FLASH0CTRL_BASE, FLASH0ECC_BASE, DEVICE_FLASH_WAITSTATES);
//
// Jump to RAM and call the Flash API functions
//
Example_CallFlashAPI();
}
#pragma CODE_SECTION(Example_CallFlashAPI, ramFuncSection);
void Example_CallFlashAPI(void)
{
Fapi_StatusType oReturnCheck;
Fapi_FlashStatusType oFlashStatus;
uint16 au16DataBuffer[8] = {0x0001, 0x0203, 0x0405, 0x0607, 0x0809, 0x0A0B, 0x0C0D, 0x0E0F};
uint32 *DataBuffer32 = (uint32 *)au16DataBuffer;
uint32 u32Index = 0;
//
// Bank0 operations
//
EALLOW;
//
// This function is required to initialize the Flash API based on
// System frequency before any other Flash API operation can be performed
// Note that the FMC register base address and system frequency are passed as the parameters
//
oReturnCheck = Fapi_initializeAPI(F021_CPU0_BASE_ADDRESS, CPUCLK_FREQUENCY);
if(oReturnCheck != Fapi_Status_Success)
{
Example_Error(oReturnCheck);
}
//
// Fapi_setActiveFlashBank function initializes Flash banks
// and FMC for erase and program operations.
//
oReturnCheck = Fapi_setActiveFlashBank(Fapi_FlashBank0);
if(oReturnCheck != Fapi_Status_Success)
{
Example_Error(oReturnCheck);
}
//
// Issue an async command
//
oReturnCheck = Fapi_issueAsyncCommand(Fapi_ClearMore);
//
// Wait until the Fapi_ClearMore operation is over
//
while (Fapi_checkFsmForReady() != Fapi_Status_FsmReady){}
if(oReturnCheck != Fapi_Status_Success)
{
Example_Error (oReturnCheck);
}
//
// Read FMSTAT register contents to know the status of FSM after
// program command to see if there are any program operation related errors
//
oFlashStatus = Fapi_getFsmStatus();
if(oFlashStatus != 0)
{
//
//Check FMSTAT and debug accordingly
//
FMSTAT_Fail();
}
//
// * User code for further Bank0 flash operations *
//
.
.
.
.
EDIS;
//
// Example is done here
//
Example_Done();
}