下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 系统在线编程-史宁翻译

系统在线编程-史宁翻译.doc

系统在线编程-史宁翻译

配角是来衬托主角
2018-01-31 0人阅读 举报 0 0 暂无简介

简介:本文档为《系统在线编程-史宁翻译doc》,可适用于社会民生领域

系统在线编程史宁翻译系统在线编程,史宁翻译刘汧校对AVR:系统在线编程――翻译自ATMELApplicationAVR史宁翻译刘汧校对功能,为AVRMCU提供完整的系统在线编程解决方案支持全部AVRMCU可再编程FLASH和EEPROM的数据提供廉价编程器完整的原理图简易的线SPI编程接口导言系统在线编程允许在最终系统内的任何位置的AVRMCU编程。使用简易的线SPI编程接口编程器与AVRMCU串行通讯可对芯片上所有的非易失性存储器重新编程。系统在线编程不必移动芯片。这将不仅在实验室的开发过程中而且在软件升级或参数更新中节省时间和金钱。此应用说明描述了如何设计一个系统以支持在线编程。同时也描述了如何做一个廉价编程器它允许任何拥有标准针串口的PC机对目标板编程。另外可选择把整个编程器做到目标板上对自己编程。编程界面对于系统在线编程编程器与目标板用了尽可能少的线连接。简单的线接口连接编程器和目标PCB可在任何目标板上编写任意AVRMCU。图显示了所需的连接。串行接口(SPI)的界面包括根线:时钟(SCK)主入从出(MISO)主出从入(MOSI)。AVR编程时编程器总是作为主机同时目标板作为从机。编程器(主机)提供通讯时SCK线上的时钟。通过MOSI线SCK线上的每个脉冲把一位数据从编程器(主机)传送到目标板(从机)。同时通过MISO线SCK线上的每个脉冲把一位数据从目标板(从机)传送到编程器(主机)。为了确保SPI线上的正确通讯必须把编程器上的地线和目标板的地线(GND)连接起来。进入并保持在串行编程模式下AVRMCU复位线必须保持激活状态(低)。另外执行芯PCPINSERIALPORTTXDRXDGNDINSYSTEMPROGRAMMERVCCRESETTXDMISORXDMISIGNDSCKTARGETAVRMCUATSXXXXVCCRESETMISOMOSISCKGND图。编程器和目标板的线连接系统在线编程,史宁翻译刘汧校对片擦除时复位信号必须一直拉低直到结束芯片擦除周期。为了编程的灵活性最好让编程器控制目标MCU的复位线用第四根控制线(RESET)控制该过程。目标板的编程在V~V电压下运行编程器能从目标板(VCC)获得电源。因此不必为编程器提供单独的电源。也可选择编程时通过编程器给目标板提供电源而不必使用目标板的电源。图。给出了编程器与目标板相连接的接头。标准的接头是×的引脚引脚间距mils。硬件设计考虑事项为了能够对AVRMCU在线编程编程时编程器必须要涵盖这些引脚的功能。以下详细描述了每个引脚在编程中如何运行。GND编程器和目标板需要在相同的参考电压下运行。通过连接目标板的地线和编程器的地线即可完成。该引脚没有其他功能。RESET只有当目标AVRMCU的复位线处于激活状态(低)时它才进入串行编程模式。擦除芯片时复位线必须一直拉低直到结束芯片擦除周期。为了简化这个操作建议目标板的复位通过编程器控制。在RESET执行之后编程器将开始通过根SPI线:SCKMISO和MOSI通讯。如果有外部电路驱动这三根线的可能那么应该在每根线上串一个电阻避免驱动冲突。连接参看图。电阻值的选择根据与SPI总线相连的电路决定。注意:一旦RESET激活AVRMCU会自动把IO引脚设为输入内部上拉关闭。表在线编程器的连接引脚名称注释SCK串行时钟编程时钟编程器(主机)提供MOSI主出从入编程器(主机)到目标AVR编程板(从机)的通讯线MISO主入从出目标AVR编程板(从机)到编程器(主机)的通讯线GND普通地线主从板必须共用一个地线RESET目标AVRMCU复位为了能够在线编程目标板AVR的复位必须保持激活状态。也可通过用编程器控制目标板AVR的复位简化该过程。VCC目标板电源目标板的编程在任何电压下运行编程器能从目标板(VCC)获得电源。也可选择编程时通过编程器给目标板提供电源而不必使用目标板的电源。系统在线编程,史宁翻译刘汧校对为了避免出现麻烦编程中在线编程器应该使整个目标板保持复位状态。在复位处于激活状态下目标板最好不要驱动这根SPI线。SCKAVR编程处于串行模式下编程器给SCK引脚提供时钟。该引脚总是由编程器驱动同时当目标板的复位引脚处于激活状态时目标板万万不可驱动这根线。目标板的复位引脚处于激活状态时该引脚被编程器置为。在编程的第一阶段保持SCK线不被脉冲干扰非常重要因为脉冲会导致目标AVR与编程器失去同步。同步时当发出编程的第三个字节的编程许可命令时第二个字节($)会有回应。如果$没有回应就给RESET一个正脉冲并发出一个新的编程许可命令。注意:全部的个字节的编程指令必须在新的一次传输之前发出。当RESET处于激活状态目标AVRMCU一直把SCK引脚设为输入且上拉关闭。也可参看复位线的资料描述。串行时钟输入的高低电平的最小周期在数据表的编程部分有详细说明。如:ATS的说明如下:Low:>XTALclockcycleHigh:>XTALclockcyclesMOSIAVR编程处于串行模式下编程器通过MOSI引脚给目标板提供数据。该引脚总是由编程器驱动同时当目标板的复位引脚处于激活状态时目标板万万不可驱动这根线。只要RESET处于激活状态目标AVRMCU一直把MOSI引脚设为输入且上拉关闭。也可参看复位线的资料描述。MISO只要目标AVRMCU的RESET处于激活状态就一直把MOSI引脚设为输入且上拉关闭。只有在编程许可命令正确无误的传送到目标板后目标AVRMCU才把MISO引脚变成输出。在第一次操作时编程器会提供上拉以保持MISO线的稳定直到由目标MCU驱动。VCC目标MCU编程时编程器的输出必须满足直流特性。为了方便地适用于任何目标板的电压编程器可以从目标板获得全部所需电源。也就是说编程器能从目标板获得非常小的电流典型值不超过mA。该应用说明中的编程器就工作在这种模式下。系统在线编程,史宁翻译刘汧校对作为选择目标板也可以通过编程器提供电源进行通讯。也就是说目标板可以不需要额外电源也能工作。表支持在线编程的硬件设计的建议引脚建议GND连接目标板与编程器的地线RESET允许编程器复位目标板SCK当目标AVRMCU复位激活由ISP编程器控制这根线。复位线拉低后上面的抖动会导致目标AVRMCU和编程器失去同步。编程时当AVR复位激活引起该引脚上的振荡能够被周边电路承受。MOSI当目标AVRMCU复位激活由ISP编程器控制这根线。编程时当AVR复位激活引起该引脚上的振荡能够被周边电路承受。MISO当目标AVRMCU复位激活该线变成了输出。编程时当AVR复位激活引起该引脚上的振荡能够被周边电路承受。VCC为了方便地适用于任何目标板的电压编程器可以从目标板获得全部所需电源。供给编程器的最大电流会随着所使用的编程器有所变化。编程协议AVRMCU的复位激活后芯片进入编程模式。内部SPI激活准备接收编程器的指令。对于ATS保持SCK引脚的稳定非常重要因为仅一个抖动就会导致目标板与编程器失去同步。其他器件使用的同步算法在数据表里有详细说明。复位拉低后至少等ms才能发出第一个命令。命令格式每条命令都有个字节组成的共同格式。第一字节是命令代码选择要进行的操作和目标存储器。第二和第三字节是被选择存储区的地址。第四字节是读或写的数据。从目标板返回的数据通常是前一个字节的内容。表给了一个把两个连续命令发送到目标板的例子。请注意所有返回的字节是如何对应收到的字节的。某些命令从目标存储器收到一个字节。这个字节总是在最后字节(byte)里返回。数据总是通过MOSI和MISO线发送高位(MSB)在前。关于有效命令的详细内容请参考数据表的串行编程部分。许可存储器访问当复位引脚首先被拉低激活SPI接口只认可“编程许可”指令。只有该指令才能允许访问FLASH和EEPROM没有这个允许其他任何命令都被忽略。表举了一个例子第一个命令发送到芯片后允许访问内存。表例子:允许存储器访问和擦除芯片作用MOSI发送到目标AVRMISO从目标AVR返回编程许可$ACxxyy$zzACxx在地址$读器件代码$E$nnmm$yynnE发送一个“编程许可”命令到目标板后根据保护锁定位的当前设置可以访问芯片的非易失性存储器。系统在线编程,史宁翻译刘汧校对目标AVRMCU不会响应“编程许可”命令。检查一下如果目标AVRMCU已经认可该命令器件代码会被读取。器件代码也被当作是特征字节。器件代码SPI接口成功地读了“编程许可”命令后编程器可以读器件代码。器件代码将识别芯片厂家(Atmel),芯片族(AVR)FLASH空间(kB)和芯片型号(如ATS)。“读器件代码”命令的格式在数据表的串行编程部分可以查到。例如:适用于ATS的命令是$,$XX,$adr,$code。有效的地址是$,$和$。表列出了预期的结果。表指出器件代码有时读作$FF。如果这样的话器件代码没有被写入器件。这并不是一个错误但是编程器必须靠人工识别芯片型号。如果目标板没有准备好或MISO线一直被拉高器件代码$FF也可能出现。通过检测发送到目标板的命令以$FF返回编程器能检测到这种情况。如果目标板显示厂家代码$芯片族$芯片编号$表示保护位已经被设置。这阻止内存块对命令响应同时返回的数据将是刚从编程器收到的字节这些字节正好是当前地址。必须执行一个有效的“芯片擦除”才能擦除保护位。表举例说明从ATS读取器件代码表许可器件代码地址代码有效代码$厂家代码$E说明生产商是Atmel$说明器件被加密看下面说明$芯片族代码和FLASH空间大小$n说明是有nkBFlash的AVR$芯片编号识别芯片编号看avrasm,有支持器件的完整列表。表芯片代码编号识别举例芯片族代码和FLASH空间大小芯片编号芯片$$ATS$$ATS$$ATS$$ATS$FF$FF擦除的器件代码(或失去的目标板)$$器件被加锁表举例:从期望的ATS代码$E读取器件代码作用MOSI发送到目标AVRMISO从目标AVR返回在地址$读取厂家代码$xxyy$zzxxE在$读取芯片族和存储空间大小$nnmm$yynn在$读取芯片编号$xxyy$mmxx访问FLASH程序存储器识别芯片后开始访问FLASH存储器。FLASH存储器编程之前要先擦除芯片。根据目标系统在线编程,史宁翻译刘汧校对器件FLASH用“字节”或“页面”模式编程。对于“字节编程模式”的器件单独寻址和编程每一个FLASH的位置。在“页面编程模式”下一个临时的页面缓冲器首先被填满然后在一个写周期内编程。此种模式减少了FLASH编程的总时间。一个器件只有一种有效模式。“字节编程模式”的器件不能选择“页面编程模式”。但是具有“页面编程模式”的FLASH存储器的器件对EEPROM存储器使用字节编程。FLASH的“页面编程模式”对EEPROM存储器可以用字节编程。无论器件是用“字节编程模式”还是“页面编程模式”在用“读FLASH编程存储器”命令的时候将读FLASH的一个字节。命令发送一个指向位的字的存储地址($aabb)同时在命令字节里用H位选择低或高字节(是低是高字节)。保存在这个地址里的字节随后从目标AVRMCU的字节里返回。通常FLASH里的每一个位的字都包含一个AVR的指令。假设存储在地址$是“addrr”这条指令的操作代码将以$F存储。读地址$字节里返回的期望值是:高字节$F和低字节$。MISO和MOSI线上的数据将类似表的例子。但是写FLASH存储器根据有效的编程模式有所变化。对于用“字节编程模式”的器件他们用“写程序FLASH存储器”命令来写。该命令发送一个指向位的字的存储地址($aabb)同时在命令字节里用H位选择低或高字节(是低是高字节)。要保存的字节随后发送到目标AVRMCU的字节里。对于用“页面编程模式”的器件对FLASH编程分两步。首先用“加载程序存储页面”命令填满一个临时页面缓冲区。该缓冲区里的每一个字节都能直接访问。一旦填满整个缓冲区就用“写程序存储页面”命令把缓冲区写到FLASH存储器。有些器件无法检查FLASH写周期是否完成。因此编程器准备发送另一个命令到目标接口前要等待Nms(延时的N根据目标器件决定长短。另外能在数据表的编程部分看到具体内容)。也有些器件可以用查询。当对FLASH或EEPROM的某个字节编程时读正在编程的地址会给出一个值M(经常是$FF)。当器件已经准备好接收一个新字节已编程的值可以正确地读出。这能用于决定什么时候写下一个字节。不能使用值M查询时那么写下一个字节之前应该延时N。查询模式将会减少器件编程所需的时间。表。举例:从FLASH存储器$位置把“加r,r”读作$F作用MOSI发送到目标AVRMISO从目标AVR返回在地址$读$低字节$xx$zz在地址$读$F高字节$yy$xxF表。举例:把“加r,r”当作$F写到FALSH存储器位置$c字节编程模式)作用MOSI发送到目标AVRMISO从目标AVR返回在地址$写$C低字节$C$zzC等待Nms在地址$C写$F高字节$CF$xxC等待Nms访问EEPROM数据存储器用“读EEPROM数据存储器”命令EEPROM的内容每次能读一个字节。在这个命里令发送一个存储器地址($aabb)选择一个字节在EEPROM里位置。系统在线编程,史宁翻译刘汧校对表。举例:从EEPROM$F读$ab作用MOSI发送到目标AVRMISO从目标AVR返回在地址$F读$ab$AFxx$zzAAB每次用“写EEPROM存储器”命令给EEPROM写一个字节。该命令就象“读EEPROM存储器”命令一样把要写的数据在命令的最后字节传输到目标板。有些器件无法检查写周期是否完成。因此编程器准备发送另一个命令到目标接口前要等待Nms(延时的N根据目标器件决定长短。另外能在数据表的编程部分看到具体内容)。为了增加编程速度在“访问FLASH程序存储器”部分介绍了如何使用查询。表举例说明写一次EEPROM。表。举例:把$F写到EEPROM的$里作用MOSI发送到目标AVRMISO从目标AVR返回在地址$写$F$CF$zzC等待Nms访问保护位为了使存储内容免受意外地改写或非法读取保护位能设置保护存储内容。如表所示存储器既可以免除进一步的写操作也可以完全不能对芯片存储器进行读或写。有些器件的保护位不能读而且编程器不能校验设置的保护位。为了检查器件的保护位已设置适当应该尝试改写EEPROM。当保护位设置后储器器不能改变。当保护位和保护位都设置后所有位置都不能读而且返回的结果将是已发送命令地址的低字节。只设置位起不到保护的效果。在设置读保护前必须先成功设置写保护。保护位只能防止编程接口对存储内容的改写。内核能正常访问FLASH程序存储器和EEPROM而不受设置保护位的约束。表。保护位的保护模式保护位保护位保护类型无存储器保护禁止FLASH和EEPROM进一步编程禁止FLASH和EEPROM进一步编程和校验设置保护位后只有一个方法可以恢复访问存储器就是用“芯片擦除”命令擦除整个芯片。只有在所有存储内容全部被清除后保护位才被清为而失去保护作用。关于芯片擦除保护位成为说明为被清除。尽管保护许可的操作被认为是“设置”保护位许可保护位应该写才有保护作用。表。举例:设置保护位禁止进一步编程作用MOSI发送到目标AVRMISO从目标AVR返回设置保护位禁止编程$ACFDxxyy$zzACFDxx等待Nms芯片擦除操作存储器必须被擦除后新内容才能写进FLASH程序存储器。如果没有擦除只能在FLASH存储器内部把改写不能选择把改写为。用“芯片擦除”命令执行擦除存储器。该命令将擦除所有存储器内容包括FLASH程序存储器和EEPROM。系统在线编程,史宁翻译刘汧校对只有成功擦除存储器后才能擦除保护位。这种方法的好处是:确保在数据完全被擦除之前存储器里数据是安全的。芯片擦除后所有的存储器的内容将被读作$FF。只有一个方法能结束芯片擦除周期:通过暂时释放复位线。表。举例:擦除FLASH程序存储器和EEPROM的所有内容作用MOSI发送到目标AVRMISO从目标AVR返回擦除芯片$ACxyynn$zzACxyy等待Nms释放复位以结束擦除简易廉价在线编程器这篇应用不讨论在线编程器的所有方面。而是只讲如何用一些分立元件和ATS作一个简单的编程器。编程器适用与任何PC机的串行口。ATS没有硬件UART但是通过使用定时器实现半双工串口通讯。ATS通过使用软件模拟运行主SPI对目标AVR编程。图可以看到编程器的原理图。ATS的电源由目标板提供。和PC机串行通讯时收到逻辑需要的负电压存储在C(负电压)。当晶体管Q关闭时C的负电压传到发送端这发送一个逻辑。逻辑(正电压)通过打开Q把VCC(实际电压是Vcc,V)和发送端连接起来发送。有些很老的PC板当电压低于V时串行口无法接收逻辑。但是现在的大部分PC机没有这个问题。Avrasm文件包括ATS的韧件。(下面是元器件的型号和封装就不再翻译了看原理图就行了。)

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/14

系统在线编程-史宁翻译

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利