环境: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);
这个原因找到了。
是我的CSTACK设小了,导致数组不支持1024及以上。
后面测试以下参数不影响结果。
#define _MIN_SS 512 /* 512, 1024, 2048 or 4096 */
USBD_MAX_STR_DESC_SIZ 512
一周热门 更多>