电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

AVR芯片的ISP全攻略


发布日期:2021/12/5
 
并行编程最早的编程方法功能最强大但需要连接较多的引脚通常需要V~V的高压以示区别下面称为 高压并行编程

ISP(In System Programmability) 在系统编程简称为 串行下载

IAP(In Application Programing) 在应用编程BootLoader也是类似的意思

ISP虽然利用了SPI接口(例外M/M为UASRT接口Tiny等没有SPI接口)的引脚但只在复位时起作用而且下载完成后合格的下载器会自动断开端口的连接对正常工作时没有影响的( 在产品应用中下载器一定是不会一直粘在上面的)

虽然高压并行下载能修复任何熔丝位但对于贴片封装来说是很不现实的所以ISP接口是最常用的下载方式了

虽然IAP是一种新的升级方法但IAP程序本身也是要先用高压并行下载或ISP来烧进芯片里面才行

Tiny等少管脚AVR芯片因为管脚实在太少了有ISP但没有[高压并行编程]而特制了[高压串行编程]

所以产品上一般都留有ISP接口插座或更省位置的个焊盘就行了

ISP的工作前提

芯片没有物理损坏

芯片的SPIEN熔丝位= 使能ISP功能

芯片的RSTDISBL熔丝位= RESET引脚有效 (假如芯片有这个熔丝位)

线路正常接错线? 短路?

下载器正常特别要考虑 连线的接触不良问题

电源

运行时钟 ISP时钟(必须低于运行时钟的/

Hz <Hz //很变态的用法外接KHz晶体+CKDIV 不过AVRISP还是提供了Hz这个速度了

//另一简易解决办法是 下载时在KHz晶体并联一个MHz晶体双龙的下载线就配有一个MHz的石英晶体

Hz <Hz

KHz < KHz //内部RCKHz

MHz <KHz //默认值(包括MHz+CKDIV所以AVRISP的ISP速度多为KHz

MHz <KHz

MHz <KHz

运行时钟不等于震蕩器的频率因为部分AVR芯片有系统时钟预分频器可以对震蕩器进行~分频

CKDIV熔丝位决定CLKPS位的初始值

若CKDIV未编程CLKPS位复位为;若CKDIV 已编程CLKPS 位复位为给出启动时分频因子为

AVRISP可提供的ISP时钟 KHzKHz KHzKHzKHz Hz

STK可提供的ISP时钟 MHzKHzKHzKHzKHzHz

时钟设定 ISP方案

内部RC 选择合适的ISP速度

外部RC 接上合适的电阻和电容选择合适的ISP速度补救 外部时钟源接到XTAL

外部RC 根本就没有什么意义频率精度/稳定度不高成本也没有降低所以新的AVR芯片已经没有这个选项了

各位网友要注意的是错误设定后补救方法

外部晶体 接上合适的晶体选择合适的ISP速度 补救 外部时钟源接到XTAL

外部时钟 接上合适的时钟源选择合适的ISP速度 补救 外部时钟源接到XTAL

外部时钟源可以是 外部(MHz)有源晶体输出其他MCU的XTAL各种方波振蕩电路(NE)输出等

大部分AVR芯片的ISP端口是 SCKMOSIMISORESET

而M/M的ISP端口是 SCK PDI PDORESET

而且M/M出厂默认兼容M熔丝位MC=很多新特性不能使用程序也可能不能正常运行

因为C编译器通常默认自动把SP指向SRAM的末端M=xFFFH M/M=xFFH必然出错!

AVR的所有熔丝位均是

未编程多为不起作用的意思

编程多为 起作用的意思

基于可编程工艺的都是这样

PROM/EEPROM/FLASH都是出厂时和擦除后变为全xFF)的要编程才能变成

反过来就是了跟CE/OE/INT都是[低电平有效]一样都是很常见

在ISP模式下永远不能访问(修改)SPIEN位这是AVR芯片的硬件保护

有独立RESET脚的M/M/M/M在ISP模式下根本就就不会令ISP无效无论如何修改熔丝位都能恢复正常

M/M/M/M/Tiny系列有RSTDISBL熔丝位可以令导致RESET失效而令ISP无法工作外其他情况都能恢复正常

一般来说只要满足ISP的工作前提再把XTAL接到一个MHz有源晶体的输出基本是万试万灵的

不要忘记并行高压编程的时钟信号也是从XTAL导入方波信号的

如果有源晶振的方法不行(除了ISPEN=RSTDISBL=情况外)恐怕高压编程也未必能奏效

JTAG的影响(MMM等)

JTAG能访问 SPIEN 和 JTAGEN要是不小心同时改成SPIEN=JTAGEN=将会导致MCU锁死需要高压并行编程才能恢复

DebugWIRE的影响(MMMT数据手册里面的资料不是很详细)

由于DebugWIRE使用RESET脚来通讯所以跟ISP有所沖突

可以通过ISP或并行高压编程来使能DebugWIRE功能[即DWEN=]使能DebugWIRE功能后ISP功能失效

可以通过DebugWIRE来关闭DebugWIRE功能[即DWEN=]关闭DebugWIRE功能后如果RSTDISBL=SPIEN=ISP功能有效

比较特殊的是 DebugWIRE调试中断点的使用会降低Flash 数据记忆时间 DebugWIRE调试用的器件不能发给最终客户

JTAG MKII同时具备JTAG/DeubgWIRE/ISP三种功能可以轻松实现DebugWIRE/ISP的切换

(软件需要升级到版以后 即对应AVRstudio 以后版本)

最新版本 JTAG MK使用说明中文pdf(

设计使用debugWIRE 的系统时必须进行下面的检查

? dW/(RESET) 的上拉电阻不得小于debugWIRE 并不需要上拉电阻

? 将 RESET 引脚与 VCC 直接连接将无法工作

? 使用debugWIRE 时必须断开与RESET 引脚连接的电容

? 必须断开所有的外部复位源

上一篇:笔记本AC电源适配器设计

下一篇:嵌入