最近在使用STM32的FSMC与FPGA做并行通信总线控制,做一下总结
1,利用FSMC读取写入16位数据时的封装函数如下,不这样使用的话在与FPGA进行通信的过程中可能会出现不可预知的错误。
1 #define Bank1_SRAM3_ADDR ((u32)(0x68000000)) 2 /*在指定地址(WriteAddr+Bank1_SRAM3_ADDR)开始,连续写入n个字节. 3 pBuffer:字节指针 4 WriteAddr:要写入的地址 5 n:要写入的字节数 6 */ 7 void FSMC_writeBuffer(u16* buf,u32 WriteAddr,u32 n) 8 { 9 for(;n!=0;n--) 10 { 11 *(vu16*)(Bank1_SRAM3_ADDR+WriteAddr*2)=*pBuffer; 12 WriteAddr++; 13 pBuffer++; 14 } 15 } 16 /*在指定地址(WriteAddr+Bank1_SRAM3_ADDR)开始,连续读出n个字节. 17 pBuffer:字节指针 18 ReadAddr:读的起始地址 19 n:要读出的字节数 20 */ 21 void FSMC_readBuffer(u16* pBuffer,u32 ReadAddr,u32 n) 22 { 23 for(;n!=0;n--) 24 { 25 *pBuffer++=*(vu16*)(Bank1_SRAM3_ADDR+ReadAddr*2); 26 ReadAddr++; 27 } 28 }