AnsweredAssumed Answered

CubeMX broke SDIO DMA in latest update

Question asked by bauch.aaron.001 on Nov 12, 2015
Latest reply on Dec 9, 2015 by JasonP
In the current release of CubeMX V4.11.0 using the latest F4 libraries, V1.9.0, a bug has been introduced that makes the SDIO DMA channels useless.  In the previous library set, V1.8.0, when the DMA channels were selected for the SDIO peripheral, the DMA options were in a random state leaving it up to the user to figure out what parameters and modes were appropriate for the peripheral including DMA mode, FIFO functions and address incrementing.  In the V1.9.0 this issue is addressed by having the tool automatically fill in what appear to be appropriate parameters for the tx and rx DMA channels when they are added.  However on closer examination of the .ioc file produced by cube, even though in the configuration window the Mode is locked to "Peripheral Flow Control", which is appropriate for the SDIO DMA channels, in the .ioc file this parameter is set to "DMA_NORMAL" instead of "DMA_PFCTRL".  There is no way to change this through the tool that I can find, but manually editing the .ioc file and restarting CubeMX resolves the problem.  I have attached two .ioc files, F4_SD.ioc initially generated with the V1.8.0 F4 libraries that has the correct setting of this parameter for rx and tx (around lines 17 and 27) and  SD_FAT.ioc generated with the V1.9.0 libraries which has the wrong setting in the .ioc file, but when this file is opened with Cube V4.11.0 the configuration screen for the DMA channels, both in the DMA config window and the SDIO config window shows the correct selection of Peripheral Flow Control.