OV7670 Dev log
===
### 2022/3/15
##### ==Goal==: Try to take one snapshot
```c=
DCMI_HandleTypeDef hdcmi;
DMA_HandleTypeDef hdma_dcmi;
#define QVGA 320*240*2/4
#define FRAME_BUFFER 0xc0000000
while(1)
{
if (HAL_GPIO_ReadPin(B1_GPIO_Port, B1_Pin) == GPIO_PIN_RESET){
__HAL_DCMI_ENABLE_IT(&hdcmi, DCMI_IT_FRAME);
//memset((void *)frameBuffer, 0, sizeof(frameBuffer));// reset buffer
HAL_DCMI_Start_DMA(&hdcmi, DCMI_MODE_SNAPSHOT, (uint32_t) FRAME_BUFFER, QVGA);// Start DCMI, will start DMA interrupt inside this function.
printf("buffer size: %d \n", FRAME_BUFFER);
}
}
```
##### ==Result==
only receive this

Failed.
### 2022/3/16
##### ==Goal==: Try to understand sequence of DMA and DCMI interrupt
```c
while(1){
if (HAL_GPIO_ReadPin(B1_GPIO_Port, B1_Pin) == GPIO_PIN_RESET){
while (HAL_GPIO_ReadPin(B1_GPIO_Port, B1_Pin) == GPIO_PIN_RESET){};
latch = true;/* latch is a boolean variable to avoid entering this if statement twice
since the MCU is fast than our finger */
}
if (latch){
printf("Enter Latch\n");
__HAL_DCMI_ENABLE_IT(&hdcmi, DCMI_IT_FRAME);
printf("Enable DCMI interrupt\n");
//memset((void *)frameBuffer, 0, sizeof(frameBuffer));// reset buffer
HAL_DCMI_Start_DMA(&hdcmi, DCMI_MODE_SNAPSHOT, (uint32_t) FRAME_BUFFER, QVGA);// Start DCMI, will start DMA interrupt inside this function.
printf("Start DMA\n");
}
}
```
##### ==Result==

1 means DCMI is ready,2 is busy.