【求助】关于STM32使用SPI的DMA方式读写外部flash的几个问题

2019-12-08 14:42发布

环境:HAL库 + USB + Fatfs
硬件:stm32f103c8t6 + MX25L64

问题:
1、因为FLASH一个扇区为4096,但每次写入只能一页256byte,能否使用DMA循环模式写入整个扇区数?
其中:uint8_t buffer[4096];

2、在Fatfs中,f_write一次只能写入512字节,超出会卡死。
我已设置了
cubemx中:
无标题.png (20.31 KB, 下载次数: 0) 下载附件 2019-11-28 17:39 上传
SECTOR_SIZE 为 4096
#define _MIN_SS    512  /* 512, 1024, 2048 or 4096 */
#define _MAX_SS    4096  /* 512, 1024, 2048 or 4096 */
还要设置哪些地方?

3、usb与fatfs驱动中,我增加了红 {MOD}语句,网上例程很多是没有的,理论上单扇区操作是没问题的,但多个扇区操作buf地址应该要发生改变,是否正确。
int8_t STORAGE_Write_FS(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len)
{
  /* USER CODE BEGIN 7 */
  uint16_t i;
  for (i=0;i<blk_len;i++)
  {
    ExtFlash_SectorWR(buf, blk_addr * SECTOR_SIZE, SECTOR_SIZE);
    blk_addr++;
    buf += SECTOR_SIZE;
  }
  return (USBD_OK);
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。