Subversion Repositories DashDisplay

Rev

Rev 56 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 56 Rev 61
Line 423... Line 423...
423
 
423
 
424
  /* Disable SDIO Clock */
424
  /* Disable SDIO Clock */
425
  __HAL_SD_DISABLE(hsd);
425
  __HAL_SD_DISABLE(hsd);
426
 
426
 
427
  /* Set Power State to ON */
427
  /* Set Power State to ON */
428
  status = SDIO_PowerState_ON(hsd->Instance);
428
  (void)SDIO_PowerState_ON(hsd->Instance);
429
  if(status != HAL_OK)
-
 
430
  {
-
 
431
    return HAL_ERROR;
-
 
432
  }
-
 
433
 
429
 
434
  /* Enable SDIO Clock */
430
  /* Enable SDIO Clock */
435
  __HAL_SD_ENABLE(hsd);
431
  __HAL_SD_ENABLE(hsd);
436
 
432
 
437
  /* Identify card operating voltage */
433
  /* Identify card operating voltage */
Line 450... Line 446...
450
    hsd->State = HAL_SD_STATE_READY;
446
    hsd->State = HAL_SD_STATE_READY;
451
    hsd->ErrorCode |= errorstate;
447
    hsd->ErrorCode |= errorstate;
452
    return HAL_ERROR;
448
    return HAL_ERROR;
453
  }
449
  }
454
 
450
 
-
 
451
  /* Set Block Size for Card */
-
 
452
  errorstate = SDMMC_CmdBlockLength(hsd->Instance, BLOCKSIZE);
-
 
453
  if(errorstate != HAL_SD_ERROR_NONE)
-
 
454
  {
-
 
455
    /* Clear all the static flags */
-
 
456
    __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS);
-
 
457
    hsd->ErrorCode |= errorstate;
-
 
458
    hsd->State = HAL_SD_STATE_READY;
-
 
459
    return HAL_ERROR;
-
 
460
  }
-
 
461
 
455
  return HAL_OK;
462
  return HAL_OK;
456
}
463
}
457
 
464
 
458
/**
465
/**
459
  * @brief  De-Initializes the SD card.
466
  * @brief  De-Initializes the SD card.
Line 590... Line 597...
590
    if(hsd->SdCard.CardType != CARD_SDHC_SDXC)
597
    if(hsd->SdCard.CardType != CARD_SDHC_SDXC)
591
    {
598
    {
592
      add *= 512U;
599
      add *= 512U;
593
    }
600
    }
594
 
601
 
595
    /* Set Block Size for Card */
-
 
596
    errorstate = SDMMC_CmdBlockLength(hsd->Instance, BLOCKSIZE);
-
 
597
    if(errorstate != HAL_SD_ERROR_NONE)
-
 
598
    {
-
 
599
      /* Clear all the static flags */
-
 
600
      __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS);
-
 
601
      hsd->ErrorCode |= errorstate;
-
 
602
      hsd->State = HAL_SD_STATE_READY;
-
 
603
      return HAL_ERROR;
-
 
604
    }
-
 
605
 
-
 
606
    /* Configure the SD DPSM (Data Path State Machine) */
602
    /* Configure the SD DPSM (Data Path State Machine) */
607
    config.DataTimeOut   = SDMMC_DATATIMEOUT;
603
    config.DataTimeOut   = SDMMC_DATATIMEOUT;
608
    config.DataLength    = NumberOfBlocks * BLOCKSIZE;
604
    config.DataLength    = NumberOfBlocks * BLOCKSIZE;
609
    config.DataBlockSize = SDIO_DATABLOCK_SIZE_512B;
605
    config.DataBlockSize = SDIO_DATABLOCK_SIZE_512B;
610
    config.TransferDir   = SDIO_TRANSFER_DIR_TO_SDIO;
606
    config.TransferDir   = SDIO_TRANSFER_DIR_TO_SDIO;
Line 816... Line 812...
816
    if(hsd->SdCard.CardType != CARD_SDHC_SDXC)
812
    if(hsd->SdCard.CardType != CARD_SDHC_SDXC)
817
    {
813
    {
818
      add *= 512U;
814
      add *= 512U;
819
    }
815
    }
820
 
816
 
821
    /* Set Block Size for Card */
-
 
822
    errorstate = SDMMC_CmdBlockLength(hsd->Instance, BLOCKSIZE);
-
 
823
    if(errorstate != HAL_SD_ERROR_NONE)
-
 
824
    {
-
 
825
      /* Clear all the static flags */
-
 
826
      __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS);
-
 
827
      hsd->ErrorCode |= errorstate;
-
 
828
      hsd->State = HAL_SD_STATE_READY;
-
 
829
      return HAL_ERROR;
-
 
830
    }
-
 
831
 
-
 
832
    /* Configure the SD DPSM (Data Path State Machine) */
817
    /* Configure the SD DPSM (Data Path State Machine) */
833
    config.DataTimeOut   = SDMMC_DATATIMEOUT;
818
    config.DataTimeOut   = SDMMC_DATATIMEOUT;
834
    config.DataLength    = NumberOfBlocks * BLOCKSIZE;
819
    config.DataLength    = NumberOfBlocks * BLOCKSIZE;
835
    config.DataBlockSize = SDIO_DATABLOCK_SIZE_512B;
820
    config.DataBlockSize = SDIO_DATABLOCK_SIZE_512B;
836
    config.TransferDir   = SDIO_TRANSFER_DIR_TO_CARD;
821
    config.TransferDir   = SDIO_TRANSFER_DIR_TO_CARD;
Line 1013... Line 998...
1013
    if(hsd->SdCard.CardType != CARD_SDHC_SDXC)
998
    if(hsd->SdCard.CardType != CARD_SDHC_SDXC)
1014
    {
999
    {
1015
      add *= 512U;
1000
      add *= 512U;
1016
    }
1001
    }
1017
 
1002
 
1018
    /* Set Block Size for Card */
-
 
1019
    errorstate = SDMMC_CmdBlockLength(hsd->Instance, BLOCKSIZE);
-
 
1020
    if(errorstate != HAL_SD_ERROR_NONE)
-
 
1021
    {
-
 
1022
      /* Clear all the static flags */
-
 
1023
      __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS);
-
 
1024
      hsd->ErrorCode |= errorstate;
-
 
1025
      hsd->State = HAL_SD_STATE_READY;
-
 
1026
      return HAL_ERROR;
-
 
1027
    }
-
 
1028
 
-
 
1029
    /* Configure the SD DPSM (Data Path State Machine) */
1003
    /* Configure the SD DPSM (Data Path State Machine) */
1030
    config.DataTimeOut   = SDMMC_DATATIMEOUT;
1004
    config.DataTimeOut   = SDMMC_DATATIMEOUT;
1031
    config.DataLength    = BLOCKSIZE * NumberOfBlocks;
1005
    config.DataLength    = BLOCKSIZE * NumberOfBlocks;
1032
    config.DataBlockSize = SDIO_DATABLOCK_SIZE_512B;
1006
    config.DataBlockSize = SDIO_DATABLOCK_SIZE_512B;
1033
    config.TransferDir   = SDIO_TRANSFER_DIR_TO_SDIO;
1007
    config.TransferDir   = SDIO_TRANSFER_DIR_TO_SDIO;
Line 1121... Line 1095...
1121
    if(hsd->SdCard.CardType != CARD_SDHC_SDXC)
1095
    if(hsd->SdCard.CardType != CARD_SDHC_SDXC)
1122
    {
1096
    {
1123
      add *= 512U;
1097
      add *= 512U;
1124
    }
1098
    }
1125
 
1099
 
1126
    /* Set Block Size for Card */
-
 
1127
    errorstate = SDMMC_CmdBlockLength(hsd->Instance, BLOCKSIZE);
-
 
1128
    if(errorstate != HAL_SD_ERROR_NONE)
-
 
1129
    {
-
 
1130
      /* Clear all the static flags */
-
 
1131
      __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS);
-
 
1132
      hsd->ErrorCode |= errorstate;
-
 
1133
      hsd->State = HAL_SD_STATE_READY;
-
 
1134
      return HAL_ERROR;
-
 
1135
    }
-
 
1136
 
-
 
1137
    /* Write Blocks in Polling mode */
1100
    /* Write Blocks in Polling mode */
1138
    if(NumberOfBlocks > 1U)
1101
    if(NumberOfBlocks > 1U)
1139
    {
1102
    {
1140
      hsd->Context = (SD_CONTEXT_WRITE_MULTIPLE_BLOCK| SD_CONTEXT_IT);
1103
      hsd->Context = (SD_CONTEXT_WRITE_MULTIPLE_BLOCK| SD_CONTEXT_IT);
1141
 
1104
 
Line 1225... Line 1188...
1225
    hsd->hdmarx->XferErrorCallback = SD_DMAError;
1188
    hsd->hdmarx->XferErrorCallback = SD_DMAError;
1226
 
1189
 
1227
    /* Set the DMA Abort callback */
1190
    /* Set the DMA Abort callback */
1228
    hsd->hdmarx->XferAbortCallback = NULL;
1191
    hsd->hdmarx->XferAbortCallback = NULL;
1229
 
1192
 
-
 
1193
    /* Force DMA Direction */
-
 
1194
    hsd->hdmarx->Init.Direction = DMA_PERIPH_TO_MEMORY;
-
 
1195
    MODIFY_REG(hsd->hdmarx->Instance->CCR, DMA_CCR_DIR, hsd->hdmarx->Init.Direction);
-
 
1196
 
1230
    /* Enable the DMA Channel */
1197
    /* Enable the DMA Channel */
1231
    if(HAL_DMA_Start_IT(hsd->hdmarx, (uint32_t)&hsd->Instance->FIFO, (uint32_t)pData, (uint32_t)(BLOCKSIZE * NumberOfBlocks)/4U) != HAL_OK)
1198
    if(HAL_DMA_Start_IT(hsd->hdmarx, (uint32_t)&hsd->Instance->FIFO, (uint32_t)pData, (uint32_t)(BLOCKSIZE * NumberOfBlocks)/4U) != HAL_OK)
1232
    {
1199
    {
1233
      __HAL_SD_DISABLE_IT(hsd, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_RXOVERR | SDIO_IT_DATAEND));
1200
      __HAL_SD_DISABLE_IT(hsd, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_RXOVERR | SDIO_IT_DATAEND));
1234
      __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS);
1201
      __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS);
Line 1244... Line 1211...
1244
      if(hsd->SdCard.CardType != CARD_SDHC_SDXC)
1211
      if(hsd->SdCard.CardType != CARD_SDHC_SDXC)
1245
      {
1212
      {
1246
        add *= 512U;
1213
        add *= 512U;
1247
      }
1214
      }
1248
 
1215
 
1249
      /* Set Block Size for Card */
-
 
1250
      errorstate = SDMMC_CmdBlockLength(hsd->Instance, BLOCKSIZE);
-
 
1251
      if(errorstate != HAL_SD_ERROR_NONE)
-
 
1252
      {
-
 
1253
        /* Clear all the static flags */
-
 
1254
        __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS);
-
 
1255
        hsd->ErrorCode |= errorstate;
-
 
1256
        hsd->State = HAL_SD_STATE_READY;
-
 
1257
        return HAL_ERROR;
-
 
1258
      }
-
 
1259
 
-
 
1260
      /* Configure the SD DPSM (Data Path State Machine) */
1216
      /* Configure the SD DPSM (Data Path State Machine) */
1261
      config.DataTimeOut   = SDMMC_DATATIMEOUT;
1217
      config.DataTimeOut   = SDMMC_DATATIMEOUT;
1262
      config.DataLength    = BLOCKSIZE * NumberOfBlocks;
1218
      config.DataLength    = BLOCKSIZE * NumberOfBlocks;
1263
      config.DataBlockSize = SDIO_DATABLOCK_SIZE_512B;
1219
      config.DataBlockSize = SDIO_DATABLOCK_SIZE_512B;
1264
      config.TransferDir   = SDIO_TRANSFER_DIR_TO_SDIO;
1220
      config.TransferDir   = SDIO_TRANSFER_DIR_TO_SDIO;
Line 1355... Line 1311...
1355
    if(hsd->SdCard.CardType != CARD_SDHC_SDXC)
1311
    if(hsd->SdCard.CardType != CARD_SDHC_SDXC)
1356
    {
1312
    {
1357
      add *= 512U;
1313
      add *= 512U;
1358
    }
1314
    }
1359
 
1315
 
1360
    /* Set Block Size for Card */
-
 
1361
    errorstate = SDMMC_CmdBlockLength(hsd->Instance, BLOCKSIZE);
-
 
1362
    if(errorstate != HAL_SD_ERROR_NONE)
-
 
1363
    {
-
 
1364
      /* Clear all the static flags */
-
 
1365
      __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS);
-
 
1366
      hsd->ErrorCode |= errorstate;
-
 
1367
      hsd->State = HAL_SD_STATE_READY;
-
 
1368
      return HAL_ERROR;
-
 
1369
    }
-
 
1370
 
-
 
1371
    /* Write Blocks in Polling mode */
1316
    /* Write Blocks in Polling mode */
1372
    if(NumberOfBlocks > 1U)
1317
    if(NumberOfBlocks > 1U)
1373
    {
1318
    {
1374
      hsd->Context = (SD_CONTEXT_WRITE_MULTIPLE_BLOCK | SD_CONTEXT_DMA);
1319
      hsd->Context = (SD_CONTEXT_WRITE_MULTIPLE_BLOCK | SD_CONTEXT_DMA);
1375
 
1320
 
Line 1394... Line 1339...
1394
    }
1339
    }
1395
 
1340
 
1396
    /* Enable SDIO DMA transfer */
1341
    /* Enable SDIO DMA transfer */
1397
    __HAL_SD_DMA_ENABLE(hsd);
1342
    __HAL_SD_DMA_ENABLE(hsd);
1398
 
1343
 
-
 
1344
    /* Force DMA Direction */
-
 
1345
    hsd->hdmatx->Init.Direction = DMA_MEMORY_TO_PERIPH;
-
 
1346
    MODIFY_REG(hsd->hdmatx->Instance->CCR, DMA_CCR_DIR, hsd->hdmatx->Init.Direction);
-
 
1347
 
1399
    /* Enable the DMA Channel */
1348
    /* Enable the DMA Channel */
1400
    if(HAL_DMA_Start_IT(hsd->hdmatx, (uint32_t)pData, (uint32_t)&hsd->Instance->FIFO, (uint32_t)(BLOCKSIZE * NumberOfBlocks)/4U) != HAL_OK)
1349
    if(HAL_DMA_Start_IT(hsd->hdmatx, (uint32_t)pData, (uint32_t)&hsd->Instance->FIFO, (uint32_t)(BLOCKSIZE * NumberOfBlocks)/4U) != HAL_OK)
1401
    {
1350
    {
1402
      __HAL_SD_DISABLE_IT(hsd, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_TXUNDERR | SDIO_IT_STBITERR));
1351
      __HAL_SD_DISABLE_IT(hsd, (SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_TXUNDERR | SDIO_IT_STBITERR));
1403
      __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS);
1352
      __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS);
Line 2158... Line 2107...
2158
  */
2107
  */
2159
HAL_StatusTypeDef HAL_SD_GetCardStatus(SD_HandleTypeDef *hsd, HAL_SD_CardStatusTypeDef *pStatus)
2108
HAL_StatusTypeDef HAL_SD_GetCardStatus(SD_HandleTypeDef *hsd, HAL_SD_CardStatusTypeDef *pStatus)
2160
{
2109
{
2161
  uint32_t sd_status[16];
2110
  uint32_t sd_status[16];
2162
  uint32_t errorstate;
2111
  uint32_t errorstate;
-
 
2112
  HAL_StatusTypeDef status = HAL_OK;
2163
 
2113
 
2164
  errorstate = SD_SendSDStatus(hsd, sd_status);
2114
  errorstate = SD_SendSDStatus(hsd, sd_status);
2165
  if(errorstate != HAL_SD_ERROR_NONE)
2115
  if(errorstate != HAL_SD_ERROR_NONE)
2166
  {
2116
  {
2167
    /* Clear all the static flags */
2117
    /* Clear all the static flags */
2168
    __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS);
2118
    __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS);
2169
    hsd->ErrorCode |= errorstate;
2119
    hsd->ErrorCode |= errorstate;
2170
    hsd->State = HAL_SD_STATE_READY;
2120
    hsd->State = HAL_SD_STATE_READY;
2171
    return HAL_ERROR;
2121
    status = HAL_ERROR;
2172
  }
2122
  }
2173
  else
2123
  else
2174
  {
2124
  {
2175
    pStatus->DataBusWidth = (uint8_t)((sd_status[0] & 0xC0U) >> 6U);
2125
    pStatus->DataBusWidth = (uint8_t)((sd_status[0] & 0xC0U) >> 6U);
2176
 
2126
 
Line 2192... Line 2142...
2192
    pStatus->EraseTimeout = (uint8_t)((sd_status[3] & 0xFC00U) >> 10U);
2142
    pStatus->EraseTimeout = (uint8_t)((sd_status[3] & 0xFC00U) >> 10U);
2193
 
2143
 
2194
    pStatus->EraseOffset = (uint8_t)((sd_status[3] & 0x0300U) >> 8U);
2144
    pStatus->EraseOffset = (uint8_t)((sd_status[3] & 0x0300U) >> 8U);
2195
  }
2145
  }
2196
 
2146
 
-
 
2147
  /* Set Block Size for Card */
-
 
2148
  errorstate = SDMMC_CmdBlockLength(hsd->Instance, BLOCKSIZE);
-
 
2149
  if(errorstate != HAL_SD_ERROR_NONE)
-
 
2150
  {
-
 
2151
    /* Clear all the static flags */
-
 
2152
    __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS);
-
 
2153
    hsd->ErrorCode = errorstate;
-
 
2154
    hsd->State = HAL_SD_STATE_READY;
-
 
2155
    status = HAL_ERROR;
-
 
2156
  }
-
 
2157
 
2197
  return HAL_OK;
2158
  return status;
2198
}
2159
}
2199
 
2160
 
2200
/**
2161
/**
2201
  * @brief  Gets the SD card info.
2162
  * @brief  Gets the SD card info.
2202
  * @param  hsd: Pointer to SD handle
2163
  * @param  hsd: Pointer to SD handle
Line 2231... Line 2192...
2231
  */
2192
  */
2232
HAL_StatusTypeDef HAL_SD_ConfigWideBusOperation(SD_HandleTypeDef *hsd, uint32_t WideMode)
2193
HAL_StatusTypeDef HAL_SD_ConfigWideBusOperation(SD_HandleTypeDef *hsd, uint32_t WideMode)
2233
{
2194
{
2234
  SDIO_InitTypeDef Init;
2195
  SDIO_InitTypeDef Init;
2235
  uint32_t errorstate;
2196
  uint32_t errorstate;
-
 
2197
  HAL_StatusTypeDef status = HAL_OK;
2236
 
2198
 
2237
  /* Check the parameters */
2199
  /* Check the parameters */
2238
  assert_param(IS_SDIO_BUS_WIDE(WideMode));
2200
  assert_param(IS_SDIO_BUS_WIDE(WideMode));
2239
 
2201
 
2240
  /* Change State */
2202
  /* Change State */
Line 2273... Line 2235...
2273
  if(hsd->ErrorCode != HAL_SD_ERROR_NONE)
2235
  if(hsd->ErrorCode != HAL_SD_ERROR_NONE)
2274
  {
2236
  {
2275
    /* Clear all the static flags */
2237
    /* Clear all the static flags */
2276
    __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS);
2238
    __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS);
2277
    hsd->State = HAL_SD_STATE_READY;
2239
    hsd->State = HAL_SD_STATE_READY;
2278
    return HAL_ERROR;
2240
    status = HAL_ERROR;
2279
  }
2241
  }
2280
  else
2242
  else
2281
  {
2243
  {
2282
    /* Configure the SDIO peripheral */
2244
    /* Configure the SDIO peripheral */
2283
    Init.ClockEdge           = hsd->Init.ClockEdge;
2245
    Init.ClockEdge           = hsd->Init.ClockEdge;
Line 2287... Line 2249...
2287
    Init.HardwareFlowControl = hsd->Init.HardwareFlowControl;
2249
    Init.HardwareFlowControl = hsd->Init.HardwareFlowControl;
2288
    Init.ClockDiv            = hsd->Init.ClockDiv;
2250
    Init.ClockDiv            = hsd->Init.ClockDiv;
2289
    (void)SDIO_Init(hsd->Instance, Init);
2251
    (void)SDIO_Init(hsd->Instance, Init);
2290
  }
2252
  }
2291
 
2253
 
-
 
2254
  /* Set Block Size for Card */
-
 
2255
  errorstate = SDMMC_CmdBlockLength(hsd->Instance, BLOCKSIZE);
-
 
2256
  if(errorstate != HAL_SD_ERROR_NONE)
-
 
2257
  {
-
 
2258
    /* Clear all the static flags */
-
 
2259
    __HAL_SD_CLEAR_FLAG(hsd, SDIO_STATIC_FLAGS);
-
 
2260
    hsd->ErrorCode |= errorstate;
-
 
2261
    status = HAL_ERROR;
-
 
2262
  }
-
 
2263
 
2292
  /* Change State */
2264
  /* Change State */
2293
  hsd->State = HAL_SD_STATE_READY;
2265
  hsd->State = HAL_SD_STATE_READY;
2294
 
2266
 
2295
  return HAL_OK;
2267
  return status;
2296
}
2268
}
2297
 
2269
 
2298
/**
2270
/**
2299
  * @brief  Gets the current sd card data state.
2271
  * @brief  Gets the current sd card data state.
2300
  * @param  hsd: pointer to SD handle
2272
  * @param  hsd: pointer to SD handle
Line 3107... Line 3079...
3107
  if(errorstate != HAL_SD_ERROR_NONE)
3079
  if(errorstate != HAL_SD_ERROR_NONE)
3108
  {
3080
  {
3109
    return errorstate;
3081
    return errorstate;
3110
  }
3082
  }
3111
 
3083
 
3112
  while(!__HAL_SD_GET_FLAG(hsd, SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_DBCKEND))
3084
  while(!__HAL_SD_GET_FLAG(hsd, SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT))
3113
  {
3085
  {
3114
    if(__HAL_SD_GET_FLAG(hsd, SDIO_FLAG_RXDAVL))
3086
    if(__HAL_SD_GET_FLAG(hsd, SDIO_FLAG_RXDAVL))
3115
    {
3087
    {
3116
      *(tempscr + index) = SDIO_ReadFIFO(hsd->Instance);
3088
      *(tempscr + index) = SDIO_ReadFIFO(hsd->Instance);
3117
      index++;
3089
      index++;
3118
    }
3090
    }
-
 
3091
    else if(!__HAL_SD_GET_FLAG(hsd, SDIO_FLAG_RXACT))
-
 
3092
    {
-
 
3093
      break;
-
 
3094
    }
3119
 
3095
 
3120
    if((HAL_GetTick() - tickstart) >=  SDMMC_DATATIMEOUT)
3096
    if((HAL_GetTick() - tickstart) >=  SDMMC_DATATIMEOUT)
3121
    {
3097
    {
3122
      return HAL_SD_ERROR_TIMEOUT;
3098
      return HAL_SD_ERROR_TIMEOUT;
3123
    }
3099
    }