Hi,
STM32F072 is by far the most cheap processor fulfilling the requirements I had in mind:
- USB for easy power supply and connectivity
- 2x DAC to create different VPP and VDD voltage references (no DAC on STM32F042)
- 2x ADC to read/monitor the final (amplified) VPP/VDD
- enough IO for all data lines
- > 12kB of RAM to hold the max. complete program (3k words @ 16 bit) (STM32F042 has only 6 kB!)
- good price (STM32F072C8T6 $1.1 compared to STM32F042C6T6 $1.4 ==> source: lcsc.com) (the cheaper F042 variants do not have enough IO)
The crystal I added is for calibration of the written IC. Crystalless operation would require to have USB connected to sync to the SOF in order to have a relatively good clock for reference, but still drifting. This would make a standalone use of the programmer (just with a battery pack) impossible.
But it is possible just to not solder the crystal and use it since the STM32F072 has also crystalless mode.
Comment for choice of serial port:
* Windows 10 auto downloads the correct driver, works out of the box (only on older Windows you just need to install the "signed" driver form ST which is included in the release)
* macOS does not need any driver, works out of the box
* Linux does not need any driver, works out of the box (udev rule is only for "speed up" of the availability of the programmer after attaching USB. Some older Linux distributions bundled "Modem Manager" which always spends some seconds with every new attached serial port to find out if it is a telephony modem...)
Any HID implementation need to take into account that:
* HID is specified to be unreliable (you need to handle packet loss/drop yourself which makes the protocol more complex)
* HID with Linux is also not easy. Either you need ROOT permissions for running your software or you need ROOT permissions to install libusb in order to access HID for normal user programs.
Comments ESP8266:
* not sure if ESP8266 has 5V tolerant pins which you really need to have
* any non USB solution (e.g. with ESP8266) would need an extra power supply
Regarding GPL: The GPL was chosen intentionally for a good reason. Only fully open source should be the goal of the open source programmer we try to create here. There are no plans to re-license anything.
JS
BTW:
In development branch of the programmer software (
https://github.com/free-pdk/easy-pdk-programmer-software/tree/development ) you can see that I added several new IC types (probe/read for now).
I already identified 2 more protocol variants. It looks like the older processor generations require *all* 8 pins ( 3: VDD/VPP/GND + 5: CLK,DATIN,DATOUT,CLK2,ACK) for programming.
Out of pure luck the existing design of the programmer can be used for all of them
Yesterday I got my order from LCSC.com. I think I have all PADAUK and PUOLOP ICs now which I can easily source from public sellers:
UPDATE: The PUOLOP ICs are 100% identical compared to their PADAUK pendants. Exact same IC ID is reported when probing/reading. -> There are no Puolop specific ICs.
Work in progress in development branch (most are probe/read only right now):
./easypdkprog list
Supported ICs:
PMC251 (0x058): OTP : 1024 (16 bit), RAM: 96 bytes
PMS132 (0x109): OTP : 2048 (14 bit), RAM: 128 bytes
PMS132B (0x109): OTP : 2048 (14 bit), RAM: 128 bytes
PMS150C (0xA16): OTP : 1024 (13 bit), RAM: 64 bytes
PMS152 (0xA27): OTP : 1280 (14 bit), RAM: 80 bytes
PMS271 (0xA58): OTP : 1024 (16 bit), RAM: 64 bytes
PFS154 (0xAA1): FLASH: 2048 (14 bit), RAM: 128 bytes
PMS133 (0xC19): OTP : 4096 (15 bit), RAM: 256 bytes
PMS134 (0xC19): OTP : 4096 (15 bit), RAM: 256 bytes
PMS131 (0xC83): OTP : 1536 (14 bit), RAM: 88 bytes
PMS171B (0xD36): OTP : 1536 (14 bit), RAM: 96 bytes
PMS154B (0xE06): OTP : 2048 (14 bit), RAM: 128 bytes
PMS154C (0xE06): OTP : 2048 (14 bit), RAM: 128 bytes
PFS173 (0xEA2): FLASH: 3072 (15 bit), RAM: 256 bytes