Hi everyone,
I redesigned the original STM32 firmware of the picocalc (aka “BIOS” or keyboard driver) to better suit my needs.
A brief overview of the differences:
- persistent saving of settings like backlight,
- internal use of the RTC and wake-up from it,
- drastic reduction in static power consumption,
- …
Here is the source https://git.jcsmith.fr/jackcartersmith/picocalc_BIOS and the binary firmware for flashing.
Please note that this is a pre-release version, so I haven’t tested it much yet. There may be hidden bugs…
But if you want to try it and give me a feedback, it’s always appreciated!
In this case, I recommend reading the rest of this post.
=== Technical details ===
The settings of the backlight are saved inside the STM32 chip 1.5s after the last value change. Saved settings are keep between restart and further firmware upgrade. The only way to clear it is by erasing the full flash.
The brightness curve has also been revised.
A new TYPE register (addr = 0x00) have been added to identify custom firmware, as the official firmware will always answer 0x00 when accessed.
This custom firmware use the TYPE-ID 0xCA.
You can use this register to test what kind of firmware is running on your stm32 and set the corresponding registers table (I’ll push a driver exemple in time with the v1 release, and possibly a pull-request on the legacy driver of the picocalc repo to be used in picomite or others projects).
I made some change in the backlight value range, this only change from raw 8-bit value to 10 steps [0-9]. This only impact from you if you drive the backlight from the pico.
RTC interface have been implemented since v0.5, actually need more deep sturdiness testing.
The power manager has also been further developed: the AXP2101 PMU is no longer stopped but the STM32 is put to a “sleep” state when the picocalc is stopped. It’s mandatory for the RTC to work. This mode has overall consumption <0.1 mA. And in the event of a fault or low battery level, it switches everything off.
Normally, all official registers are operational. With the exception of the management of external interrupts, which is currently being written… WIP
It’s forked from the 1.2 official firmware.
I’ve used the STM32 HAL and CMSIS lib to reduce the firmware size and allow more features in the futures.
=== Important notes ===
That’s for me like an “alternative”, not a replacement!
After careful consideration, I do not plan to ensure compatibility with the original firmware.
But still free to pick some parts or all the stuff for your projects.
I am still planning to provide a replacement i2ckbd driver that will work with this firmware and the original firmware.
Hack’n Play!