【发布时间】:2020-07-21 11:43:11
【问题描述】:
我想从我的 STM32L433RCTx 构建一个 SD 卡读卡器。 SD 卡通过 SDMMC 1 SD 4 bits Wide 总线连接。 USB_DEVICE 已激活并设置为海量存储类。
当我连接到计算机时,会显示一个存储设备,但 Windows 想要对其进行格式化。但是,它无法格式化该卡。它显示了 SD 卡的正确大小。我最重要的功能是:
int8_t STORAGE_GetCapacity_FS(uint8_t lun, uint32_t *block_num, uint16_t *block_size)
{
/* USER CODE BEGIN 3 */
HAL_SD_GetCardInfo(&hsd1, &SDCardInfo);
*block_size = BLOCK_SIZE;
*block_num = SDCardInfo.BlockNbr;
return (USBD_OK);
/* USER CODE END 3 */
}
我想这个可以正常工作,因为 SD 卡的大小是正确的。
但是,读写不起作用。
int8_t STORAGE_Read_FS(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len)
{
/* USER CODE BEGIN 6 */
HAL_SD_ReadBlocks(&hsd1, buf, blk_addr, (uint32_t) blk_len, 10);
return (USBD_OK);
/* USER CODE END 6 */
}
int8_t STORAGE_Write_FS(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len)
{
/* USER CODE BEGIN 7 */
HAL_SD_WriteBlocks(&hsd1, buf, blk_addr, (uint32_t) blk_len, 10);
return (USBD_OK);
/* USER CODE END 7 */
}
问题:
- 是否可以在不使用 FATFS 的情况下完成这项工作,还是我需要先将带有 FATFS 的 SD 卡连接到 MCU,然后在 USB 驱动程序中传递此信息?
- 什么是正确的读写函数?
【问题讨论】:
标签: stm32