No se puede programar el microcontrolador Freescale Kinetis KL26 sobre SWD

2

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).

    
pregunta Los Frijoles

1 respuesta

3
  

Mi programa SWD genera 50 ciclos de reloj, emite el comando de cambio SWD,

No es preciso:

  

¿QuépodríaestarcausandoesteextrañocomportamientoRESET_b?

Elcomportamientodereinicioesnormalparaunchipnoprogramado.Estábloqueando(main()retorna)yestásiendoreiniciadoporeltemporizadordevigilancia.

Aquíhayalgunosconsejosgenerales:

  1. Primero,verifiquelaerrataparalaparteylafamilia.Nohaynadapeorqueperderdíaspersiguiendoelerrordeotrapersona.AlenfrentarunproblemasimilarconunchipFreescalediferente,descubríunaseriedeproblemasquetieneconaltastasasderotaciónduranteelencendido,especialmenteenelpindereinicio.Lasaltastasasdemovimientopuedenestarcausandounacondicióndebloqueotambiénparausted.

  2. Usecualquierutilidaddisponibleparaintentarunborradoenmasaantesdereprogramarmás.

  3. Hayunapequeñapistade"pines" visibles a lo largo del perímetro vertical de las fichas. Verifique la continuidad entre cada "pin" y pad / trace / señal, usando una aguja y un microscopio, si es necesario. Conecte un cable de continuidad a la aguja y, empujando hacia el centro del chip y deslizándose hacia abajo, la aguja se "enganchará" en el pasador.

  4. Al diseñar tableros para QFN para soldar a mano, extienda las almohadillas bien más allá del límite del chip. Dése espacio suficiente para usar una punta de hierro de soldadura de punta fina regular para arreglar los pasadores errantes. Inicialmente, intente duplicar la longitud de la almohadilla.

  5. Con una pequeña pero obvia burbuja de soldadura limpia que llena cada pin, deshacerse de todos flujos y / o residuos. Frote suavemente el chip y la tabla con alcohol isopropílico hasta que esté brillante y brillante.

  6. Puede ser útil hornear la placa de circuito (literalmente) e intentar volver a fluir en el PCB precalentado.

  7. Presionar ligeramente el chip mientras está caliente hará que las burbujas sobresalgan ligeramente de debajo del chip. No aplaste con tanta fuerza que las burbujas se desborden por debajo del chip y sean cortas. Use un soldador de punta fina para golpear cada burbuja por un segundo y tanto la almohadilla como el chip lo absorberán.

Recuerde que no tiene que montar su chip perfectamente plano y ... perfecto ... como lo hace la máquina para que funcione. Está bien si el chip está en lo alto y se ve incómodo; en realidad es mucho más fácil hacer un microscopio desde el borde cuando está elevado.

Todavía no perdería la esperanza, porque la única forma de bloquearlos para siempre (con software) es asegurarlos permanentemente en un estado no funcional. Aunque ese podría ocurrir en un chip en blanco debido a la interrupción de la programación / fallas, es poco probable.

    
respondido por el Jon

Lea otras preguntas en las etiquetas