We’ve been working on integrating the Bristlemouth Mezzanine Connector (M1) with our Teensy 4.1, and I wanted to clarify the key signals based on our setup. The image below highlights critical SPI, GPIO, and Interrupt connections that are essential for communication and control.
These are used for high-speed communication between the Teensy and Bristlemouth:
SPI1_MISO_M (Pin 2) → Master In, Slave Out
SPI1_MOSI_M (Pin 4) → Master Out, Slave In
SPI1_SCLK_M (Pin 6) → Serial Clock
SPI1_CS_M (Pin 8) → Chip Select
Use Case: These pins allow the Teensy to communicate with SPI peripherals connected via the mezzanine.
Question: Are these pins important should they be connected to our MCU.
Interrupt & GPIO Signals (Highlighted in Yellow)
These control various hardware and communication functions:
USER_INT_M (Pin 10) → General interrupt signal
IOEXP_INT (Pin 12) → I/O Expander interrupt
GPIO_DE_CTS_M (Pin 18) → Clear to Send (CTS) for UART flow control
GPIO_RE_RTS_M (Pin 20) → Request to Send (RTS) for UART flow control
GPIO_MUX_RST (Pin 26) → Reset for multiplexer
Use Case: Interrupts allow the Teensy to respond quickly to events (e.g., sensor data ready), and GPIOs help with flow control in UART communication.
Question: Have we identified these pins correctly, if so where would you recommend with connect them with our MCU.
This should help streamline our integration process and ensure a smooth connection between the Bristlemouth mezzanine and our PCB. Let me know if you have any feedback or if anything needs further clarification!
So if I’m understanding properly, you are trying to connect your Teensy 4.1 on a custom board directly to the mezzanine/mote? This sounds really cool, but will require a good amount of work, which I will try to highlight in answering your questions.
EDIT: Adding a this in here, right now the Board support packages (BSP) that are available in bm_protocol are very specific to the bristlefin devkit expander board and other expander boards. If you want to make your own expander board(aka board connected directly to the mote via the mezzanine) you will want to make your own BSP to support it.
To answer your questions:
The SPI pins you are referring to are connected directly to the STM32U5 MCU on the mote and nothing else. On the STM32U5 these pins can be configured as many different peripheral’s and currently in the in bm_protocol they are configured as USART3. If you have a Bristlefin (devkit) you can see on the bottom the pin outs for TX3_MOSI, and RX3_SCLK. These pins are connected to the same MOSI/SCLK lines that you have highlighted in blue. Because the STM32U5 is currently configuring those pins as USART3, you will need to change the BSP to enable them as SPI1. If your system is dependent on using SPI to talk to the Teensy, then this would be the way to go. If you need more guidance on how to modify the BSP I can provide more detail here, or you can check out the bm_soft_module application that uses the bm_mote_spi_v1_0 BSP to utilize the SPI1 peripheral instead of USART3. You will need SMT32CubeMX to modify the BSP.
The other GPIO’s/INT pins you have highlighted serve a few other functions, but can be customized for your app/needs. As the system exists right now, the mote is connected to the Bristlefin dev board through the mezzanine. The USER_INT pin goes straight to the mote can can be used to generate an interrupt on the mote. It is currently configured as an input in the BSP, but can be modified into a full EXTI interrupt pin. The IOEXP_INT pin is currently used by the mote to process IO expander triggers from the devkit. It is set up as an EXTI interrupt pin, triggering interupts on the mote, but you would need to modify the interrupt handler so that the mote is not doing IO expander processing. Both the GPIO_DE_CTS and GPIO_RE_RTS are generic GPIO’s and can be re-configured/used however you like. Same goes for the GPIO_MUX_RST. This pin is used on the mote to control an I2C mux on the bristlefin board. You can re-configure/re-use this pin.
Hopefully this is helpful and gives you an idea of what you can change for your system needs! In summary, you will essentially want to create your own BSP for your own Teensy expander board that will be connected to the mote/mezzanine.