verify module#

JS3 Part 1 verification designs: show which RP2040 pin choices the provider accepts.

Each design wraps the shipping McuMuxingCircuit unchanged, places the three parts and closes every bus line with a code Route from a chosen RP2040 GPIO to the peripheral pin. A route between two pins the provider may join is kept; a route between pins no offered mapping joins is dropped. These routes fix the mapping, which is why they live here and never in main.py.

  • McuMuxingProof: SPI1 on GPIO 8 (RX), 9 (CSn), 10 (SCK) and 11 (TX), I2C0 on GPIO 0 (SDA) and 1 (SCL). Every pair is in Table 279 of the RP2040 datasheet, so every route is kept.

  • McuMuxingProofIllegal: the same, with SDA and SCL swapped (SDA on GPIO 1, SCL on GPIO 0). Table 279 offers no I2C SDA on GPIO 1 and no SCL on GPIO 0, so the two I2C routes are dropped.

The parts sit on the top layer with the flash and the accelerometer to the left of the RP2040, whose GPIO 0 to 11 pins line its left edge.

class McuMuxingProofCircuit(spi_gpio, i2c_gpio)[source]#

Bases: Circuit

McuMuxingCircuit placed and code-routed on the given GPIO numbers.

Parameters:
class McuMuxingProof[source]#

Bases: Design

SPI1 on GPIO 8 to 11, I2C0 on GPIO 0 and 1: every route kept.

board: Board = HDIBoard()#
substrate: Substrate = HDISubstrate()#
class McuMuxingProofIllegal[source]#

Bases: Design

SDA and SCL swapped: the two I2C routes dropped.

board: Board = HDIBoard()#
substrate: Substrate = HDISubstrate()#