That error comes up in the boot process if the value 31H is not found at memory address 100H, this value is used to check that valid code has been loaded for CPMLDR. Take a look at the Monitor code excerpt below:-
CP 31H ;EXPECT TO HAVE 31H @80H IE. LD SP,80H
JP Z,STARTCPM ;AS THE FIRST
INSTRUCTION. IF OK JP to 100H in RAM
JP ERR_LD1 ;Boot
Sector Data incorrect
IDEerr1:
LD HL,IDE_RW_ERROR ;Drive
R/W Error
JP ABORT_ERR_MSG
ABORT_ERR_MSG:
CALL PRINT_STRING
JP ZAPPLE ;BACK
TO START OF MONITOR.
ERR_NR: LD HL,DRIVE_NR_ERR ;"DRIVE
NOT READY
JP ABORT_ERR_MSG
ERR_LD: LD HL,BOOT_LD_ERR ;"ERROR READING
BOOT/LOADER SECTORS"
JP ABORT_ERR_MSG
ERR_LD1: LD HL,BOOT_LD1_ERR ;"DATA ERROR IN BOOT SECTOR"
JP ABORT_ERR_MSG
You mention you are using a 32mb CF card (rather small !!) the CP/M 3 image switched the CF card into LBA mode, not sure if a card as small as you mention supports LBA mode, I'd use a 1GB card minimum and try again.
After a failed boot look at your memory at 100H is should be 31 81 02 CD 00 0B 0E 0D CD 8D 02 0E 09 11 25 02
regards
David Fry