stm32f4 fmsc的地址只能是32位的吗?为什么从地址4开始写,总线上地址实际为2?

2019-07-20 20:05发布

求高手门帮忙解答下
1、stm32f4 fmsc的地址只能是32位的吗?2、如果是32位的,是不是说在地址1上写一个数据,地址线会处理两次吗?
3、FSMC_SRAM_WriteBuffer(temp,4,20); 我在地址4上开始写数据,实际上是从地址2上开始写的,为什么呢?


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-07-20 21:23
 精彩回答 2  元偷偷看……
xuande
2楼-- · 2019-07-21 03:22
本帖最后由 xuande 于 2016-9-11 16:03 编辑


1、默认就是32位,如果不足会自动在高位补0。
2、听不懂,两次指什么?
3、可能你的数据宽度有问题。
     貌似是这样:
     数据宽度是32位,那么你发送A0=1,实际也会A0=1;
     但如果宽度是16位,那么A1线会出现A0的数据,A0线会被抛弃。
     具体我也没搞清,供参考;反正有错位。内部有个切换电路,好像是为了兼容几种数据宽度。


wy212235
3楼-- · 2019-07-21 06:58
 精彩回答 2  元偷偷看……
wy212235
4楼-- · 2019-07-21 08:13
正点原子 发表于 2016-9-11 15:45
2,16位地址外扩的sram,如果是32位数据访问,最长可能引起三次数据读写。最短是2次。
当地址是偶数的时 ...

我用的是
void FMC_SRAM_WriteBuffer_Word2(u16* pBuffer,u32 WriteAddr,u32 n)
{
        for(;n!=0;n--)  
        {                                                                                    
                *(vu16*)(Bank1_SRAM2_ADDR+WriteAddr)=*pBuffer;          
                WriteAddr+=2;
                pBuffer++;
        }   
}
在地址4上写16位的数据

一周热门 更多>