-
Notifications
You must be signed in to change notification settings - Fork 1.3k
STM32: Add the OpenMV-H7 R1 board #2832
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
nice! we do want to have some x-platform image capture soon - samd51 and imx rt also have camera capture peripherals :) @kwagyeman take a look! |
Cool stuff. We are about to bring an interface library online for the OpenMV Cam H7. I spent an extensive amount of time fixing PYB peripherals. So, you might only want to change the core logic. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One comment about pin names.
What do you mean by interface library? I'd love to know more details. |
I'm finishing up the process of releasing a high performance RPC library for the OpenMV Cam. This lets you use all the interfaces on the board to move large data structures (images or whatnot) at high data rates. For example, the library lets you call a function on the camera, pass a unlimited length (e.g. 2^32-1) byte struct to the camera, and then get an unlimited length byte struct result. For example, I have SPI transferring RAW QQVGA RGB565 images between one OpenMV Cam and another at 20 FPS over a 20 MHz SPI bus link. The interface is stable and automatically recovers if you unplug any of the wires and then plug it back in. The SPI interface can run at 40 MHz or 80 MHz if the wire lengths are short enough (80 MHz would require two devices to share the same PCB). I also have I2C working at 1 Mb/s, CAN operating at 1 Mb/s, USB VCP operating at 12 Mb/s, UART operating at 7.5 Mb/s, and WiFi operating at 10-12 Mb/s. Each of these interfaces is self-healing so that if you disconnect and then reconnect on the interface while things are running there are no crashes. Higher level software just gets timeouts and then things start running again once the wire is put back in. While writing this library I encountered terrible bugs with every interface and in the PYB module. That said, once the RPC library is out no-one will ever need to worry about how to get any bus working on the OpenMV Cam anymore. Anyway, the library will also be available on the Arduino, RaspberryPi, and in python on the PC. We will also ship examples for all these platforms. |
@tannewt led alternatives added |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you!
@tannewt wait this needed a valid PID |
Please make another PR:
We should probably use draft for PRs that shouldn't be merged. |
Yes, this was my bad. I'll use a draft PR next time I need a PID before merging. |
This PR adds basic pin and clock definitions for the OpenMV-H7 board. The OpenMV-H7 is a development board for embedded machine vision using the STM32H743 processor. More information about the project can be found on on the website, OpenMV.io.
This PR is naturally a little anemic for the scope of the OpenMV project, since it doesn't support the board's primary feature, the OV7725 Camera. OpenMV as supported with Micropython is an expansive project that actually uses a modified fork of micropython as a submodule of their source code. Including full support for the OpenMV in Circuitpython would probably require some strategy discussion with the OpenMV team and an intimidating amount of work.
That said, it's fun to think about what could be done with Circuitpython if it were to take full advantage of powerful chips like the H7 series. OpenMV not only does real time machine vision but even loops in STM32Cube.AI to enable optimized neural network use. Most computer vision on SBCs is at least interfaced with python, and it'd be cool to expose that on microcontrollers to more inexperienced users.
Board was tested with the LEDs, I2C (DRV2605), SPI(BMP), and UART (self-detect) with no issues. @tannewt @ladyada requesting a valid PID when you have a minute.