mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
Merge pull request #1974 from kwagyeman/kwabena/fix_fsync
ports/mimxrt: Add support for fsync pin to snapshot.
This commit is contained in:
commit
a5c52bb75b
@ -234,7 +234,7 @@
|
||||
|
||||
#define DCMI_RESET_PIN (&omv_pin_DCMI_RESET)
|
||||
#define DCMI_POWER_PIN (&omv_pin_DCMI_POWER)
|
||||
//#define DCMI_FSYNC_PIN (&omv_pin_DCMI_FSYNC)
|
||||
#define DCMI_FSYNC_PIN (&omv_pin_DCMI_FSYNC)
|
||||
|
||||
#define DCMI_D0_PIN (&omv_pin_DCMI_D0)
|
||||
#define DCMI_D1_PIN (&omv_pin_DCMI_D1)
|
||||
|
||||
@ -14,8 +14,8 @@ OMV_GPIO_DEFINE(LPSPI3_SSEL, AD_B0_03, LPSPI3, 0)
|
||||
OMV_GPIO_DEFINE(LPSPI3_GPIO, AD_B0_03, GPIO, 0)
|
||||
|
||||
OMV_GPIO_DEFINE(LPSPI4_SCLK, B0_03, LPSPI4, 0)
|
||||
OMV_GPIO_DEFINE(LPSPI4_MISO, B0_02, LPSPI4, 0)
|
||||
OMV_GPIO_DEFINE(LPSPI4_MOSI, B0_01, LPSPI4, 0)
|
||||
OMV_GPIO_DEFINE(LPSPI4_MISO, B0_01, LPSPI4, 0)
|
||||
OMV_GPIO_DEFINE(LPSPI4_MOSI, B0_02, LPSPI4, 0)
|
||||
OMV_GPIO_DEFINE(LPSPI4_SSEL, B0_00, LPSPI4, 0)
|
||||
OMV_GPIO_DEFINE(LPSPI4_GPIO, B0_00, GPIO, 0)
|
||||
|
||||
@ -37,3 +37,4 @@ OMV_GPIO_DEFINE(DCMI_VSYNC, B1_13, CSI, 0)
|
||||
OMV_GPIO_DEFINE(DCMI_PXCLK, B1_12, CSI, 0)
|
||||
OMV_GPIO_DEFINE(DCMI_RESET, B1_01, GPIO, 0)
|
||||
OMV_GPIO_DEFINE(DCMI_POWER, B1_02, GPIO, 0)
|
||||
OMV_GPIO_DEFINE(DCMI_FSYNC, B0_01, GPIO, 0)
|
||||
|
||||
@ -325,16 +325,37 @@ int sensor_snapshot(sensor_t *sensor, image_t *image, uint32_t flags) {
|
||||
CSI_REG_CR18(CSI) |= CSI_CR18_CSI_ENABLE_MASK;
|
||||
}
|
||||
|
||||
// Let the camera know we want to trigger it now.
|
||||
#if defined(DCMI_FSYNC_PIN)
|
||||
if (sensor->hw_flags.fsync) {
|
||||
omv_gpio_write(DCMI_FSYNC_PIN, 1);
|
||||
}
|
||||
#endif
|
||||
|
||||
vbuffer_t *buffer = framebuffer_get_head(FB_NO_FLAGS);
|
||||
// Wait for the DMA to finish the transfer.
|
||||
for (mp_uint_t ticks = mp_hal_ticks_ms(); buffer == NULL;) {
|
||||
buffer = framebuffer_get_head(FB_NO_FLAGS);
|
||||
if ((mp_hal_ticks_ms() - ticks) > 3000) {
|
||||
sensor_abort();
|
||||
|
||||
#if defined(DCMI_FSYNC_PIN)
|
||||
if (sensor->hw_flags.fsync) {
|
||||
omv_gpio_write(DCMI_FSYNC_PIN, 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
return SENSOR_ERROR_CAPTURE_TIMEOUT;
|
||||
}
|
||||
}
|
||||
|
||||
// We're done receiving data.
|
||||
#if defined(DCMI_FSYNC_PIN)
|
||||
if (sensor->hw_flags.fsync) {
|
||||
omv_gpio_write(DCMI_FSYNC_PIN, 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!sensor->transpose) {
|
||||
MAIN_FB()->w = w;
|
||||
MAIN_FB()->h = h;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user