澄滢工作室 https://bbs.21ic.com/?469679 [收藏] [复制] [RSS]

日志

AVR高压编程中的ControlStack的真相

热度 1已有 2179 次阅读2008-1-2 22:36 |个人分类:AVR|系统分类:单片机| AVR, 高压编程

结论:Atmel并不是那么无聊



起因:Atmel的STK500v2的协议里有着一段对于高压编程的ControlStack的说明,半年多前,我在AVR 4in1上做高压并行编程时以为那些数据只是Atmel的开发人员无聊而发送的无意义的数据(后来我发现,是我错了)。直到2008年元旦,我开始做高压穿行编程(参考了部分AVR-Doper的代码),无意间,我发现了这些“无聊的”数据的重大的意义。研究了高压穿行编程的时序后,发现SII引脚上串出的数据其实就是高压并行编程时的控制口的信号,第一次以字节的方式看高压并行编程的控制信号,参考了AVRStudio中的AVRDragon帮助文档,了解了这个20芯的接口,对不同芯片操作时,接口的信号定义会有所不同,这让我突然想到了ControlStack,以前只是以单个信号的角度来看这些控制信号是发现不了ControlStack的意义的。



资料:

1.Control Stack数据列表(可能会有些出入,参考AVRStudio里的PartDescriptionFile)

2.AVRDragon上的Mega2560控制HVPP接口的引脚定义(感谢Atmel赠送的AVRDragon,虽然已死):

BS2 PC0
RDY PC1 
nOE PC2
nWR PC3

BS1 PC4
XA0 PC5
XA1 PC6
PAGEL PC7



分析:就拿我最常用的Mega48芯片来说:

0x0E,0x1E,0x0F,0x1F,0x2E,0x3E,0x2F,0x3F,0x4E,0x5E,0x4F,0x5F,0x6E,0x7E,0x6F,0x7F,0x66,0x76,0x67,0x77,0x6A,0x7A,0x6B,0x7B,0xBE,0xFD,0x00,0x01

0x0E对应的控制信号为:nWR,nOE,RDY,也就时说XA0,XA1和BS0,BS1都为0,对应高压编程的LoadAddressLowByte命令

0x1E为0x0E基础上,BS1为1,也就是LoadAddressHighByte命令

0x0F为LoadAddressExtLowByte

0x1F为LoadAddressExtHighByte

更具这个规律,整个数据分析如下:

0x0E,0x1E,0x0F,0x1F,0x2E,0x3E,0x2F,0x3F,0x4E,0x5E,0x4F,0x5F,0x6E,0x7E,0x6F,0x7F,0x66,0x76,0x67,0x77,0x6A,0x7A,0x6B,0x7B,0xBE,0xFD,0x00,0x01

LoadAddr(0)                   ,LoadData(4)                     ,LoadCommand(8)         ,LoadNone(12)                 ,nWR(16)                            ,nOE(20)                             ,PAGEL(24),          ,Pin Of RDY(27)
Low  ,High ,ExtL ,ExtH,........



AVRminiProg已经使用了ControlStack支持HVPP和HVSP编程

路过

鸡蛋
1

鲜花

握手

雷人

刚表态过的朋友 (1 人)

评论 (0 个评论)