“STM32F7开发指南-寄存器版本_V1.0.pdf”的259页有这么一段话:这里需要注意的是:当位宽为 16 位的时候,HADDR 右移一位同地址对其,但是 WriteAddr
/ReadAddr 我们这里却没有加 2,而是加 1,是因为我们这里用的数据位宽是 8 位,通过FMC_NBL1 和 FMC_NBL0 来控制高低字节位,所以地址在这里是可以只加 1 的。
有两个疑问:(1)FMC_NBL1 和 FMC_NBL0两个引脚(其实应该有四个:0~3,这里用两个)是怎么控制的,开发指南19章和例14 SDRAM实验程序源码都看了看,找不到设置这几个引脚的寄存器或库函数设置方法,只是设置了数据宽度16位。
(2)给的例子14 SDRAM实验,里读写SDRAM的测试程序,这样的:
for(i=0;i<32*1024*1024;i+=16*1024) { *(vu32*)(Bank5_SDRAM_ADDR+i)=temp; temp++; }这样应该是一次读写一个字节数据吗?并不是读写16位数据,这样内存的一半不就浪费了吗? |