初级会员

- 积分
- 70
- 金钱
- 70
- 注册时间
- 2020-10-22
- 在线时间
- 15 小时
|
发表于 2021-3-9 12:01:37
|
显示全部楼层
429 做 usb读卡器 USBFS 使用sdio 读TF卡 355KB - 700KB 这是电脑显示的速度 写入 355K 很稳定
int8_t STORAGE_Read_FS(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len)
{
/* USER CODE BEGIN 6 */
#ifdef SD_CARD_READ
int8_t ret = -1;
uint32_t timeout = 100000;
BSP_SD_ReadBlocks((uint32_t *)buf, blk_addr, blk_len, SD_DATATIMEOUT);
while(BSP_SD_GetCardState() != SD_TRANSFER_OK)
{
if (timeout-- == 0)
{
return ret;
}
}
ret = 0;
return ret;
#endif
#ifdef SD_CARD_READ_DMA
int8_t ret = USBD_FAIL;
if( HAL_SD_ReadBlocks_DMA(&hsd, buf, blk_addr, blk_len) == HAL_OK )
{
ret = USBD_OK;
}
if( USBD_OK == ret )
{
// while(HAL_SD_GetState(&hsd) == HAL_SD_STATE_BUSY){};
while( HAL_SD_GetCardState(&hsd) != HAL_SD_CARD_TRANSFER ){};
}
return ret;
#endif
//return (USBD_OK);
/* USER CODE END 6 */
}
/**
* @brief .
* @param lun: .
* @retval USBD_OK if all operations are OK else USBD_FAIL
*/
int8_t STORAGE_Write_FS(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len)
{
/* USER CODE BEGIN 7 */
#ifdef SD_CARD_WRITE
int8_t ret = -1;
uint32_t timeout = 100000;
BSP_SD_WriteBlocks((uint32_t *)buf, blk_addr, blk_len, SD_DATATIMEOUT);
while(BSP_SD_GetCardState() != SD_TRANSFER_OK)
{
if (timeout-- == 0)
{
return ret;
}
}
ret = 0;
return ret;
#endif
#ifdef SD_CARD_WRITE_DMA
int8_t ret = USBD_FAIL;
if( HAL_SD_WriteBlocks_DMA(&hsd, buf, blk_addr, blk_len) == HAL_OK )
{
ret = USBD_OK;
}
if( USBD_OK == ret )
{
// while(HAL_SD_GetState(&hsd) == HAL_SD_STATE_BUSY){};
while( HAL_SD_GetCardState(&hsd) != HAL_SD_CARD_TRANSFER ){};
}
return ret;
#endif
// return (USBD_OK);
/* USER CODE END 7 */
}
DMA 和普通模式 速度差是一样
感觉那里不对 |
|