Skip to content

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

Merged
merged 1 commit into from
Apr 30, 2020
Merged

STM32: Add the OpenMV-H7 R1 board #2832

merged 1 commit into from
Apr 30, 2020

Conversation

hierophect
Copy link
Collaborator

@hierophect hierophect commented Apr 29, 2020

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.

@hierophect hierophect added the stm label Apr 29, 2020
@ladyada
Copy link
Member

ladyada commented Apr 29, 2020

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!

@kwagyeman
Copy link

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.

Copy link
Member

@tannewt tannewt left a 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.

@tannewt
Copy link
Member

tannewt commented Apr 29, 2020

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.

What do you mean by interface library? I'd love to know more details.

@kwagyeman
Copy link

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.

@hierophect hierophect requested a review from tannewt April 30, 2020 16:39
@hierophect
Copy link
Collaborator Author

@tannewt led alternatives added

Copy link
Member

@tannewt tannewt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

@tannewt tannewt merged commit 7c4f307 into adafruit:master Apr 30, 2020
@hierophect
Copy link
Collaborator Author

@tannewt wait this needed a valid PID

@tannewt
Copy link
Member

tannewt commented Apr 30, 2020

Please make another PR:

OpenMV-H7 R1          VID 0x239A    PID 0x00A3  # bootloader
                                    PID 0x80A3  # arduino
                                    PID 0x80A4  # circuitpython

We should probably use draft for PRs that shouldn't be merged.

@hierophect
Copy link
Collaborator Author

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.

@hierophect hierophect deleted the stm32-openmv branch May 12, 2020 14:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants