Estoy tratando de hablar con un 68HC (9) 12D60 (Motorola / Freescale / NXP) a través del protocolo BDM. Este chip es un TQFP de 112 pines. En la PCB, hay un encabezado de 6 pines (que no es el encabezado de pines BDM 2 * 3 estándar). Los 6 pines están en una fila, con un paso de 2,54 mm.
Con un ohmiómetro, he logrado identificar cada uno de los 6 pines. Uno no se usa, uno lee 0 ohm con Vss y Vssx (así es la tierra), uno lee 0 ohm con Vdd y Vddx (entonces es el terminal positivo), uno lee 0 ohm con el pin RST, uno lee 0 ohm con el terminal El pin VFP y uno lee 0 ohmios con el pin BKGD.
Tengo acceso fácil a los pines MCU necesarios.
Ahora quiero hablar con el MCU utilizando un Arduino (para leer la memoria). Enchufando BKGD, RST y VFP directamente a los pines digitales 2, 3 y 4 y conectando Vss a GND pin y Vdd a + 5V.
He intentado el comando más simple que es un SYNC. Un SYNC permite que el objetivo muestre su reloj sin que el host lo sepa de antemano. Conduzco la línea BKGD baja durante mucho tiempo, luego suelto la línea. La MCU debe esperar algunos ciclos, afirmar la línea hacia abajo durante 128 BCLK y alta otra vez.
También probé el comando de hardware READ_WORD.
No importa lo que intente, después de liberar la línea BKGD, solo leo las que están en el pin BKGD. Parece que la MCU no responde en su pin BKGD.
Cosas que he probado:
- Ponga la MCU en el modo especial de chip único (he verificado los pines MODA y MODB lee 0, y puse el pin BKGD en 0 antes de encender la MCU). He intentado esto en caso de que mi MCU tuviera activada la función de bloqueo de BDM.
- He probado muchas frecuencias. El oscilador principal en el PCB. (EXTAL) parece ser 4Mhz. No me queda muy claro cuando leo el hoja de datos cuál es el valor para BCLK (reloj BDM). He probado valores de 32Hz a 8Mhz sin éxito, porque la hoja de datos dice BCLK los valores van desde ECLK / 128 hasta ECLK; El propio ECLK oscila entre 0.004Mhz. a 8Mhz).
- Mi Arduino es 16Mhz. Tal vez el "gradiente de frecuencia" entre el host y el objetivo es demasiado pequeño? Así que también traté de hablar con la MCU utilizando la CPU Raspberry Pi 1B (700Mhz), que debería ser lo suficientemente rápida como para muestrear en el momento correcto. Con la Raspberry Pi, fue solo con 3V, pero 3V también está dentro del rango operativo del chip.
- Al principio no conecté el pin VFP a nada. Pero luego noté que VFP debería estar dentro de VDD-0.35V a VDD + 0.5V. Sin conectar el pin VFP, leyó VDD-0.5V, que estaba fuera del rango. Así que también intenté conectar VFP a un pin de salida alto de 5V en el Arduino.
No importa lo que haga, después de conducir la línea BKGD y cambiarla a una entrada, la línea siempre lee 1. :( ¿Qué estoy haciendo mal?