Skip to main content

Python wrapper for STLINK-V3-BRIDGE

Project description

stbridge

Python wrapper for STLINK-V3-BRIDGE. Tested on macOS, Windows, and Linux. Uses libusb for straightforward cross-platform support. It's deployed on PyPI so you can install it as follows.

pip install stbridge

Development on this project will only be for bug fixes and PRs due to being tied to proprietary hardware and ST's license. See dragonlock2/JABI for a true cross-hardware solution.

Supported features

  • SPI controller
  • I2C controller
  • GPIO
  • CAN

Setup

To install from source, you'll need a few dependencies.

  • macOS
    • brew install autoconf automake libtool
  • Linux
    • apt install autotools-dev autoconf libtool
  • Windows
  • Windows (MSYS2/MinGW) (experimental)
    • Install MSYS2 to install the following packages.
    • pacman -S mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-autotools
      • If you're not on x86_64, your exact package names may be different.

Then run the following.

git clone --recursive https://github.com/dragonlock2/stbridge.git
pip install ./stbridge

Use

Check out stbridge.cpp and stbridge.h as well as examples for function syntax. There's a 5 second timeout for commands in case they're unsuccessful (e.g. using CAN without other nodes).

python3 examples/all.py

In case no devices are available, you may need to do the following.

  • On Linux, add 50-stlinkv3.rules to /etc/udev/rules.d.
  • On Windows, manually install the WinUSB driver on any STLINK-V3 devices in Device Manager.

Known Issues

  • Not reading CAN messages fast enough can crash USB comms on the next CAN operation, even init. Should be detected as an overrun but isn't. Also looks like more messages than can be stored in the STLINK's FIFO's can be read back. I have a feeling what's happening is messages are stored on a separate FIFO on the STLINK and once it overruns, it crashes. This appears to be an ST issue.
  • Received remote CAN frames are misidentified as data frames. Garbage data is returned in remote frames due to ST's driver. This appears to be an ST issue.
  • Setting CAN filters for specific extended IDs throws a parameter error. Letting everything through still works.
  • There's some (fixed size) libusb memory leaks on Windows.

License

This software is under ST's Ultimate Liberty License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stbridge-0.1.0.tar.gz (426.0 kB view hashes)

Uploaded Source

Built Distributions

stbridge-0.1.0-pp310-pypy310_pp73-win_amd64.whl (171.2 kB view hashes)

Uploaded PyPy Windows x86-64

stbridge-0.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (379.5 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

stbridge-0.1.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (376.4 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

stbridge-0.1.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl (193.6 kB view hashes)

Uploaded PyPy macOS 11.0+ ARM64

stbridge-0.1.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl (203.4 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

stbridge-0.1.0-pp39-pypy39_pp73-win_amd64.whl (171.4 kB view hashes)

Uploaded PyPy Windows x86-64

stbridge-0.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (379.5 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

stbridge-0.1.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (376.3 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

stbridge-0.1.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl (193.6 kB view hashes)

Uploaded PyPy macOS 11.0+ ARM64

stbridge-0.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (203.3 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

stbridge-0.1.0-cp312-cp312-win_amd64.whl (172.0 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

stbridge-0.1.0-cp312-cp312-win32.whl (145.2 kB view hashes)

Uploaded CPython 3.12 Windows x86

stbridge-0.1.0-cp312-cp312-musllinux_1_1_x86_64.whl (900.0 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

stbridge-0.1.0-cp312-cp312-musllinux_1_1_i686.whl (949.1 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ i686

stbridge-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (391.0 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

stbridge-0.1.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (386.4 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686

stbridge-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (195.0 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

stbridge-0.1.0-cp312-cp312-macosx_10_9_x86_64.whl (203.5 kB view hashes)

Uploaded CPython 3.12 macOS 10.9+ x86-64

stbridge-0.1.0-cp311-cp311-win_amd64.whl (172.2 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

stbridge-0.1.0-cp311-cp311-win32.whl (146.1 kB view hashes)

Uploaded CPython 3.11 Windows x86

stbridge-0.1.0-cp311-cp311-musllinux_1_1_x86_64.whl (903.7 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

stbridge-0.1.0-cp311-cp311-musllinux_1_1_i686.whl (951.6 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

stbridge-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (391.5 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

stbridge-0.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (386.9 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

stbridge-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (195.7 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

stbridge-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl (203.6 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

stbridge-0.1.0-cp310-cp310-win_amd64.whl (171.4 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

stbridge-0.1.0-cp310-cp310-win32.whl (145.4 kB view hashes)

Uploaded CPython 3.10 Windows x86

stbridge-0.1.0-cp310-cp310-musllinux_1_1_x86_64.whl (902.9 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

stbridge-0.1.0-cp310-cp310-musllinux_1_1_i686.whl (950.6 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

stbridge-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (389.9 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

stbridge-0.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (386.3 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

stbridge-0.1.0-cp310-cp310-macosx_11_0_arm64.whl (194.7 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

stbridge-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl (202.3 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

stbridge-0.1.0-cp39-cp39-win_amd64.whl (169.2 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

stbridge-0.1.0-cp39-cp39-win32.whl (145.6 kB view hashes)

Uploaded CPython 3.9 Windows x86

stbridge-0.1.0-cp39-cp39-musllinux_1_1_x86_64.whl (903.4 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

stbridge-0.1.0-cp39-cp39-musllinux_1_1_i686.whl (951.5 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

stbridge-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (390.2 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

stbridge-0.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (386.7 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

stbridge-0.1.0-cp39-cp39-macosx_11_0_arm64.whl (194.8 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

stbridge-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl (202.4 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page