你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

st-img
chrome
st-img
firefox
st-img
safari
st-img
ie8及以上
shequ.stmicroelectronics.cn
  • ST意法半导体官网
  • STM32中文官网
  • ST全球论坛
登录/注册
  • 首页
  • 技术问答
  • 话题
  • 资源
  • 创客秀
  • 视频
  • 标签
  • 积分商城
  • 每日签到
启明丶廿五

启明丶廿五

 

回答数 0 关注数 0
关注 私信
  • 动态99
  • 提问
  • 回答0
  • 创客秀 0
  • 分享 0
  • 关注0
1 回答

STM32L486+CubeMX+SDMMC+DMA+FATFS出错

STM32L4 STM32CubeMX DMA
启明丶廿五 启明丶廿五 回答时间: 2023-1-29 17:34

使用CubeMX(版本6.7.0,STM32CubeL4 Firmware Package V1.17.0 / 11-February-2021 )生成工程,修改了下面几个地方:void MX_SDMMC1_SD_Init(void) {   /* USER CODE BEGIN SDMMC1_Init 0 */   /* USER CODE END SDMMC1_Init 0 */   /* USER CODE BEGIN SDMMC1_Init 1 */   /* USER CODE END SDMMC1_Init 1 */   hsd1.Instance = SDMMC1;   hsd1.Init.ClockEdge = SDMMC_CLOCK_EDGE_RISING;   hsd1.Init.ClockBypass = SDMMC_CLOCK_BYPASS_DISABLE;   hsd1.Init.ClockPowerSave = SDMMC_CLOCK_POWER_SAVE_DISABLE;   hsd1.Init.BusWide = SDMMC_BUS_WIDE_4B;   hsd1.Init.HardwareFlowControl = SDMMC_HARDWARE_FLOW_CONTROL_DISABLE;   hsd1.Init.ClockDiv = 0;   /* USER CODE BEGIN SDMMC1_Init 2 */   hsd1.Init.BusWide = SDMMC_BUS_WIDE_1B;    //初始化时改为1线,否则卡死在BSP_SD_Init中   /* USER CODE END SDMMC1_Init 2 */ } 金士顿32G内存卡运行正常,更换为16G内存卡却总是卡在下面的死循环:while(!__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | SDMMC_FLAG_DBCKEND))   {     if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXDAVL))     {       *(tempscr + index) = SDMMC_ReadFIFO(hsd->Instance);       index++;     }     if((HAL_GetTick() - tickstart) >=  SDMMC_DATATIMEOUT)     {       return HAL_SD_ERROR_TIMEOUT;     }   } 测试主函数: main(void) {   /* USER CODE BEGIN 1 */   uint32_t ii;   DWORD frr;   FATFS *FSS;         SD_POWER_ON;   /* USER CODE END 1 */   /* MCU Configuration--------------------------------------------------------*/   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */   HAL_Init();   /* USER CODE BEGIN Init */   /* USER CODE END Init */   /* Configure the system clock */   SystemClock_Config();   /* USER CODE BEGIN SysInit */   /* USER CODE END SysInit */   /* Initialize all configured peripherals */   MX_GPIO_Init();   MX_DMA_Init();   MX_SDMMC1_SD_Init();   /* USER CODE BEGIN 2 */   /* USER CODE END 2 */   /* Infinite loop */   /* USER CODE BEGIN WHILE */   while (1)   {     /* USER CODE END WHILE */     /* USER CODE BEGIN 3 */         if(BSP_SD_IsDetected() != SD_NOT_PRESENT)           {                 HAL_Delay(1000u);                 if(BSP_SD_Init() == MSD_OK)                 {                           retSD = FATFS_LinkDriver(&SD_Driver, SDPath);                           if(retSD==0u)                           {                                   retSD = f_mount(&SDFatFS,(TCHAR const *)SDPath,1u);                                 FSS = &SDFatFS;                                 retSD = f_getfree((TCHAR const *)SDPath,&frr,&FSS);                                                                 ii = frr*(SDFatFS.csize)/2048;                                 retSD = f_mkdir("TEST0");                                 retSD = f_mkdir("TEST1");                                 retSD = f_mkdir("TEST2");                                 f_mount(NULL,(TCHAR const*)SDPath,1u);                           }                           OKcnt++;                 }                 else                 {                         ERRcnt++;                 }         }   }   /* USER CODE END 3 */ }

赞0
启明丶廿五 启明丶廿五


阅读作者更多的帖子

所在话题

参与活动

  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16