Acabo de ensamblar una placa que he creado que básicamente actúa como una tabla de ruptura para un MKL26Z32VFM4. Hoy, estoy intentando que se comunique a través de SWD para poder programar el cargador de arranque inicial. Nunca he hecho algo como esto antes y esto es básicamente un experimento para mí mismo para ver qué se necesita para pasar de la hoja de datos al dispositivo de trabajo con uno de estos microcontroladores.
Tengo otro microcontrolador emulando la interfaz SWD y es posible que no lo esté emulando correctamente (aún no he contado los pulsos para asegurarme de que esté usando 50 pulsos para inicializar). En cualquier caso, el KL26 no respondió cuando mantuve RESET_b bajo.
Decidí ver si el procesador estaba empezando, así que puse el osciloscopio en el pin RESET_b cuando se dejó flotando para ver qué pasaría. De acuerdo con la hoja de datos, se extrae internamente y durante la secuencia de arranque se baja hasta que el procesador alcanza un cierto estado. Luego suelta el pasador y ve si está aumentando lo suficientemente rápido (referencia de la familia KL26, 6.3.3). Si no es así, mantiene el procesador en modo de reinicio.
Veo la siguiente forma de onda en el pin RESET_b (pin PTA20):
Estonosevebienenabsoluto.Deberíaverlosimplementealto,nohaciendounabuenacurvaRCentre0y3Vaaproximadamente30kHz(esrealmenteextrañocomosepuedever).
Miteoría:dealgunamaneraestábloqueadaenunbucledearranque,yaqueseacelerarápidamente.
Podríaponerunaresistenciaenelreinicioparaelevarlaa3,3V,perotengocuriosidadporsaberporquésucedeesto.Posiblementehayalgunosfactoresatenuantes:
- EsteesmiprimerchipQFNquehesoldadoamano.Losoldéestalandotodaslasalmohadillas,estableciendoelflujo,colocandoelchipenlapartesuperioryluegocalentandounaalmohadillatérmicaconectadaatravésdelaparteposteriordelaplacaduranteaproximadamente5segundosmientrasgolpeabaelchipconunaspinzas.ParecequesehasoldadobienyelreguladorUSBde3,3Vpareceestarfuncionandobien(almenoselvoltímetroyelosciloscopiolodicen).Esposiblequetengaunvacíoenalgúnlugarounajuntafría.
- HubounincidentedeESDcuandoeldispositivoseapagóynoseconectóanada.Lotoquéconambasmanosparalevantarlatablademitableroysentíunaligeraconmoción.Elreguladoraúnfuncionayelchipnodejasalirhumonisecalientacuandoseenciende,porloquenoestoysegurodequésucedióaquíysiesunproblema.Tengo2copiasdeseguridadadicionalesquepodríausar,peroesorequeriríaensamblarlas.Lojuro,siesteeselproblema,voyacomprarunacorreaESDdeinmediato(sí,estoymontandoestoenmiapartamento,enunescritoriodecomputadora,sentadoenunaalfombra,yhacefríoafuera(esdecir,pocahumedadenelinterior)).
Encualquiercaso,mispreguntasson:
- ¿CómoconectocorrectamenteelchipparaSWD?Seenciende,sereiniciabajoyseconectaelSWDalospinesapropiados,¿verdad?¿Meestoyperdiendodealgo?MiprogramaSWDgenera50ciclosdereloj,emiteelcomandodecambiodeSWD,generaotros50ciclosderelojeintentaleerelregistroIDCODE.
- ¿QuépodríaestarcausandoesteextrañocomportamientoRESET_b?¿Rompíalgoytengoquevolveraempezar?
EDIT
Tengoalgunasformasdeondaadicionalesdemiintentodeprogramaciónquepodríanayudar.Lafrecuenciadelrelojes26Khz(KL26dicequepuedeirhasta25Mhz).
EltiempodesubidaenelSWD_CLK:37nS(latabladehojadedatosKL2617dicequeestodeberíasercomomáximo3ns...hmm)
Mi transacción: 50 pulsos, comando de conmutación de 16 bits, 50 pulsos, lea IDCODE
Elcomandodeconmutación:
El comando de lectura IDCODE y la falta de respuesta del KL26:
Editar 2
Habilitar el bit DSE en el registro de PCR para mi reloj SWD disminuye el tiempo de subida a 7ns, aún por encima de 3ns. También provoca un anillo que alcanza un máximo de ~ 3.7V (la línea se asienta en ~ 3.2V).