cancel
Showing results for 
Search instead for 
Did you mean: 

STM32N6 cubeMX do not generate HAL_DCMIPP_MspInit for parallel DCMIPP interface

TheImmortal
Associate III

Hello,

If DCMIPP parallel mode is selected then CubeMX do not generate HAL_DCMIPP_MspInit function to initialize and enable DCMIPP CLK, pinout, IRQ, there is only weak empty declaration in stm32n6xx_hal_dcmipp.c, without initialization settings nothing works...

I do not checked other modes.

4 REPLIES 4
TheImmortal
Associate III

Maybe it helps, I created HAL_DCMIPP_MspInit initialization settings, now DCMIPP is working, adjust by you HW.

/* USER CODE BEGIN 4 */
void HAL_DCMIPP_MspInit(DCMIPP_HandleTypeDef *hdcmipp) {
	GPIO_InitTypeDef GPIO_InitStruct = { 0 };
	RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 };
	//if (hdcmi->Instance == DCMIPP) {

	__HAL_RCC_DCMIPP_CLK_ENABLE();
    __HAL_RCC_DCMIPP_FORCE_RESET();
    __HAL_RCC_DCMIPP_RELEASE_RESET();
    HAL_NVIC_SetPriority(DCMIPP_IRQn, 3, 0);
    HAL_NVIC_EnableIRQ(DCMIPP_IRQn);

    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_DCMIPP;
    PeriphClkInitStruct.DcmippClockSelection = RCC_DCMIPPCLKSOURCE_IC17;
    PeriphClkInitStruct.ICSelection[RCC_IC17].ClockSelection = RCC_ICCLKSOURCE_PLL3;
    PeriphClkInitStruct.ICSelection[RCC_IC17].ClockDivider = 4;
    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {
      Error_Handler();
    }

	__HAL_RCC_GPIOF_CLK_ENABLE();
	__HAL_RCC_GPIOA_CLK_ENABLE();
	__HAL_RCC_GPIOG_CLK_ENABLE();
	__HAL_RCC_GPIOB_CLK_ENABLE();
	__HAL_RCC_GPION_CLK_ENABLE();
	/**DCMI GPIO Configuration
	 PF1     ------> DCMI_D7
	 PA1     ------> DCMI_D0
	 PG3     ------> DCMI_HSYNC
	 PG15     ------> DCMI_D4
	 PA10     ------> DCMI_D1
	 PG1     ------> DCMI_PIXCLK
	 PG10     ------> DCMI_D2
	 PG2     ------> DCMI_D6
	 PB4(NJTRST)     ------> DCMI_VSYNC
	 PN9     ------> DCMI_D5
	 PA4     ------> DCMI_D3
	 */

	GPIO_InitStruct.Pin = GPIO_PIN_1;
	GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
	GPIO_InitStruct.Pull = GPIO_NOPULL;
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
	GPIO_InitStruct.Alternate = GPIO_AF9_DCMIPP;
	HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);

	GPIO_InitStruct.Pin = GPIO_PIN_1 | GPIO_PIN_10 | GPIO_PIN_4;
	GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
	GPIO_InitStruct.Pull = GPIO_NOPULL;
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
	GPIO_InitStruct.Alternate = GPIO_AF9_DCMIPP;
	HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

	GPIO_InitStruct.Pin = GPIO_PIN_3 | GPIO_PIN_15 | GPIO_PIN_1 | GPIO_PIN_10 | GPIO_PIN_2;
	GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
	GPIO_InitStruct.Pull = GPIO_NOPULL;
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
	GPIO_InitStruct.Alternate = GPIO_AF9_DCMIPP;
	HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);

	GPIO_InitStruct.Pin = GPIO_PIN_4;
	GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
	GPIO_InitStruct.Pull = GPIO_NOPULL;
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
	GPIO_InitStruct.Alternate = GPIO_AF9_DCMIPP;
	HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

	GPIO_InitStruct.Pin = GPIO_PIN_9;
	GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
	GPIO_InitStruct.Pull = GPIO_NOPULL;
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
	GPIO_InitStruct.Alternate = GPIO_AF10_DCMIPP;
	HAL_GPIO_Init(GPION, &GPIO_InitStruct);
}

 

Imen.D
ST Employee

Hello @TheImmortal 

Are you using the latest release of CubeMX v 6.15?

When your question is answered, please close this topic by clicking "Accept as Solution".
Thanks
Imen

Hi,

it's latest v 6.15

Imen.D
ST Employee

Hi @TheImmortal ,

I reproduced this issue and escalated it through internal ticket number 215575.

Our Dev team is now aware of this issue and is working to resolve it.
Thank you for your contributions and for your understanding while we work on this.

PS: Internal ticket number 215575 is only for reference and not accessible outside of ST.

When your question is answered, please close this topic by clicking "Accept as Solution".
Thanks
Imen