Tool/software:
Hello TI Support,
I observe spurious clock pulses (glitches) on the SPIB module of my LAUNCHXL-F28377S board, while SPIA works fine with identical settings.
Setup:
-
Device: TMS320F28377S, LSPCLK = 50 MHz
-
Mode: 16-bit master, Mode 0, CS hardware, FIFO disabled
Observations:
-
SPIA: Stable clock, no extra pulses at 1, 2, and 5 MHz
-
SPIB:
-
At 5 MHz → extra pulses on both CLK and MOSI (groups of 2–4)
-
At 2 MHz → extra pulses on CLK only
-
At 1 MHz → no glitches observed
-
-
When SPIB pins are configured as GPIO, glitches disappear. Re-enabling SPI mux brings glitches back.
-
Tested with different logic analyzer channels to rule out measurement artifacts.
Additional test:
-
Mapping SPIB clock to GPIO65 (SPICLKB) → glitches appear
-
Mapping SPIB clock to GPIO58 (SPICLKB) → glitches disappear
-
However, GPIO58 is also required for SPIA MOSI in my application, so this workaround cannot be used directly.
Attachments:
-
Logic analyzer screenshot (SPIA vs SPIB)
-
Board photo with Dupont wiring (for setup clarity)
-
Minimal test code
Could you please confirm if this is expected hardware behavior (due to pin mux routing) or a configuration issue?
Any recommended workaround would be greatly appreciated.
Thank you,
Mr. Orhan Gürbüz



#include "driverlib.h"
#include "device.h"
#include "pin_map.h"
void SPIA_init(void);
void SPIB_init(void);
int main(void)
{
Device_init();
Device_initGPIO();
// === SPIA ===
GPIO_setPinConfig(GPIO_58_SPISIMOA);
GPIO_setPinConfig(GPIO_59_SPISOMIA);
GPIO_setPinConfig(GPIO_60_SPICLKA);
GPIO_setPinConfig(GPIO_61_SPISTEA);
// === SPIB ===
GPIO_setPinConfig(GPIO_63_SPISIMOB);
GPIO_setPinConfig(GPIO_64_SPISOMIB);
GPIO_setPinConfig(GPIO_65_SPICLKB); // GPIO_58_SPICLKB
GPIO_setPinConfig(GPIO_66_SPISTEB);
SPIA_init();
SPIB_init();
while(1)
{
SPI_writeDataNonBlocking(SPIB_BASE, 0xAAAA);
SPI_writeDataNonBlocking(SPIA_BASE, 0x5555);
DEVICE_DELAY_US(20);
}
}
void SPIA_init(void)
{
SPI_disableModule(SPIA_BASE);
SPI_setConfig(SPIA_BASE, DEVICE_LSPCLK_FREQ, SPI_PROT_POL0PHA0, SPI_MODE_MASTER, 5000000, 16);
SPI_disableFIFO(SPIA_BASE);
SPI_disableInterrupt(SPIA_BASE, SPI_INT_RXFF | SPI_INT_TXFF | SPI_INT_RX_OVERRUN | SPI_INT_RXFF_OVERFLOW | SPI_INT_RX_DATA_TX_EMPTY);
SPI_clearInterruptStatus(SPIA_BASE, SPI_INT_RXFF | SPI_INT_TXFF | SPI_INT_RX_OVERRUN | SPI_INT_RXFF_OVERFLOW | SPI_INT_RX_DATA_TX_EMPTY);
SPI_enableModule(SPIA_BASE);
}
void SPIB_init(void)
{
SPI_disableModule(SPIB_BASE);
// GPIO_setPinConfig(GPIO_65_GPIO65);
SPI_setConfig(SPIB_BASE, DEVICE_LSPCLK_FREQ, SPI_PROT_POL0PHA0, SPI_MODE_MASTER, 5000000, 16);
SPI_disableFIFO(SPIB_BASE);
SPI_disableInterrupt(SPIB_BASE, SPI_INT_RXFF | SPI_INT_TXFF | SPI_INT_RX_OVERRUN | SPI_INT_RXFF_OVERFLOW | SPI_INT_RX_DATA_TX_EMPTY);
SPI_clearInterruptStatus(SPIB_BASE, SPI_INT_RXFF | SPI_INT_TXFF | SPI_INT_RX_OVERRUN | SPI_INT_RXFF_OVERFLOW | SPI_INT_RX_DATA_TX_EMPTY);
SPI_enableModule(SPIB_BASE);
// GPIO_setPinConfig(GPIO_65_SPICLKB);
}