初级会员

- 积分
- 91
- 金钱
- 91
- 注册时间
- 2019-10-29
- 在线时间
- 31 小时
|
10金钱
请教一个下个 我使用stm32h743 sd使用dma 使用cubemx 生成的代码 通过HAL_SD_WriteBlocks_DMA()和 HAL_SD_ReadBlocks_DMA()函数读写 sd卡 ,读到的数据是0.
__align(4) uint8_t write_buf[512];
__align(4) uint8_t read_buf[512];
void sd_test(void)
{
u32 i = 0, status;
HAL_SD_CardStateTypeDef State;
HAL_SD_CardCIDTypeDef SD_CardCID;
State = HAL_SD_GetCardState(&hsd1);
if(State == HAL_SD_CARD_TRANSFER)
{
HAL_SD_GetCardCID(&hsd1,&SD_CardCID);
printf("\r\n Initialize SD card successfully!\r\n\r\n");
printf(" SD card information! \r\n");
printf(" CardCapacity : %llu \r\n",((unsigned long long)hsd1.SdCard.BlockSize*hsd1.SdCard.BlockNbr));
printf(" CardBlockSize : %d \r\n",hsd1.SdCard.BlockSize);
printf(" RCA : %d \r\n",hsd1.SdCard.RelCardAdd);
printf(" CardType : %d \r\n",hsd1.SdCard.CardType);
printf(" ManufacturerID: %d \r\n",SD_CardCID.ManufacturerID);
}
else
{
printf("SD卡初始化失败\n" );
while(1); // 停机
}
for(i = 0; i < 512; i++)
{
write_buf[i] = i % 256;
}
printf("------------------- Write SD card block data Test ------------------\r\n");
//status = HAL_SD_WriteBlocks(&hsd1,(uint8_t *)write_buf,0,1,0xffff);
status = HAL_SD_WriteBlocks_DMA(&hsd1,(uint8_t *)write_buf,0,512);
//status = BSP_SD_WriteBlocks_DMA((uint32_t *)write_buf,0,100);
if(status == 0)
{
printf("Write block data ok \r\n" );
}
else
{
printf("Write block data fail!\r\n " );
}
delay_ms(2000);
printf("------------------- Read SD card block data after Write ------------------\r\n");
status = HAL_SD_ReadBlocks_DMA(&hsd1,(uint8_t *)read_buf,0,512);
//status = BSP_SD_ReadBlocks_DMA((uint32_t *)read_buf, 2 ,100);
if(status == 0)
{
printf("Read block data ok \r\n" );
for(i = 0; i < 512; i++)
{
printf("0x%02x ", read_buf[i]);
if((i+1)%16 == 0)
{
printf("\r\n");
}
}
}else
{
printf("read block data fail %d\r\n", status);
}
}
|
|