Arducam 2MP Mini Plus Shutter Speed Control

  1. Where did you get the camera module(s)?
    Amazon

  2. Model number of the product(s)?
    SKU B0067

  3. What hardware/platform were you working on?
    XIAO ESP32-C3

  4. Instructions you have followed. (link/manual/etc.)
    OV2640 Datasheet to check registers

  5. Problems you were having?
    I’m running an ArduCAM Mini 2MP Plus (OV2640) on a XIAO ESP32-C3 with the ArduCAM Arduino library, OV2640_MINI_2MP_PLUS selected in memorysaver.h, SPI at 8 MHz, standard init (set_format(JPEG) → InitCAM() → OV2640_set_JPEG_size(OV2640_1600x1200)). Capture works fine and I get clean 1600×1200 JPEGs. DSP-bank writes clearly work too: OV2640_set_JPEG_size() changes the output size on every run. What I cannot get to work is anything in the sensor bank. I’m trying to set manual exposure — COM8 (0x13) = 0xC0 to drop AEC/AGC, then AEC[15:0] split across 0x45[5:0], 0x10, and 0x04[1:0] per the manual-exposure blog post — and the image does not change at all.

  6. The dmesg log from your hardware?

  7. Troubleshooting attempts you’ve made?
    To check whether the writes are landing at all rather than being compensated, I ran two independent controls on a static scene, with a repeat baseline frame at the end to prove nothing moved (max frame-to-frame difference across the whole run was 2.09/255). Setting HFLIP+VFLIP via REG04 = 0xE8 produces no rotation — comparing against the baseline, the un-rotated difference is 1.80 and the 180°-rotated difference is 51.4, so it is definitively not flipping. Enabling the colour bar via COM7 (0x12) bit 1 produces a normal image, no bars. I’ve tried each of these through individual wrSensorReg8_8() calls, through wrSensorRegs8_8() tables, and through raw Wire transactions to 0x30 (which ACK every time), plus SS_CTRL (0xF8) pass-through and an MC_BIST (0xF9) one-shot MCU reset beforehand. rdSensorReg8_8() returns 0xFF for everything I read, so I have no firmware-side confirmation and have been using the image as the only ground truth. My question: is the sensor register bank writable at runtime on this module through the ArduCAM path, and if so is there a required sequence I’m missing (bank-select settling time, R_BYPASS bracketing, re-applying the JPEG config afterward)? And is my bank select at 0xFF actually taking — is there a known issue where sensor-bank addressing silently falls through to the DSP bank?

  8. What help do you need?
    Simply, how can I control the shutter speed of the camera? Thanks!