Which of the HM01B0's 20 pins are used by Giga?

Which of the 20 pins are ACTUALLY connected to the Arduino for the HM01B0 module made by Arducam for the GIGA board? I'm having trouble finding that information. I'd like to know so that I can make a PCB that is smaller.

Depends on what you mean, by used by the GIGA...

There is another thread:

Where it turns out the Arducam HH01b0 camera module only communicates in 4 data bit mode.
That is they did not hook up all of the pins. This is not a limitation imposed by the HM01b0, but simply the breakout board by Arducam... If you get a raw module from somewhere like Sparkfun:
Himax CMOS Imaging Camera - HM01B0 - SEN-15570 - SparkFun Electronics

You can see this if you look at the datasheet for the Arduino/Arducam product.
Arducam-HM01B0 Model (uctronics.com)

It supports 4 bit or 8 bit mode.

If however you wish to support one or more of the other supported cameras, they do hook up the D4-D7 pins.

Camera for Arduino GIGA - Arducam
You can order most of these cameras up from Arducam or Arduino...

The only other one of these that supports 4 bit mode is the HM0360.

The OV7675 they sell shows the IO pins:
image

Note: the last 2 columns are more or less duplicates of each other. Why? not sure why they decided to go from 18 (like the older OV7670 cameras) to 20. With many of these cameras they
still work if only 18 of them are hooked up. Maybe even only 16, as I believe in most cases,
they have Pull-up resistors on PEN and Pull-down resistors on PDN. But some of them appear to need their PEN pulled high.

Note: There are several other cameras out there with these same pin patterns, like
Waveshare has some OV2640 (So did Arducam) and WaveShare/Adafruit have some OV5640 cameras...

The arducam_dvp library supports the ones shown in the Arducamp product page. Not sure if they will ever support additional ones or not.

Hope that helps

1 Like

Unfortunately the only data sheet I could find for Arducam's HM01B0 Giga Module (SKU: B0460) is the one that you already linked which, by mistake, seems to only show the pinout for their HM01B0-MWA submodule (the little orange FPC thing that connects to the green breakout board). Aside from getting a custom PCB made, this was the only commercially available breadboardable breakout board for the HM01B0 that I could find so I'd like to understand which pins I need to connect to my nRF52832 MCU.

The aforementioned data sheet for the submodule shows the following PINOUT:

But I'm pretty certain that the submodule's PINOUT & the breakout board's PINOUT aren't 1-to-1. It is hard for me to tell by eye without desoldering some of the components and I don't have small enough probing tips on my multimeter to do the continuity checks.

You are right that they don't 100% match, however,
If you look at the Pinout of the Display Shield:


The 4 signals I highlighted in RED are not used by this camera module...
I don't know if they connect up to the PEN/PDN or not. My guess is maybe on the Enable pin...

But for sure they connect: The power, gnd, SCL, SDA, VS, HS, PCLK. XCLK, D0-D3
Using the pin names as shown in my earlier post for the OV7675.

1 Like

I need to run the camera in 1-bit mode. It should be possible to do with this Arducam module, right?

No idea... Maybe. Probably something to do with register 0x3059, but...

Hopefully someone who has done something like that and/or someone from Arducam will chime in.

The device supports 1 bit transfer mode. I've not yet use it. But will be in the coming weeks. Reverse engineering the HM01B0 library.

This Giga r1 Board is hard to get complete information for. Same for the HM01B0 device and the Giga R1 J6 Arducam connector. No documentation that I can find regarding the Power On and Power Down pins. No obvious way to create a XCLK to drive the camera. I do not want to use the HAL OS provided. That is a whole other ball of twine to unwind. From what I can tell they either dropped the ball on documentation or decided to hide things. I've been reverse engineering for a few days and have reasonable progress.

Does anyone have knowledge on what PWM is used to drive the XCLK (D57) pin?

I and a friend discovered Power_EN should be driven low for a short time, then high. After that the Camera responded to the I2C Scanner Code. The Camera we are using is the HIMAX HM01B0.

Sorry again not doing much of anything with the GIGA these days.

I assume you have looked through the arducam_dvp library?
Note: I made some changes/fixes, or more specifically filled in their class code such that more of the examples work. It is up in my fork/branch:
KurtE/Arducam_dvp at experiments_debug (github.com)

I created a Pull Request with this back in March:
Fill in more of the Camera class and specific camera code, plus GIGA examples by KurtE · Pull Request #6 · ArduCAM/Arducam_dvp (github.com)

There has not been anything done with this PR or issues since then.
But in that library in the file arducam_dvp.cpp which has:

#elif defined(ARDUINO_GIGA)

#define DCMI_TIM                    (TIM1)
#define DCMI_TIM_PIN                (GPIO_PIN_9)
#define DCMI_TIM_PORT               (GPIOJ)
#define DCMI_TIM_AF                 (GPIO_AF1_TIM1)
#define DCMI_TIM_CHANNEL            (TIM_CHANNEL_3)
#define DCMI_TIM_CLK_ENABLE()       __TIM1_CLK_ENABLE()
#define DCMI_TIM_CLK_DISABLE()      __TIM1_CLK_DISABLE()
#define DCMI_TIM_PCLK_FREQ()        HAL_RCC_GetPCLK2Freq()
#define DCMI_TIM_FREQUENCY          (6000000)
#define DCMI_RESET_PIN              (PA_1)
arduino::MbedI2C CameraWire(I2C_SDA1, I2C_SCL1);

Which gives you some hints. And if I look at my excel document that I created for the IO pins of the GIGA processor board I also see:


57	 	PJ9	-	TIM1_CH3	-	TIM8_CH1N	-	-	-	-	UART8_RX	-	-	-	-	-	LCD_G2	"EVENT
OUT"

Note: I should probably move that file from the UNOR4 github to GIGA github... But currently up at:

Which shows that pin has Timer 1 Channel 3 on it, which matches the library.

1 Like

Thanks, I'll alert my software friend and pass him the links. I'm doing the hardware side of things. Working on modeling functionality that eventually will be done using a FPGA or ASIC. So we need to get down to pin level manipulations and minimize what is required.

Which I had just discovered and then your answer popped up. Thanks!