General update.
I will be starting a batch of 50 BMS’ next week. Thanks to @TarzanHBK for tipping me about 50 pcs. of L433CC6s on Mouser’s german site, which I immediately ordered within couple minutes of him tipping me about it couple weeks ago. The CC6 is the variant with bigger flash memory at 256KB, where the original CB6 is a 128Kb. I have done a swap test on my personal unit and it works directly as a drop-in replacement.
Bad news for individuals interested in buying a unit though, all 50 units are already reserved. The STM32 are currently out worldwide, I have everything else in-stock component wise, so my future batch schedule is currently tied to that.
Talking about starting your own company to make your own products and then not being able to due to not being able to buy the components needed to make those products. I’m gonna pivot for the next couple of months. I’m gonna focus on making my 2000+km esk8 adventure into the arctic circle this year. And I’ll be making updates about it on this thread:
Other project news.
I got my USB-PD negotiator working with my own code. I started with the STUSB4500 sink negotiator -IC from STM, by default it requested the highest available power profile from the source device, which in this case with the Lenovo 65W USB-PD charger, was the 20V 3.25A profile. I probed the CC-signal lines to get a closer look on the actual line activity to see what the voltages were and how the protocol worked. I then spent quite a lot of time analyzing the communication by probing and then decoding the actual frames bit by bit by hand and then referenced what I was looking at to the USB-PD specification from the USB-foundation to form a better understanding what was being sent and received and what the overall communication flow was.
I then started to familiarize myself with the UCPD-peripheral available on the STM32G-MCU series, which is meant for the USB-PD communication on the CC-lines. There was a lot of trial, error, analysis and correction until I figured out how to configure all the registers and how the interrupts worked and how to get the hardware to do what I wanted it to do.
So as I now knew how the communication flow worked with the STUSB4500, it was then time to start replicating the same flow on the STM32G0-MCU, but after enough time and effort, I was able to successfully replicate the original communication and was able to get the highest power profile selected and applied from the charger. I now have a very good understanding of the very low level hardware implementation down to the physical-layer logic level communication.
I’m gonna start to design a USB-PD charger for portable projects. At the moment I’m looking at a small BMS IC, that would support 3S-6S configurations. I’m also currently looking for bi-directional buck-boost SMPS, so that the power pack could behave either as a sink (i.e. bluetooth speaker) or a source (i.e. powerbank), but I need to look a bit more into how the dual power-role is handled on the PD protocol side and what the exact flow is in the role change process, but I think this would be a pretty good & cool project to make into a product.