-
Notifications
You must be signed in to change notification settings - Fork 143
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
[communication] Revive Asynchronous Multi-Node Bus (AMNB) protocol #395
Conversation
Design goals:
The C++ api is still WIP and currently untested. @dergraaf You're a protocol wizzard, would you mind giving some feedback? |
Things that really bug me: There seems to be no way in the UART hardware to indicate whether a symbol is currently being received. All the RX flags are only set after the full symbol has been received. This feature could turn the "Collision Detection" into a "Collision Avoidance", which would be a nice stretch goal. |
30d4b3e
to
e50bee8
Compare
6d896e7
to
e70c8c9
Compare
16ce934
to
8f496b4
Compare
775960a
to
170c9e3
Compare
07bcbda
to
f49901f
Compare
I'll add documentation and AVR examples at a later stage. |
A flexible multi-node bus using p-persistent CSMA/CD over a shared wired medium.
This can work with using UART with differential signalling (typically CAN transceivers for automatic direction control) or without for short distances with TX in Open-Drain mode with an external pull-up, for some STM32 even just using a single pin via the built-in half-duplex mode for UART.
Consider this a low-cost alternative to I2C, with the goal to be more stable, more flexible and faster.