天天看點

STM32 FSMC的應用筆記

最近在使用STM32的FSMC與FPGA做并行通信總線控制,做一下總結

1,利用FSMC讀取寫入16位資料時的封裝函數如下,不這樣使用的話在與FPGA進行通信的過程中可能會出現不可預知的錯誤。

#define Bank1_SRAM3_ADDR    ((u32)(0x68000000))    
/*在指定位址(WriteAddr+Bank1_SRAM3_ADDR)開始,連續寫入n個位元組.
pBuffer:位元組指針
WriteAddr:要寫入的位址
n:要寫入的位元組數
*/
void FSMC_writeBuffer(u16* buf,u32 WriteAddr,u32 n)
{
    for(;n!=0;n--)  
    {                                            
        *(vu16*)(Bank1_SRAM3_ADDR+WriteAddr*2)=*pBuffer;      
        WriteAddr++;
        pBuffer++;
    }  
}
/*在指定位址(WriteAddr+Bank1_SRAM3_ADDR)開始,連續讀出n個位元組.
pBuffer:位元組指針
ReadAddr:讀的起始位址
n:要讀出的位元組數
*/
void FSMC_readBuffer(u16* pBuffer,u32 ReadAddr,u32 n)
{
    for(;n!=0;n--)  
    {                                                
        *pBuffer++=*(vu16*)(Bank1_SRAM3_ADDR+ReadAddr*2);    
        ReadAddr++;
    }  
}
           

繼續閱讀