하드웨어
GD32 마를린 DMA 문제 해결
팔나래
2023. 3. 6. 20:12
728x90
STM32F103의 수급 부족으로 인해 GD32F303 MCU를 탑재한 보드들이 시중에 많이 유통되었습니다.
문제는 GD32F303의 경우, DMA 컨트롤러의 결함으로 인해 LCD와 SD 카드 슬롯을 병렬로 사용할 수 없으며, 이로 인해 마를린 순정 펌웨어를 그대로 컴파일 해서 사용할 경우 SD 카드 읽기 오류가 발생할 수 있습니다.
해결 방법
Marlin > src > HAL > STM32 > tft > tft_fsmc.cpp
위 디렉토리를 따라 해당 파일을 찾아주시기 바랍니다.
HAL_SRAM_Init(&SRAMx, &Timing, &ExtTiming);
__HAL_RCC_DMA2_CLK_ENABLE();
#ifdef STM32F1xx
DMAtx.Instance = DMA2_Channel1;
#elif defined(STM32F4xx)
DMAtx.Instance = DMA2_Stream0;
DMAtx.Init.Channel = DMA_CHANNEL_0;
DMAtx.Init.FIFOMode = DMA_FIFOMODE_ENABLE;
Line 103을 보면 위와 같이 되어 있는데, 이 부분을 아래와 같이 수정해 주시기 바랍니다.
HAL_SRAM_Init(&SRAMx, &Timing, &ExtTiming);
#ifdef STM32F1xx
__HAL_RCC_DMA1_CLK_ENABLE();
DMAtx.Instance = DMA1_Channel1;
#elif defined(STM32F4xx)
__HAL_RCC_DMA2_CLK_ENABLE();
DMAtx.Instance = DMA2_Stream0;
DMAtx.Init.Channel = DMA_CHANNEL_0;
DMAtx.Init.FIFOMode = DMA_FIFOMODE_ENABLE;
출처: https://github.com/jmz52/Marlin/commit/1940418bbe89d07863ed05c6cddb1edf285a5a31
728x90