2026-05-31 6:26 PM - last edited on 2026-06-01 7:59 AM by mƎALLEm
Hi,
Good day,
May we seek your expertise for the following inquiry:
1. What is the SPI frame format for L9369 RT?
2. Is it configurable via SPI?
3. What is the default SPI frame configuration for L9369 RT?
Thank you.
Solved! Go to Solution.
2026-06-03 2:36 AM
I am extremely sorry that the OLS cannot help you. Since the documents are subject to an NDA, the community cannot help you either, because only information that is publicly available worldwide is shared here.
You will have no choice but to request an NDA from your local authorised distributor for STMicroelectronics in order to obtain the information you need.
Thank you for understanding.
Good luck!
/Petrer
2026-05-31 11:35 PM
You have already opened a ticket with the number 00262344 (internal number) in parallel with the personal Online Support OLS for this request, so the response from the colleagues should be awaited. If you have an urgent need, you should contact your local distributor.
Regards
/Peter
2026-06-01 6:04 PM
Hi Peter,
Good day,
Apologies, but the ST colleagues for this ticket number 00262344 redirected me to this forum for our inquiries.
Maybe you can help us with these 3 questions?.
1. What is the SPI frame format for L9369 RT?
2. Is it configurable via SPI?
3. What is the default SPI frame configuration for L9369 RT?
Thank you for understanding.
2026-06-03 2:36 AM
I am extremely sorry that the OLS cannot help you. Since the documents are subject to an NDA, the community cannot help you either, because only information that is publicly available worldwide is shared here.
You will have no choice but to request an NDA from your local authorised distributor for STMicroelectronics in order to obtain the information you need.
Thank you for understanding.
Good luck!
/Petrer
2026-06-03 2:43 AM - edited 2026-06-03 2:47 AM
@Peter BENSCH wrote:I am extremely sorry that the OLS cannot help you. Since the documents are subject to an NDA, the community cannot help you either, because only information that is publicly available worldwide is shared here.
So why did the OLS team suggest that @FTCGIE should go to the forum?
@FTCGIE - did OLS not tell you that this information is only available under NDA ?
2026-06-03 3:00 AM
...or ask Gemini: ( i use H743 cpu)
Bit(s) [1, 7] Field Description
| 31 | W / R | Write or Read operation (1 = Write, 0 = Read) |
| 30 : 26 | Address | 5-bit Register Address (Supports up to 32 logical registers) |
| 25 : 8 | Data | 18-bit Payload Data (For Write operations; set to 0x00000 during Reads) |
| 7 : 0 | CRC / Parity | 8-bit Cyclic Redundancy Check (CRC-8 polynomial, typically 0x1D or 0x07) |
Bit(s) [1, 7] Field Description
| 31 | SPI_G | Global Status Bit (0 = OK, 1 = Fault/Error detected) |
| 30 : 26 | Echo Address | Echoes the 5-bit address of the register being read/written |
| 25 : 8 | Data / Status | 18-bit Diagnostic / Register contents (e.g., ADC current, VDS faults) |
| 7 : 0 | CRC | 8-bit CRC calculated by L9369 for safety compliance verification |
#include <stdint.h> // Bit-mask definitions #define L9369_SPI_RW_MASK ((uint32_t)0x1U << 31)#define L9369_SPI_ADDR_MASK ((uint32_t)0x1FU << 26)#define L9369_SPI_DATA_MASK ((uint32_t)0x3FFFFU << 8)#define L9369_SPI_CRC_MASK ((uint32_t)0xFFU << 0) // Status Flags (MISO) #define L9369_MISO_GLOBAL_ERROR ((uint32_t)0x1U << 31) /** * @brief Pack a 32-bit MOSI frame for the L9369 */ uint32_t L9369_Pack_Frame(uint8_t is_write, uint8_t addr, uint32_t data, uint8_t crc) { uint32_t frame = 0; frame |= ((uint32_t)(is_write & 0x01) << 31); frame |= ((uint32_t)(addr & 0x1F) << 26); frame |= ((uint32_t)(data & 0x3FFFF) << 8); frame |= ((uint32_t)(crc & 0xFF)); return frame; } /** * @brief Parse a received 32-bit MISO frame from the L9369 */ typedef struct { uint8_t global_error; uint8_t echo_address; uint32_t payload_data; uint8_t received_crc; } L9369_MISO_t; void L9369_Parse_Frame(uint32_t rx_frame, L9369_MISO_t *parsed_data) { parsed_data->global_error = (rx_frame & L9369_MISO_GLOBAL_ERROR) ? 1 : 0; parsed_data->echo_address = (uint8_t)((rx_frame & L9369_SPI_ADDR_MASK) >> 26); parsed_data->payload_data = (uint32_t)((rx_frame & L9369_SPI_DATA_MASK) >> 8); parsed_data->received_crc = (uint8_t)(rx_frame & L9369_SPI_CRC_MASK); }
extern SPI_HandleTypeDef hspi1; // Must be initialized to 32-bit DataSize uint32_t L9369_Read_Register(uint8_t reg_address) { uint32_t tx_data = L9369_Pack_Frame(0, reg_address, 0x00000, 0x00); // 0 = Read // Note: In safety systems, compute your exact CRC-8 and replace the trailing 0x00 tx_data = (tx_data & ~L9369_SPI_CRC_MASK) | Calculate_CRC8(tx_data); uint32_t rx_data = 0; // Select L9369 Chip Select (CS Low) HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_RESET); // Perform 32-bit block full-duplex transfer HAL_SPI_TransmitReceive(&hspi1, (uint8_t*)&tx_data, (uint8_t*)&rx_data, 1, HAL_MAX_DELAY); // De-select L9369 (CS High) HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_SET); L9369_MISO_t response; L9369_Parse_Frame(rx_data, &response); return response.payload_data; }
We’re moving the ST Community to a new platform to give you a better and more reliable community experience.