CAN === .. admonition:: Galvanic Isolation Both CAN interfaces are **galvanically isolated** to prevent ground-loops and increases overall system resilience. CAN Pin-out ^^^^^^^^^^^ Connector-type: **SM04B-GHS-TB** (4-pin, 1.25 mm) (`Datasheet `_) .. list-table:: :widths: 10 25 65 :header-rows: 1 * - Pin - Name - Description * - 1 - CAN VCC - Not connected to Pika Spark * - 2 - CAN HIGH - CAN HIGH differential signal * - 3 - CAN LOW - CAN LOW differential signal * - 4 - CAN GND - GND connection to other CAN nodes¹ ¹ Although CAN is a differential bus in nature the common mode voltage on the differential bus signals can theoretically exceed the maximum common mode voltage acceptable to the signal and power isolated CAN transceiver. In order minimize large differences in ground potentials across all nodes CAN ground has an high impedance connection to the isolated ground of the isolated CAN transceiver. .. image:: can-bin.png :align: center :scale: 40% How-to transmit and receive CAN frames ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ There are `preconfigured `_ Docker containers (``can-utils-sh``, ``candump``) demonstrating how to access the CAN interface using ``can-utils``. * Send CAN frames via `cansend `_: .. code:: bash git clone https://github.com/pika-spark/pika-spark-containers cd pika-spark-containers/can-utils-sh ./docker-build.sh sudo ./docker-run.sh can0 | can1 [bitrate] .. code:: bash cansend can0 123#DEADBEEF cansend can0 1F334455#1122334455667788 * Receive CAN frames via `candump `_: .. code:: bash git clone https://github.com/pika-spark/pika-spark-containers cd pika-spark-containers/candump ./docker-build.sh sudo ./docker-run.sh can0 | can1 [bitrate]