v3.5.0

v3.5.0 introduces the ulab NumPy-like module, the OpenRV library, image segmentation support, iterable image objects, and freezes all the scripts/libraries modules into the firmware; TensorFlow also accepts more model types. The default CAN baudrate changed — read the breaking changes below.

Highlights

  • ulab — a NumPy-like array module is now available.

  • OpenRV library added.

  • Image segmentation — TensorFlow image-segmentation support.

  • Iterable images — image objects can now be iterated.

  • Frozen libraries — all scripts/libraries modules are frozen into the firmware.

  • Breaking: the default CAN baudrate changed from 250 Kbps to 125 Kbps — see the breaking changes.

New features

  • ulab — added the ulab NumPy-like module (ulab submodule).

  • OpenRV — added the OpenRV library.

  • Image segmentation — added support for TensorFlow image segmentation.

  • Iterable images — image objects are now iterable.

  • TensorFlow — the TensorFlow library now accepts more model types.

  • Added MobileNet script examples (with model locations), a native code-emitters example, a modbus_apriltag.py example, and a light-shield example.

Other changes and improvements

  • Froze all the scripts/libraries modules into the firmware; updated the modbus library / RTU-slave example; increased the face-detection example contrast; updated the cpufreq example and the H7 cpufreq_scaling frequencies.

Breaking API changes

User-visible API breaks between v3.5.0.beta.3 and v3.5.0. Scope: Python C-modules in modules/ and Python libraries in scripts/libraries/.

The breaking change is a behavior change (same API, different result) — re-check affected scripts. Each commit hash links to its diff on GitHub.

Default CAN baudrate changed to 125 Kbps (behavior)

The default pyb.CAN baudrate changed from 250 Kbps to 125 Kbps. Scripts that constructed a CAN bus without an explicit baudrate (e.g. CAN(2, CAN.NORMAL)) now run at 125 Kbps and will not communicate with peers still at 250 Kbps. Pass an explicit baudrate (or prescaler / sjw / bs1 / bs2) to restore 250 Kbps.

Commits: d3a9a06ef

Migration checklist

Set an explicit CAN baudrate on any pyb.CAN bus that relied on the old 250 Kbps default (the CAN baudrate change). All other scripts run unchanged.