본문 바로가기

[ST_MICRO]/STM32H7

[STM32H7-RP] DCMI 테스트 - OV2640 카메라 영상 전송 테스트

STM32H7-RP 보드에는 DCMI 인터페이스를 사용 할수 있어 카메라 모듈을 연결하여 테스트 할 수 있다.

DCMI 핀맵은 아래와 같다.

 

 

 

STM32CubeIDE 에서 DCMI 인터페이스를 설정하고 DMA를 추가 한다.

 

DMCI 인터럽트도 사용할 수 있도록 설정해 준다.

 

카메라의 메인 클럭(MCLK)은 RCCMCO 핀(PA8)을 통해 가변 할 수 있도록 할당되어 있기 때문에 MCO를 사용할 수 있도록 설정한다.

 

 

카메라 모듈의 설정은 I2C1에 할당되어 있다.

 


기본적인 코드를 테스트 해보자.

카메라 라인 인터럽트 및 프레임 인터럽트루틴에서 플래그를 보내고 메인루프에서 처리 하도록 했다.

void HAL_DCMI_VsyncEventCallback(DCMI_HandleTypeDef *hdcmi)
{
	gCameraFrameFlag++;
}

void HAL_DCMI_LineEventCallback(DCMI_HandleTypeDef *hdcmi)
{
	gCameraLineFlag++;
}

 

메인루프에서는 TCP  전송이나 수신을 처리하고 필요에 따라 카메라 데이터 인터럽트 플레그를 확인해서 전송 할 수 있도록 했다.

  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		ProcessCamTcps(_CAM_SOCK_NUM, ethBuf0, dDestport);

	  	if(gCameraFrameFlag>0)
	  	{
	  		gCameraFrameFlag = 0;
	  		CamImagTransferFrame(_CMD_CAM_FRAME, gLineCnt);

	  		printf(">%d, %d, %x, %x\r\n", gFrameCnt, gLineCnt, FrameBuffer[0], FrameBuffer[100]);
	  		printf("-------------------\r\n");
	  		gFrameCnt++;
	  		gLineCnt = 0;
	  	}

		if(gCameraLineFlag>0)
		{
			gCameraLineFlag = 0;

			CamImagTransferLine(_CMD_CAM_LINE, gLineCnt);
			gLineCnt++;
		}
  }

 

 

 

이제 정상적으로 프레임 데이터가 들어온다.

 

>99302, 480

-------------------

>99303, 480

-------------------

>99304, 480

-------------------

>99305, 480

-------------------

>99306, 480

-------------------

 

 

그런데 인터럽트는 정상적으로 발생하지만 데이터를 확인 해 보니 0값만 있다.

왜 CAM 데이터가 없는 것일까?

STM32F4 보드에서는 잘 동작 했던 코드인데...

 

DMA 메모리에서 정상적으로 값을 가져 오지 못하는 현상 같아 보인다.

STM32H7 은 고속의 처리를 위해 여러가지 기능이 많지만 기존 코드와 호환성이 많이 떨어지는것 같다. 테스트 할때 마다 문제가 발생하고 있다.

 

DMA 데이터 이면 DCashe와 관련 있지 않을까?

DCashe 를 사용하지 않으니 정상 동작 한다.

 

int main(void)
{
  /* USER CODE BEGIN 1 */
	unsigned int data;

	SCB_EnableICache();
	//SCB_EnableDCache();
	
    MPU_Config();

 

이렇게 해서 네트웍으로 영상을 보내면 정상적으로 출력 되는것을 확인 할 수 있다.

 

 


W5300으로 영상 전송시 네트웍 전송률을 확인해 보면 38Mbps정도로 측정이 된다.

 

iperf 로 데이터 전송시(80Mbps)와 비교 해보면 많이 차이가 발생한다. 아무래도 데이터 수신후 처리하는 부분에서 시간을 많이 소모하는것 같아 보인다.

반응형