首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM32-FSMC-NOR FLASH(5)

STM32-FSMC-NOR FLASH(5)

/******************************************************************************* * Function Name  : FSMC_NOR_ProgramBuffer
* Description    : Writes a half-word buffer to the FSMC NOR memory. This function
*                  must be used only with S29GL128P NOR memory.
* Input          : - pBuffer : pointer to buffer.
*                  - WriteAddr: NOR memory internal address from which the data  *                    will be written.
*                  - NumHalfwordToWrite: number of Half words to write. *                    The maximum allowed value is 32 Half words (64 bytes). * Output         : None
* Return         : NOR_Status:The returned value can be: NOR_SUCCESS, NOR_ERROR
*                  or NOR_TIMEOUT
*******************************************************************************/
NOR_Status FSMC_NOR_ProgramBuffer(u16* pBuffer, u32 WriteAddr, u32 NumHalfwordToWrite)
{
u32 lastloadedaddress = 0x00;
u32 currentaddress = 0x00;
u32 endaddress = 0x00;
/* Initialize variables */
currentaddress = WriteAddr;
endaddress = WriteAddr + NumHalfwordToWrite - 1;
lastloadedaddress = WriteAddr;
/* Issue unlock command sequence */
NOR_WRITE(ADDR_SHIFT(0x005555), 0x00AA);
NOR_WRITE(ADDR_SHIFT(0x02AAA), 0x0055);
/* Write Write Buffer Load Command */
NOR_WRITE(ADDR_SHIFT(WriteAddr), 0x0025);
NOR_WRITE(ADDR_SHIFT(WriteAddr), (NumHalfwordToWrite - 1));   /* Load Data into NOR Buffer */
while(currentaddress <= endaddress)
{
/* Store last loaded address & data value (for polling) */
lastloadedaddress = currentaddress;

NOR_WRITE(ADDR_SHIFT(currentaddress), *pBuffer++);
currentaddress += 1;
}
NOR_WRITE(ADDR_SHIFT(lastloadedaddress), 0x29);

return(FSMC_NOR_GetStatus(Program_Timeout));
}
/****************************************************************************** * Function Name  : FSMC_NOR_ReadHalfWord
* Description    : Reads a half-word from the NOR memory.
* Input          : - ReadAddr : NOR memory internal address to read from. * Output         : None
* Return         : Half-word read from the NOR memory
*******************************************************************************/ u16 FSMC_NOR_ReadHalfWord(u32 ReadAddr)
{
NOR_WRITE(ADDR_SHIFT(0x005555), 0x00AA);
NOR_WRITE(ADDR_SHIFT(0x002AAA), 0x0055);
NOR_WRITE((Bank1_NOR2_ADDR + ReadAddr), 0x00F0 );
return (*(vu16 *)((Bank1_NOR2_ADDR + ReadAddr)));
}
/******************************************************************************* * Function Name  : FSMC_NOR_ReadBuffer
* Description    : Reads a block of data from the FSMC NOR memory. * Input          : - pBuffer : pointer to the buffer that receives the data read  *                    from the NOR memory.
*                  - ReadAddr : NOR memory internal address to read from. *                  - NumHalfwordToRead : number of Half word to read. * Output         : None
* Return         : None
*******************************************************************************/ void FSMC_NOR_ReadBuffer(u16* pBuffer, u32 ReadAddr, u32
NumHalfwordToRead)
{
NOR_WRITE(ADDR_SHIFT(0x05555), 0x00AA);
NOR_WRITE(ADDR_SHIFT(0x02AAA), 0x0055);
NOR_WRITE((Bank1_NOR2_ADDR + ReadAddr), 0x00F0);
for(; NumHalfwordToRead != 0x00; NumHalfwordToRead--) /* while there is data to read */
{
/* Read a Halfword from the NOR */
*pBuffer++ = *(vu16 *)((Bank1_NOR2_ADDR + ReadAddr));
ReadAddr = ReadAddr + 2;
}
}
/****************************************************************************** * Function Name  : FSMC_NOR_ReturnToReadMode
* Description    : Returns the NOR memory to Read mode.
* Input          : None
* Output         : None
* Return         : NOR_SUCCESS
*******************************************************************************/ NOR_Status FSMC_NOR_ReturnToReadMode(void)
博泰典藏网btdcw.com包含总结汇报、高中教育、经管营销、行业论文、计划方案、农林牧渔、外语学习、工程科技、表格模板、高等教育、旅游景点以及STM32-FSMC-NOR FLASH等内容。
继承事业,薪火相传
返回列表