我想建立一个SD读卡器从我的STM32L433RCTx。SD卡通过SDMMC 1 SD 4位宽总线连接。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 */
}问题:
。
发布于 2020-08-31 09:49:04
对于用STM32F410R进行的示例测试,我使用云读写sdcard,代码如下:
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(&hsd, buf, blk_addr, blk_len, HAL_MAX_DELAY);
/* Wait until SD card is ready to use for new operation */
while (HAL_SD_GetCardState(&hsd) != HAL_SD_CARD_TRANSFER);
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(&hsd, buf, blk_addr, blk_len, HAL_MAX_DELAY);
/* Wait until SD card is ready to use for new operation */
while (HAL_SD_GetCardState(&hsd) != HAL_SD_CARD_TRANSFER);
return (USBD_OK);
/* USER CODE END 7 */
}https://stackoverflow.com/questions/63013788
复制相似问题