Reply to self 
The problem is understood but not solved. The chip has no issue and identifies correctly
Our motherboard has 'just' a 10k pullup to the Padauk supply on the programming pins, but that already causes the programming interface to get wrong bits apparently and fail. I assume its some critical timing in the programmer firmware, a 10k pullup should actually not have any influence on a digital signal like that programming data pin.
We use easypdk 'lite' with 100 ohm series resistors in the programming lines, removing those does not change anything.
Johannes
Hi,
Hard to give any advise on this. In circuit programing was and always will be a challange with PADAUK ICs. Even the PADAUK official programer gives you a hrad challange here.
You mentioned pull up resistors on the programing data pins. This could in fact be a problem. Since you pull up those pins to 5.5V (VDD during programing of PFC154) it will be harder for PADAUK IC to properly to pull them down to signal a 0. The STM32 is a 3.3V IC with 5V tolerant pins. But this does not mean that the logic level of STM32's inputs is translated as well... So in case the PADAUK IC can not pull down the "0" bit below 1.23V then it is undefined what actually will be read.
From your post it looks like the "probe" command already has bit problems.
Since the probe command uses extra low voltage it might be a good idea to change the firmware code for your scenario and use higher VDD / VPP:
firmware: "fpdk.c"
uint32_t FPDK_ProbeIC(FPDKICTYPE* type, uint32_t* vpp_cmd, uint32_t* vdd_cmd)
{
//try to get IC with low voltages
*vpp_cmd = 4500; *vdd_cmd = 2000;
...
You can try to increase those values slightly to compensate for pull ups / downs in your circuit. E.g. try to set vpp_cmd to 5500 and vdd_cmd to 2500 or 3000 and check if probing is working with your circuit. Note: This is just for the probe command.
The actual read/write/erase command and programing voltages are defined within the
host software: "fpdkicdata.c"
{ .name = "PFC154",
.otpid = 0x2AA5,
.id12bit = 0x34A,
.type = FPDK_IC_FLASH,
.addressbits = 13,
...
.vdd_cmd_read = 2.5,
.vpp_cmd_read = 5.5,
.vdd_read_hv = 2.5,
.vpp_read_hv = 5.5,
...
.vdd_cmd_write = 2.5,
.vpp_cmd_write = 5.5,
.vdd_write_hv = 5.5,
.vpp_write_hv = 0.0,
...
For programing phase 1 (command phase) which is used to identify the IC vdd_cmd_write and vpp_cmd_write are used.
In case you get an error that the IC does not match when you try to write, you can experiment with those values.
You might want to increade / decrease them for some milivolts. Just make sure vdd_cmd_write + 2.5V < vpp_cmd_write (this is the "magic" to enable PADAUK programing mode).
JS