对IAR自带STM32读写SPIFLASH例程的疑惑

xifen888207   2009-3-31 15:07 楼主
查了一下手册,M25P64每页是256个字节,但在“spi flash.c”中定义如下:

/* Private typedef ----------------------------------------*/
#define SPI_FLASH_PageSize    0x1006

这是怎么回事?

另外,在“main.c”中定义

/* Private define ----------------------------------------*/
#define  FLASH_WriteAddress     0x700000

即 SPI_FLASH_BufferWrite 函数中传递的地址是32位的,那么在函数内部用到的临时变量也应该是32位的,但却被定义为8位:“u8”,如下图,这样怎么能得到正确的结果?

回复评论 (3)

老兄,你先去看一下spi flash.c

/* Private typedef ----------------------------------------*/
#define SPI_FLASH_PageSize    0x100
那个文件里明明是0x100,怎么会是0x1006?

关于
  u8 NumOfPage = 0, NumOfSingle = 0, Addr = 0, count = 0, temp = 0;

  Addr = WriteAddr % SPI_FLASH_PageSize;
  count = SPI_FLASH_PageSize - Addr;
  NumOfPage =  NumByteToWrite / SPI_FLASH_PageSize;
  NumOfSingle = NumByteToWrite % SPI_FLASH_PageSize;

我觉得你应该从头到尾仔细阅读M25P64的数据手册。
点赞  2009-3-31 16:07

3楼

确实是 0x1006 ,我看了一下文件日期,我确实没有修改过。

ST_ARM老兄的意思是,我对数据手册理解的不透彻?
点赞  2009-3-31 19:23
的确是

#define SPI_FLASH_PageSize    0x100
点赞  2010-8-4 15:52
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复