
CC-PAIH01(51405038-175)
Honeywell霍尼韦尔CC-PAIH01(51405038-175),现货销售,顺丰包邮,欲购从速。详情描述:为了程序安全,Flash执行页擦除和编程操作时要求CPU处于等待状态,因此Flash的页擦除和写入函数执行后都要调用boot_spm_busy_wait()函数等待操作完成。此时,I2C总线也处于挂起状态,等所有操作完成后才能将总线释放。上位机软件在发送完数据帧后就一直***总线状态,等总线释放后再读取flag状态,并决定是重发还是发送下一帧,这样就实现了有效的通信流量控制。整个Bootloader程序编译完成后,大小为506字节。因此,熔丝位中的BOOTSZ1和BOOTSZ0应设为1和0,将引导程序区设置为地址01E00~01FFF、大小为512字节的区域。为了使Bootloader程序能正确写入到该区域,程序编译时要将程序起始地址设定在01E00,在Win***R中可以通过在Makefile中添加“LDFLAGS+=-Wl,--section-start=.text=01E00”实现。编译完成的Bootloader可以在ATmega88确定PCB前,通过编程器或ISP写入到Flash中。2PC端编程软件设计2.1IntelHex文件格式ATmega88微控制器的目标程序代码是采用IntelHex文件格式[3]保存的。IntelHex文件包含了目标代码及相应的地址信息,这些实现在应用编程必需的信息由PC机端的上位机程序提取,并重新以页面为单位装帧后发送给Bootloader便可实现Flash的编程。IntelHex文件格式将二进制的目标机器代码以ASCII码的文本形式记录,在文件中,每一行都是一个由十六进制机器码或数据常量组成的Hex记录。记录格式如表1所列。表1IntelHex文件的记录格式每条Hex记录都是以“:”开头的,表1中所述的每个字节在记录中是由两个ASCII码表示的,这样的两个十六进制数为一个字节;长度表示的是记录中数据项的长度;地址为数据项在Flash中的起始地址;记录的类型总共有6种,分别为数据记录(00)、文件结束记录(01)、扩展段地址记录(01)、开始段地址记录(03)、扩展线性地址记录(04)、开始线性地址记录(05)。数据是与记录类型相对应的可变长度的数据组。校验字节计算如下:首先,将每条记录中除记录头和校验外所有ASCII码以2个ASCII码转换为1个字节的形式转换为二进制。然后计算上述二进制字节的累加和,***后将累加和的低字节取反加1即为校验字节。ATmega88目标代码的Hex文件由数据记录和文件结束记录两种类型的记录构成。上位机程序在解析过程中以行为单位读取文件中的记录,并根据上述记录的格式进行解析,获得Flash每一页面的地址和相应的数据,遇到文件结束记录后则停止解析。2.2I2C总线的PC机串口模拟PC机端的编程软件是通过I2C总线与ATmega88的Bootloader通信的,I2C总线在微控制器中是广泛存在的,一般的微控制器都集成了I2C总线控制模块。但PC机基本没有I2C总线接口,需要专用的USB转I2C总线协议芯片或其他接口的I2C总线模块才能实现PC机与微控制器之间的I2C总线通信。这种方法成本高且实现麻烦,本文给出了一种利用PC机串口的握手信号模拟I2C总线的方法,相比专用协议转换芯片或模块的方法,这种方法更加简单、***。为了实现PC机RS232串口与微控制器I2C总线的电平匹配,设计了如图2所示的接口电路。图2中,PC机串口的RTS输出用来模拟I2C总线的SCL时钟信号;DTR输出模拟I2C总线的SDA输出数据信号;CTS输入用于接收SDA输入数据。PC机串口的RS232的高电平为15V,低电平为-15V;I2C总线的高电平为+5V,低电平为0V。因此,将PC串口的握手信号转换成I2C总线信号时需要进行相应的电平转换,PC机串口RS232电平与I2C总线TTL电平之间的转换是由电阻R1、R2和5.1V稳压管D1、D2实现的。当RTS输出+15V高电平时,由于电阻和稳压管的作用,SCL端电平被稳定在+5.1V;而当RTS输出-15V低电平时,由于二极管D2导通,SCL电平被钳位在-0.7V。这样,便实现了&plu***n;15V的RS232电平到0~5VCMOS电平的转换;电阻同时也起着限流作用。DTR输出到SDA信号的电平转换也是同样的原理,而当SDA处于输入状态时,由于CMOS电平可以满足RS232电平的输入容限,因此无需进行电平转换。由于用PC机串口模拟I2C总线时仅仅用到了串口的握手信号,而没有用到串口的波特率、数据长度、奇偶校验等设置功能及输入/输出缓冲区的管理功能,本文直接采用Windows提供的API函数实现串口编程。串口的打开和关闭分别采用CreateFile函数和CloseHandle函数实现。RTS和DTR信号高低电平的控制由EscapeCommFunction函数将串口作为文件操作实现,调用该函数后程序要有一定时间的***以实现通信波特率的控制。CTS的电平状态则由GetCommModemStatus函数查询得到。在实现了RTS、DTR的电平控制与CTS电平状态的获取后,借鉴单片机用I/O口模拟I2C总线的方法[4],可以通过控制RTS、DTR电平与查询CTS状态来模拟I2C总线。在总线的时序处理与读写操作方面,两种方法的***不同在于:用单片机I/O口模拟I2C总线时,I2C总线的SDA信号由输出模式转换到输入模式是通过将单片机I/O口从输出转换为输入实现的;由于串口握手信号无法实现双向通信,因此,SDA信号的输入功能是通过将DTR置高电平后读取CTS状态实现的,之所以将DTR置高电平是因为微控制器端的I2C总线的集电极开漏输出结构需要DTR置高后才能输出高电平,这类似于I2C总线上拉电阻的功能。2.3上位机程序设计PC端上位机程序的主要功能为:解析应用程序的Hex格式文件,并从中提取Flash中每一页面的地址与数据信息;设置串口号与所需升级的ATmega88的I2C总线地址;利用串口的握手信号模拟I2C总线通信,将Hex文件中的程序代码准确无误地发送给相应地址的Bootloader以实现应用程序的在线更新。根据上述功能设计了如图3所示的上位机程序界面,开发环境采用BorlandC++builder5.0,串口操作通过WindowsAPI接口函数实现。BTV20.2CA-64B-33C-D-FWAEGAS-8534-000AEGAS-P120-000AEGAS-J890-101AEGAS-S908-011AEGPC-0984-455AEGAS-B872-002AEGAS-B828-016AEGPC-E984-265AEGAS-B872-002AEGDAP208AEGNW-RR85-000AEGNUL200AEGS908AEGAS-B840-108AEG170BDI54250AEGAS-B846-001AEGPC-A984-120AEGAS-B829-116AEGAS-B350-001AEGMM-PMA2-100AEG3240/5200AEG120-089-006AEGAS-P120-00AEGAS-BDEP-218AEGPC-***84-230AEGPC-E984-685AEG1-PE-0001-000IBM59H2682TellabsPWPQH151ABHoneywell2VM62-020-5HPS100760406ZenithPWMT-200***ayaLucentTN2181V8AEGAS-P120-000AEGAM-S985-042AEGAS-C921-101AEGAS-B804-016AEG170BDM34200AEGAS-BDAU-202/ASBDAU202AEGPC-A984-145AEGAS-B360-001AEGAS-B885-111AEGAS-BDEP-210AEGAS-B804-116AscoSC8210G87Chiller0375-362-21***ayaTN754Philips1240/00RadyneDMD2050TektronixMIL-3600TEKNetgearFVS318AppleA1047DynaparH23200011011J***ayaTN748CV5Oriental4TK10CGN-ASun3701704***ayaLucentTN760DCMSA5X70Compaq007902-001ReutersCA-AKPT-0001Haydon87H4B-05-006ENGSiemens6ES5315-8MA11Cisco2650XM***ayaTN747BV8***ayaTN747BNetAppEMA-XF500-201-G1Phillips275801ToshibaDKT2104-CBSimpleTech8500-0031-001SeagateST330620ASkystreamEMR-1600***RM-P110Startek299ATBogenM300***ayaTN767EHoneywell2VM62-020-5PanasonicTNPA4242PanasonicTNPA4055***aya120A4***AYA617U33-K***aya103G13***ayaTN573B***ayaTN750B***ayaTN2302AP***ayaTN801B***aya391C1***ayaPG-5E385***ayaTN801***ayaTN750CV8Compaq007912-001Asco103-833-1-D***ayaTN746BSTB1X0-0271-307MDCK100-5BlackSP400A-R2Cisco34-0667-01Exide101073070-0013664TRICONEX3721TRICONEX07DI92GJR5252400R010107DI92GJR5252400R410107AI91GJR5251600R020207AI91GJR5251600R4202FBM214FBM215FBM204卡件P0914SYFBM204端子P0916AGFBM204电缆P0916DBFBM241卡件P0914TGFBM241端子P0916ASFBM241电缆P0916FHFBM241C卡件P0914WMFBM241C端子P0916AWFBM241电缆P0916FH2094-BM02-S651CD2S2NDSQ***31IC697CMM742MTM-120-S-A20-120VATRICONEX5101TRICONEX5201TRICONEX5301TRICONEX5401TRICONEX5351FBM201FBM07BFBM237FBM242ENIMKSDCG-100AENIMKSDCG-100ENIMKSDCG-200ZENIMKSDCG-100DCMKSDCG-200ZOPTIMAOPT-100Z-00ENIMKSDCG-200ZHC-S02DCG-200ZDC22S-Z022000010AENIDCG-100ADCG4M-A001101010ENIDCG-100ADC26M-Z011100010CENIDCG-100ADCG2M-A001200020CENIDCG-100ADCG2M-A001200020MAENIDCG-200ZDC21M-Z041300110AENIDCG-200ADC22M-A041300111ALENIDCG-200ZDC22M-Z041300111AENIDCG-200ZDC22S-Z122000010AENIDCG-200ZDC24M-Z041300110AENIDCG-200ZDC24M-Z041300111AENIDCG-200EDCG-400E-00OptimaDCG-100ADCG1M-A001200020CDCG-100ADCG1M-A001100020VDCG-100ADCG1R-A021200021DCG-100ADCG2D-A001100020MADCG-100ADCG2D-A031100021DCG-100ADCG2S-A022000010DCG-100ADCG2S-A022001010DCG-100ADCG2S-A122000010RPG-50RPG-100DSQC6393HAC025097-001DSQC6793HAC028357-001DSQC633A***B板3HAC031851-001)