基于SILICON C8051的JTAG是如何进行烧录的?

电子说

1.2w人已加入

描述

FLASH的页擦除

FLASH由一系列的页组成,每页512字节。FLASHCON寄存器设置为0x20,FLASHDAT寄存器设置为0xA5,FLASHADR寄存器可以设置为要擦除的页内的任何一个地址。

如果FLASHADR被设置为锁定字节地址中的任何一个(0x7DFE或0x7DFF),则该擦除操作将擦除整个FLASH存储器,位于0x7E00和0x7FFF之间的保留区除外。

与读和写操作不同,在擦除操作完成后FLASHADR并不自动加1。

JTAG

JTAG

FLASH的字节写

JTAG

JTAG

FLASH的字节读

JTAG

JTAG

间接读

读操作启动一次从由DRAdress选择的寄存器中读取数据的过程。该过程可以通过向间接寄存器移入两位来启动。在读操作被启动后,可以通过查询Busy位来确定操作何时完成和何时可以读取数据。

JTAG

间接写

写操作启动一次向由DRAddress选择的寄存器内写数据的过程。可以写长度不大于18位的任意长度的寄存器。如果待写寄存器的长度小于18位,写数据(WriteData)应左对齐(MSB占据位17)。在启动一个写操作之后,应查询“Busy”位来确定该操作何时完成。

JTAG

FLASH寄存器

FLASHSCL

FLASHSCL是一个8位寄存器,用它设置FLASH操作时序所需要的预分频值。当使用内部的2MHz系统时钟时,该寄存器应配置如下:

JTAG

FLASHCON

FLASHCON是一个8位寄存器,它控制FLASH逻辑如何响应对FLASHDAT寄存器的读和写操作。FLASHCON寄存器包含一个读方式设置和一个写方式设置。

JTAG

JTAG

FLASHDAT

FLASHDAT是一个10位的寄存器,它包含8位数据,一个FLFail位和一个FLBusy位,如图所示:

JTAG

写FLASHDAT只需要8位,因为最后一个被锁存的位处于MSB位置。

读FLASHDAT只需要11个DR_SHIFT周期(8个用于FLData,一个用于FLFail,一个用于FLBusy)。

查询FLBusy至少需要2个DR_SHIFT周期,一个用于FLBusy,一个用于Busy。

FLASHADR

FLASHADR是一个16位寄存器,它包含待读或待写的FLASH字节的地址。

注意点

在对FLASH进行烧录之前,需要对器件复位并禁止看门狗。否则,看门狗定时器可能在FLASH操作期间启动系统复位,导致预想不到的后果!

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分