Honeywell霍尼韦尔 CC-PAIH01(51405038-175),现货销售,顺丰包邮,欲购从速。
详情描述:
引言
随着嵌入式系统技术的发展,电可擦除的Flash存储器由于具有容量大、成本低、编程方便等优点,在微控制器领域得到了广泛的应用。Flash微控制器在正常运行前必须将Flash写入用户应用程序,目前对微控制器的Flash程序存储器进行编程的方法主要有出厂固化、编程器编程、在系统编程(InSystemProgramming,ISP)和在应用编程(InApplicationprogramming,IAP)4种。
其中,出厂固化和编程器编程方法都要求微控制器在焊接前将程序写入,这显然不满足开发阶段的调试和日后升级的需要。目前比较普及的是在板可编程的ISP和IAP方法。ISP是通过微控制器的串行编程写入应用程序,需要少量的外部电路辅助实现;IAP将Flash映射为用户程序和Bootloader两个存储区,Bootloader可通过系统已有的USB、串口、SPI、I2C总线等各种通信接口,对用户程序进行更新而不需要外部电路辅助,实现更加灵活,可方便地实现程序的在线及远程升级。
在利用ATmega88微控制器开发四旋翼飞行器的无感无刷直流电机驱动器时,由于定时器PWM输出口与SPI接口存在引脚共用问题,用SPI口进行ISP编程时会使MOS管误导通而烧毁。由于驱动器中的4个ATmega88微控制器是通过I2C总线通信的,为了调试和升级方便,提出并实现了通过I2C总线对***R微控制器进行在应用编程的方法,包括Bootloader程序、I2C总线的PC机串口模拟、上位机程序及相关的通信协议。实践证明,该方法可成功实现I2C总线上多个ATmega88微控制器[1]的在线升级。
1ATmega88微控制器的Bootloader设计
ATmega88是一款基于***R增强RISC体系结构的CMOS低功耗8位微处理器,它通过执行强大的单周期指令,达到接近1MIPS/MHz的运算效率。ATmega88的Flash被分为128个大小为64字节的页面,Flash的编程操作都是以页面为单位进行的。为了用户程序的安全性,以及用户的ISP和IAP编程需要[2],ATmega88的Flash存储空间被分为引导程序区(BootloaderSection)和应用程序区(ApplicationProgramSection)两部分。
引导程序区为非同时读写区,应用程序区为同时读写区。在非同时读写区内执行的代码可以对同时读写区内的页面进行编程操作,根据这一机制我们可以编制Bootloader程序并将其存储于引导程序区内,以实现应用程序区代码的在线与远程升级。
由于ATmega88分配给引导程序区的空间大小有限(***大2KB),Bootloader程序一定要简洁而***,图1给出了以I2C总线为通信接口的Bootloader程序流程图。

利用I2C总线实现ATmega88的在应用编程
为了能够执行Bootloader程序,ATmega88熔丝位中的BOOTRST应设为零,这样在系统上电或应用程序接收到升级命令利用看门狗复位后,系统就能从引导程序区运行Bootloader程序。Bootloader程序中维持了一个溢出时间为2s的定时器,该定时器利用TIM1以查询的方式实现。没有程序更新或程序更新完毕,程序在2s内没有从I2C总线接收到数据帧时则利用(*((void(*)(void))(00000)))函数跳转到应用程序区执行应用程序,在2s内接收到数据帧后,则将定时器重置,以继续接收数据帧更新应用程序。
在Bootloader实现中,ATmega88的I2C总线工作在从模式,上位机的I2C总线工作在主模式。上位机发送的数据帧由2字节的Flash页面地址、64字节的页面数据、1字节的密码和1字节的异或校验和构成。Bootloader接收到数据帧后会用数据长度、密码、异或校验和对数据帧进行校验,校验正确的话则根据数据帧中Flash的页面地址和数据相应的Flash页面进行编程,并将flag置1;校验错误的话,则丢弃数据帧等待重发的数据帧。
上位机在发送数据帧后读取flag,并根据其状态重发数据帧或发送下一页面的数据帧。flag被读取后Bootloader程序将其清零,这样就形成了一个简洁而有效的差错控制机制。Flash中页面的编程由页擦除和页编程两个过程组成,页擦除由***R库函数中的boot_page_erase(addr)函数实现,addr为相应页面中的字节地址。
ATmega88的Flash是以页为单位进行擦除和写入操作的,因此在进行Flash页面写入前,要多次调用boot_page_fill(addr,data)函数将整页的程序代码写入临时缓冲区,其中addr为指令所要写入的字节地址,data为相应的由2个字节构成的16位程序指令。Flash页面的写入由boot_page_write(addr)函数实现,addr为相应页面中的字节地址。
BTV20.2CA-64B-33C-D-FW
AEG AS-8534-000
AEG AS-P120-000
AEG AS-J890-101
AEG AS-S908-011
AEG PC-0984-455
AEG AS-B872-002
AEG AS-B828-016
AEG PC-E984-265
AEG AS-B872-002
AEG DAP208
AEG NW-RR85-000
AEG NUL200
AEG S908
AEG AS-B840-108
AEG 170BDI54250
AEG AS-B846-001
AEG PC-A984-120
AEG AS-B829-116
AEG AS-B350-001
AEG MM-PMA2-100
AEG 3240/5200
AEG 120-089-006
AEG AS-P120-00
AEG AS-BDEP-218
AEG PC-***84-230
AEG PC-E984-685
AEG 1-PE-0001-000
IBM 59H2682
Tellabs PWPQH151AB
Honeywell 2VM62-020- 5
HPS 100760406
Zenith PWMT-200
***aya Lucent TN2181 V8
AEG AS-P120-000
AEG AM-S985-042
AEG AS-C921-101
AEG AS-B804-016
AEG 170BDM34200
AEG AS-BDAU-202/ASBDAU202
AEG PC-A984-145
AEG AS-B360-001
AEG AS-B885-111
AEG AS-BDEP-210
AEG AS-B804-116
Asco SC8210G87
Chiller 0375-362-21
***aya TN754
Philips 1240/00
Radyne DMD2050
Tektronix MIL-3600TEK
Netgear FVS318
Apple A1047
Dynapar H23200011011J
***aya TN748C V5
Oriental 4TK10CGN-A
Sun 3701704
***aya Lucent TN760D
CMS A5X70
Compaq 007902-001
Reuters CA-AKPT-0001
Haydon 87H4B-05-006ENG
Siemens 6ES5315-8MA11
Cisco 2650XM
***aya TN747B V8
***aya TN747B
NetApp EMA-XF500-201-G1
Phillips 275801
Toshiba DKT2104-CB
SimpleTech 8500-0031-001
Seagate ST330620A
Skystream EMR-1600
*** RM-P110
Startek 299AT
Bogen M300
***aya TN767E
Honeywell 2VM62-020-5
Panasonic TNPA4242
Panasonic TNPA4055
***aya 120A4
***AYA 617U33-K
***aya 103G13
***aya TN573B
***aya TN750B
***aya TN2302AP
***aya TN801B
***aya 391C1
***aya PG-5E385
***aya TN801
***aya TN750C V8
Compaq 007912-001
Asco 103-833-1-D
***aya TN746B
STB 1X0-0271-307
MDC K100-5
Black SP400A-R2
Cisco 34-0667-01
Exide 101073070-001
3664 TRICONEX
3721 TRICONEX
07DI92 GJR5252400R0101
07DI92 GJR5252400R4101
07AI91 GJR5251600R0202
07AI91 GJR5251600R4202
FBM214
FBM215
FBM204卡件 P0914SY
FBM204端子 P0916AG
FBM204电缆 P0916DB
FBM241卡件 P0914TG
FBM241端子 P0916AS
FBM241电缆 P0916FH
FBM241C卡件 P0914WM
FBM241C端子 P0916AW
FBM241电缆 P0916FH
2094-BM02-S
651CD2S2N
DSQ***31
IC697CMM742
MTM-120-S-A20-120VA
TRICONEX 5101
TRICONEX 5201
TRICONEX 5301
TRICONEX 5401
TRICONEX 5351
FBM201
FBM07B
FBM237
FBM242
ENI MKS DCG-100A
ENI MKS DCG-100
ENI MKS DCG-200Z
ENI MKS DCG-100 DC
MKS DCG-200Z OPTIMA OPT-100Z-00
ENI MKS DCG-200ZHC-S02
DCG-200Z DC22S-Z022000010A
ENI DCG-100A DCG4M-A001101010
ENI DCG-100A DC26M-Z011100010C
ENI DCG-100A DCG2M-A001200020C
ENI DCG-100A DCG2M-A001200020MA
ENI DCG-200Z DC21M-Z041300110A
ENI DCG-200A DC22M-A041300111AL
ENI DCG-200Z DC22M-Z041300111A
ENI DCG-200Z DC22S-Z122000010A
ENI DCG-200Z DC24M-Z041300110A
ENI DCG-200Z DC24M-Z041300111A
ENI DCG-200E DCG-400E-00 Optima
DCG-100A DCG1M-A001200020C
DCG-100A DCG1M-A001100020V
DCG-100A DCG1R-A021200021
DCG-100A DCG2D-A001100020MA
DCG-100A DCG2D-A031100021
DCG-100A DCG2S-A022000010
DCG-100A DCG2S-A022001010
DCG-100A DCG2S-A122000010 RPG-50
RPG-100
DSQC639 3HAC025097-001
DSQC679 3HAC028357-001
DSQC633A ***B板3HAC031851-001