2025-06-19 8:15 AM - edited 2025-06-19 8:25 AM
The AutoDevKit ecosystem can now count on a new compact size BMS node and node with transceiver board to match the production form factor when mounted on a real battery pack.
Check-out AEK-POW-BMSCC https://lnkd.in/dA8vtr76
and AEK-POW-BMSCCTX https://lnkd.in/dxKS_WvV
🤩
2025-11-19 9:28 PM
How do i establish SPI communication of this with raspberry pi to get the battery pack parameters. Can i get a python code to run in raspberry pi to check whethe the board works or not. Also can you let me know the hardware connections for the procedure
Thank You
2025-11-20 1:46 AM
Hi there,
1) To establish SPI communication with a generic MCU board you need to port AutoDevKit APIs in your new environment on your own. This requires an experienced SW engineer, able to reuse all the software resource ST is providing free of charge.
If your goal is the rapid prototyping of professional systems, then sticking with ST solution is the best choice.
2) The connectors may be found on the documentation. You can find from this link.
I'll attach here for completion:
Best regards,
AEK_Team,
Simone
2025-11-20 4:40 AM
Hello Romeo,
I have done the hardware part for the above:
1× AEK-POW-BMSCCTX (one node powered with 8 cells for bring-up).
Raspberry Pi with /dev/spidev0.0 enabled.
Cell stack: C0..C8 populated (8 cells ≈ 26 V).
Two GND_EXT pins tied to pack negative as per BMS hold manual.
P1 (cells)
C0–C8 → 8 cell taps (≈ 26 V total)
GND_EXT(×2) → pack negative
P4 (logic, to Raspberry Pi)
SDO (P4-2) → MISO (Pi GPIO9, pin 21)
GND_BMS → GND (Pi)
SCK (P4-4) → SCLK (Pi GPIO11, pin 23)
SDI (P4-6) → MOSI (Pi GPIO10, pin 19)
NCS (P4-8) → BCM5 (Pi pin 29) — we drive chip-select manually via GPIO (not CE0/CE1)
VDD → tried 5 V initially; for bring-up we now use/recommend 3.3 V
VIO (again) → 3.3 V
GND (shield ground) → GND (Pi)
Discrete enable pins (loose wires from P4 area)
DIS → GND (LOW)
TXEN → 3.3 V (HIGH)
NSLAVE → (important) should be GND (LOW) so L9963T behaves as an SPI slave ( It is already grounded in the datasheet)
LED states observed
With VDD/VIO applied and TXEN high: D2, D9 green; D8 blue.
When DIS was grounded, D6 (red) turned off. (Previously red when DIS floated.)
What i tried
Verified Pi SPI by shorting MOSI↔MISO: loopback OK.
Could not get a response from BMS with stock CE0/CE1; switched to manual chip-select on GPIO5 using libgpiod.
We send one 10-byte transfer per command (5-byte frame + 5 dummy) so /CS stays low for all 40 clocks.
SPI settings tried: mode 1 (CPOL=0, CPHA=1) primarily; also tested mode 0. Speeds 100 kHz → 10 kHz → 5 kHz → 2 kHz.
Frames built per L9963E: top-33 bits + CRC-6 (poly 0x2D, seed 0x38).
Examples we send (TX prints confirmed non-zero on wire):
ISO_INIT: C0 04 00 20 3D
SET_ID (broadcast chip_ID=1): C0 04 10 20 15
VERIFY (read DEV_GEN_CFG @ DevID=1): 82 04 00 00 3A
We also wired BNE → GPIO25 and printed BNE level before/after each frame.
Results
TX is non-zero and /CS is asserted correctly (manual GPIO).
RX remains 00 00 00 00 00 and BNE never rises — i.e., L9963T/E rejects our frames (no reply queued).
Since BNE never rises the D7 led is not blinking...
Need a expert to help me solve this issue and give me the correct steps or the correct way to do it.may be valid 40 bit signal for SPI or other help for completing this.
Thank You.
2025-11-20 5:22 AM
I'm sorry but we cannot give any support on Raspberry/python implementation.
The best and faster way to jump start on BMS world using this board is via AutoDevKit ecosystem.
There you can find many examples ready to be flashed on your AEK MCU board.
Best regards
Simone,
AEK_Team