Вы находитесь на странице: 1из 15

ISP(Programacinensistema)delosmicrocontroladoresdeNXP(Philips)89LPC9XX utilizandoFlashMagicylaUART(puertoserie)delmicrocontrolador

PatricioCoronado,SEGAINVEXELECTRONICA(UniversidadAutnomadeMadrid)marzode2013.

Parareprogramarlamemoriaflashdeestafamiliademicrocontroladores,hayvariosmtodos. Uno,eseldehacerqueelmicrocontroladorejecuteunarutinainternadenominada bootloader,envindoleunbreakconditionporelpuertosserie(UART).Dicharutinaescapaz deborrar,yescribirlamemoriaflashdeprogramaconunficherorecibidoporelpuertoserie. ParaunainformacincompletasobreestetemaverlanotadeaplicacindePhillips: AN10221Insystemprogramming(ISP)withthePhilipsP89LPC932microcontroller.

Figura1.Circuitoparacomunicarelmicrocontrolador89LPCXXXyelPC 1

1. HardwareparaconectarelPCyelmicrocontrolador PrimerohayquecomunicarelmicrocontroladoryPCentres.ParaconectarlaUARTdel microcontroladoraunpuertoseriedelPCnecesitamoscircuitera.Porejemplounmax232,til paraadaptarnivelesdelmicrocontroladoralCOM1o2delPC.SiutilizamosunpuertoUSBdel PC,podemosemplearelcircuitointegradoFT232RLosimilar.Enestecasoelpuertoserie (UART)delmicrocontroladorseconectaraunpuertoCOMvirtualdelPC. Enlafigura1vemosunejemploconelcircuitointegradoFT232RL.Laplacadecircuitoimpreso delmicrocontrolador,tendrunconectorparaconectaraestecircuito.Comovemosenla figura2.

Figura2.Conexindelmicrocontrolador Enesteejemploconcreto,vemosqueelmicrocontroladorsealimentaconlos3,3Vpresentes enelpin17delintegradoFT232.Elpin4dedichointegradotambinseconectaalos3,3 voltiosparaquelosnivelesdeTXDyRXDseantambinde3,3V.Aunqueelmicrocontrolador soportenivelesde5Venestospines,apesardeestaralimentadocon3,3V. 2. Softwareparaprogramarlamemoriaflashdelmicrocontrolador ParaprogramarlamemoriaflashdelmicrocontroladordesdeelPC,utilizaremoselprograma deNXP(Philips)FlashMagic.Estdisponibledeformagratuitaen: http://www.flashmagictool.com/download.html Unavezbajadoeinstalado,loejecutamos.Vemoslaventanadelafigura3.

Figura3 EnlapartedeStep1Communiations,conelbotndeSelect..seleccionamosel microcontroladorqueestemosutilizando.EnlalistadesplegableCOMPort:Seleccionamos elpuertovirtualenelquesehainstaladoelCOMquecomunicaconelintegradoFT232RL,oel puertoCOMfsicoconelqueestemosconectandoalmicrocontrolador.ElBaudRatelo ponemosenprincipioa9600ysihayproblemasdeconexinlobajamos.EnInterface seleccionamosNone(ISP). EnlapartedeStep2EraseMarcamoslacasillaEraseblocksusedbyHexFile EnlapartedeStep3 HexFileBuscamosconelbotnBrouseelficherodenuestro programaconextensin.hex.Tambinsepuedeaccederalficherodeprogramaatravsdel menFileyOpen. Elrestosedejacomoseveenlafigura3.

Figura4 Unaprecaucinbsica,esevitarqueelsectordelaflashdelmicrocontroladordonderesidela rutinadebootloaderseborreoreprograme.ParaesoenOptionsAdvancedOptions marcamoslacasillaProtectISPCode.Figura4. 3. Programandoelmicrocontroladorporprimeravez Elmicrocontroladortieneunbitenunazonareservadadememoria,denominadoStatusBit, quedefbricaesta1.Cuandoseconectaporprimeravezelmicrocontroladorydebidoaque elStatusBitesta1,seejecutaunarutinainternadenominadabootloaderquenos permiteborraryescribirlamemoriadecdigo,pudiendoasgrabarelmicrocontroladorconel programadelusuario.Unavezprogramadoelmicrocontrolador,elStatusBitseponea0.De modoquetrasunreset,seejecutarelcdigodeusuario. Sielmicrocontroladoresnuevo,podemosverificarqueseestejecutandoelbootloader,con FlashMagic,pulsandoISPyReadSecurity.FlashMagicleeelmicrocontroladorynos muestraelestadodelosbitsdeseguridad,comoseveenlafigura5.AquesdondeFlash Magicnospuedepresentarunpopupinformandoquenohapodidoconectarconel microcontrolador.Entonceshayquebajarlosbaudioshastaqueconsigaconectar.Enel ejemploconectabamejorbajandoelbaudratea4800bps.

Figura5 Sillegamosaestepunto,podemospulsarStartyFlashMagicprogramarel microcontrolador.Figura6.Enelcasodelmicrocontroladordelejemplo,alterminarde programar,FlashMagic,lanzaunpopupindicandoquealgunaoperacinnoestsoportada, perosilohaprogramado. Laprximavezquesealimenteelmicrocontrolador(odespusdeunreset),elStatusBit estara0yyanoejecutarelbootloader,sinoqueejecutaranuestroprograma.

Figura6 4. Reprogramandoelmicrocontrolador Siqueremosreprogramarelmicrocontrolador,hayquehacerqueesteejecutelarutina internabootloader. Unodelosmtodos(elqueusaremosaqu)paraconseguirqueelmicrocontroladorentrede nuevoenlarutinadelbootloader,eseldeenviarleunBreakConditionatravsdelpuerto seriedelmicrocontrolador.Pero(yestoesmuyimportante)paraqueelmicrocontrolador reconozcaunBreakConditiontienequetenerhabilitadoyconfiguradoelpuertoserie. Tratarestoenelsiguienteapartado. ParaenviaralmicrocontroladorunBreakConditionporelpuertoserie,enFlashMagic, pulsamoselmenISPyStartBootloader.Figura7.

Figura7 PulsandoelbotnStartBottloader,FlashMagicenvaunpulsobajodeunos270msalpinde RXDdelmicrocontrolador.Tardaunossegundos.Despusdeestoelmicrocontroladorestar ejecutandoelbootloader.Podemoscomprobarloleyendolosbitsdeseguridadcomohicimos enelapartadoanterior.Yapodremosreprogramareldispositivo,leyendoelficherode programapulsandoenelmenFileyOpen.FinalmentepulsamosStart. 5. InicializarlaUART(puertoserie)delmicrocontrolador Comodijeenelapartadoanterior,paraquetodoestofuncione,nuestroprogramadeusuario queestcorriendoenelmicrocontroladordebehaberconfiguradoyhabilitadoelpuertoserie. UnejemplodecdigoparainicializarlaUARTeslafuncin: voiduart_init(void){//ConfiguralaUART //SM0ySM1configurarenmodo1

PCON&=~0x40;//PoneelPCON.6=SMOD0a0paraaccederalSM0ySM1delSCON SCON=0x50;//(SM0=0SM1=1UARTmodo1)&(habilitalarecepcinSCON.4=REN=1) SSTAT=0x00;//RegistrodeestatusdelaUART(variasfunciones) AUXR1|=0x40;//habilitalarecepcindeunbreakdetect //configuraelbaudrategeneratorCCLK=7.373MHzy9600baudios BRGCON=0x00;//AccesoaBRGR0/1habilitado BRGR0=0xF0;//paraconseguir9600 BRGR1=0x02; BRGCON=0x03;//AccesoaBRGR0/1inhabilitado //TxD=pushpull,RxD=inputconfiguracindepinesdecomunicacin P1M1&=~0x01; P1M2|=0x01; P1M1|=0x02; P1M2&=~0x02; }//uart_init NoesnecesarioconfigurarelpindetransmisinTXD,sisoloseusalaUARTpararecibiruna breakcondition.PerosihayquetenerlaprecaucindequeRXDseaunaentrada. EnestecasoelCLKdelsistemaeslaRCinternadelmicrocontrolador,de7.737MHz.Paraotra fuentedeCLKdefrecuenciadistinta,hayqueprogramarlosregistrosBRGR0yBRGR1con valoresdistintos(consultarlauserguidedelmicrocontrolador). TambinhayquetenerencuentaquesilaUARTseponeenpowerdownoelsistemaentra enpowerdown,laUARTquedadesabilitada. Paraverendetallecmoseconfiguraelpuertoserierevisarlaguadeusuariodel microcontrolador.Paragenerarcdigoqueconfiguraelpuertoserie(yotrosrecursos),verla web: http://www.codearchitect.org/nxp/v2/index.php?co_tree= 6. Comoreponelarutinadelbootloadersisehaborrado Larutinadelbootloaderestenunsectordelamemoriaflashdelmicrocontrolador.Sieste sectorseborraosereescribe,perderemoslaposibilidaddereprogramarelmicrocontrolador delaformavistahastaahora.Unasolucinaestoesreprogramarleelbootloader(quete puedesbajardelawebdeNXPSemiconductors)conunprogramadorparalelo.

Paraunaexplicacincompletedeesto,velanotadeaplicacinAN10337deNXP SemiconductorsAddingISPfirmwaretoanLPC900softwareProject Elcdigodelbootloaderesten: http://www.nxp.com/documents/other/Adding_ISP_in_source_code.zip Enestefichero,ademsdelcdigoquenecesitamostambinestlanotadeaplicacincitada. Aldescomprimirpodemosverlosficherosdevariasversionesdebootloaders(Figura8).

Figura8 Parasabercualesladenuestromicrocontroladorenconcreto,hayquerecurriralanotade aplicacinantesmencionadaybuscarlatabladelafigura9:

Figura9 Enelcasoparticulardeesteejemploelmicrocontroladoreselresaltadoenamarillo. Unavezquetenemoselcdigo,tenemosqueiniciarunproyectoennuestrocompiladore incluirlo.Enmicasoparacrearycompilarproyectosparamicrocontroladores,utilizolaversin 4deluVisiondeKeil. AbrimoseluVision,enProjectseleccionamosNewuVisionProject,ledamosunnombre alproyectoyloguardamos.Seguidamentesenospideseleccionarelmicrocontrolador(Figura 10).Seleccionamoselnuestro

10

Figura10

Figura11 11

.NospreguntarsiqueremosincluirelcdigoStartupennuestroproyecto.Lecontestamos ques.PulsandoenlapestaaProjectabajoalaizquierda,vemosnuestroproyecto.Figura 11. Ahoratenemosquecopiarelcdigodelbootloaderdenuestromicrocontroladorenlacarpeta delproyectoqueacabamosdecrear.Luego,eneluVisionpicamosconelbotnderechodel ratnsobreSourceGroup1yseleccionamosAddFilestoGroupSourceGroup1y buscamoselficheroconextensina51dondeestelcdigodelbootloader.Paraquesenos muestrentodoslosficherosdeldirectoriodenuestroproyecto,enTipo:hayqueseleccionar Allfiles.Ahorayavemoselfichero,loseleccionamos,pulsamosAddyClosed.Yaestel ficheroincluidoennuestroproyecto. SeguidamenteseleccionamosFileyNewdelmen.Ascreamosunficheronuevo,enel queescribimosunafuncinmainsinnada. voidmain(){} Salvamoselficheroconelnombremain.cyloincluimosenelproyecto,comohicimosantes. Anquedanunpardepequeos(peroimportantesdetalles).

Figura12

12

Enelmenprincipal,enProjectseleccionamosOptionsforTargetTarget1.Enelpop upqueapareceseleccionamoslapestaaOutput.MarcamosCreateHEXFile.Deeste modoalcompilarnoscrearaelfichero.HEXconelnombrequeledemoseneltextbox NameExecutable.EnnuestrocasoRecuperarBootloader.hex.Figura12. Cerramosyvolvemosalaventanaprincipaldenuestroproyecto. AhorapicamosdosvecesseguidosobreSTART900.A51yveremosestefichero.Enlaspestaas deabajopicamosenConfiguracionWizard.YdesplegamoslasopcionesdeBootstatus. MarcamosBootStatusbitenable.Deestamaneraalprogramarelmicrocontrolador,el statusbit(verapartado3)serestableceyseejecutarelbootloader.Figura13.

Figura13 Yapodemoscompilarelproyectopulsandoeliconocomoseveenlafigura14

13

Figura14 ElproyectosecompilaysegeneraelficheroRecuperarBootloader.hex.Ahorahayque programarelmicrocontroladorconesteficheroconunprogramadorparalelo. 7. Programarelmicrocontroladorconunprogramadorparalelo EnnuestrolaboratoriotenemosunprogramadorDataman40Pro. ParaprogramarelmicrocontroladorabrimoselsoftwaredelprogramamdorypulsandoF3se abrelaventanadeLoadFile.BuscamosnuestroficheroRecuperarBootloader.hexylo abrimos. Alpicareliconodeprogramarseabreunpopupdeopciones,dondehayqueasegurarsede queelsectordelbootloadersevaaprogramar.Figura15.

14

Figura15 Tambinvemosqueelstatusbitsevaareponer. SoloquedapulsarYesyesperaruninstanteaquesecargueelprogramaenlaflashdel microcontrolador.Esteestarcomorecincomprado.Paracomprobarlo,verelapartado3. Tambinpodramoshaberincluidoelcdigodelbootloaderenelproyectoconelqueestemos trabajando,compilarloyprogramarlotodojunto.

15

Вам также может понравиться