Hi, does the edge support camera input yet, or any status updates or info on the API?
Hi Cvis, we are working on it. In fact it is high on our priorities so keep an eye out on the website, newsletter, etc for updates.
Can I allocate camera 2 to be a display?
Jim, all of the connections to the camera connector are using GPIO pads of the Apollo3 microcontroller, but not all of the connector’s pins are connected. Additionally some pins on the connector are directly connected to GND or a power rail. If your display is compatible with the pinout and can be controlled with the given pins then yes, you could do it.
Cvis – sorry that the camera has taken longer than expected. We were developing support for an older camera from Omnivision until we got the opportunity to have the development work taken care of for us by Himax. This means the camera on the Edge board will be much more modern and feature-rich. We have tested working prototypes and are eager to get production quantities out there
Thanks, Although the answer is a bit cryptic I think I follow you. Let me recap, all of the CSI pins are just GPIO pins assigned by the software to be camera control signals. So, if I can access the rest of the needed pins , then I could create a display DSI connector.
Tricky part is getting the processor to create the required signals on the available pins to create the DSI connector.
Jim
Precisely! Only some useful peripherals are available in certain areas, and possibly more concerning to me is that power and gnd exist in locations that may be incompatible with the chosen display. And there are 3 pins on the connector that just arent connected at all, so hopefully your display doesn’t require them
ov7670 is very popular, has been already been interfaced with a wide range of MCUs. You have to generate the XCLK signal, set appropriate registers & read the pixel values.
Reading data based on PCLK signal can have 2 approaches:
-
either check PCLK rising edge to read the data lines (GPIO pins) or
-
trigger DMA to transfer GPIO values from the GPIO port register to SRAM without CPU intervention.
The 2nd approach is much more efficient since CPU can do other things or be in sleep mode.
My understanding is that Apollo’s DMA is hardwired for different peripherals (ADC, PDM, I2C) but not GPIO,
(cannot find anything in the datasheet) so I am not sure if one could use the 2nd approach which is a pity
- DMA controllers for other MCUs allow that - Would that be possible given MCU’s DMA capabilities ?
Any chance for a version connected to the apollo3 using quad/octo spi?
Maybe even directly on the board (https://www.ovt.com/download/sensorpdf/ … VM7695.pdf)
( Don’t have the real datasheet so no idea if an adapter chip/fpga would be needed - but product guide mentions SPI interface for pixel data - but not if it is slave or master)
Would be great to use DMA and not have to have to use the CPU (with interrupt disabled?) to read the data from the camera.
Hi all, here is an informational page about the camera that we will be supporting with the Edge boards in the near future: https://www.himax.com.tw/products/cmos- … rs/hm01b0/
Currently the only holdup is getting inventory of these cameras with the appropriate ribbon cable to connect it to the Edge board.
The basis of operation of the HM01B0 is still interrupt GPIO driven (as opposed to SPI DMA).
@ liquid.soulder:
I have played with both ov7670 & Himax.
-
Himax has a few more useful pins (Trigger, etc ) not broken out on the current camera connection according to the schematic- perhaps a revision of the board would be needed regarding the camera connector pins …
-
Using the CPU to read each pixel (instead of doing it via e.g. DMA) does not leave time to do any serious image processing - it invalidates the case of using Edge for vision tasks (at least for real time case)
-
Please consider examining if Apollo chip can do DMA transfer from GPIO port register to memory (I could not find such functionality in the datasheet but I might be wrong) - perhaps Ambiq people could help clarify that - I find this essential for doing any vision tasks on this chip
Could you please send out the instruction of how to connect the Himax camera module to the CAMERA-OV7670 port as shown in the Apollo3 schematic?
And where can I buy the camera module?
@hstone - I looked into this and there seems to be no way of doing DMA with GPIO in the fashion required for this camera. Real-time image recognition is probably better suited to higher power systems anyway. [The micro_vision gets ~ 0.5 fps with hopes to increase that up to maybe 1-2 fps with optimization.
@afliu We have had a haard time actually getting stock of the camera modules from Himax – but right now the estimate for when we will receive them is October 15th. We’ll probably have them available on the storefront shortly after that. The module that we will sell will be really easy to connect – just plug it in with the right polarity. If you were designing your own board with that camera and an Apollo3 I’d give this advice:
Required connections:
-
I2C (SDA + SCL w/ pullups) for configuration
-
one CTimer pin for clock generation goes into the camera module
-
three interrupt capable lines (all Apollo3 pads are interrupt capable) need to respond to pixel, line, and frame valid signals
-
eight parallel lines are used to read the pixel bytes](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/experimental/micro/examples/micro_vision)
Thanks for the update. WIll it be the color or greyscale version of the Himax sensor ?
It will be the greyscale version
@ liquid.soulder Any estimates when the camera breakout will be available ? thanks!
We have camera modules in stock at our warehouse but we have not listed them for sale yet. I will ask around to see who is in charge of releasing them + what the timeframe is.
Camera is available on our website!
https://www.sparkfun.com/products/15570
We’ve got example code in the BSP repo:
https://github.com/sparkfun/AmbiqSuiteSDK
https://github.com/sparkfun/SparkFun_Ap … Suite_BSPs
And I’ll probably get example code in Arduino shortly
Oh by the way the camera faces away from the LED on the Edge. If you can see the LEDs then the camera should look in the same direction as you. The camera connector has a locking drawer that needs to be pulled out before inserting the camera and then closed to lock it in place.
(so you know how to connect it)
I’ve added some instructions and images of how it should look in the [SparkFun Edge Hookup Guide. Here’s one of the pics if anyone is interested but it was pretty straightforward after inspecting the inside of the connector.
https://cdn.sparkfun.com/r/400-400/asse … nector.jpg](SparkFun Edge Hookup Guide - SparkFun Learn)
Hi everyone - an initial Arduino library for the camera is released. Search ‘SparkFun HM01B0’ in the Arduino library manager. Right now only Edge is supported - generic interface to come soon!