ADuC70xxBCPZxxI是美国
模拟器件公司(ADI)生产的基于 ARM7TDMI精密模拟
微控制器(MicroConverter),已经广泛地应用在光通 信领域,并扩展到
汽车行业、工业控制,以及
传感器行业。该芯片可以通 过USB转JTAG仿真器或USB转I2C下载器实现
固件下载,不仅需要昂贵 的
硬件支持,而且还需要使用者有相关开发经验以应付USB
接口所带来的 操作上的复杂性及异常。本发明所要解决的技术问题是,利用PC机并口实 现I2C硬件接口,利用PC机应用程序实现I2C
软件接口,具有低成本、高 可靠性、高易用性、高可移植性等特点,尤其是支持在线下载,方便了固 件的调试和升级。
本发明所要解决的技术问题是,提供一种低成本及简单实用的对 ADuC70xxBCPZxxI芯片实现固件的数据传输以及固件下载的方法,以及实 现前述数据传输和固件下载方法的总线下载器。
本发明解决所述技术问题采用的技术方案是,提供一种数据传输方法, 利用PC机并口和应用程序模拟I2C主设备,利用并口转I2C总线下载器的 两个端口分别连接PC并口和ADuC70xxBCPZxxI芯片I2C管脚进行固件的 下载。
进一步的说,通过应用程序实现PC并口与I2C接口的协议转换,与外 部设备的ADuC70xxBCPZxxI芯片以I2C协议进行通讯。
本发明还提供一种采用并口转I2C总线数据传输方法实现并口转I2C总 线固件升级的方法,包括以下步骤:对ADuC70xxBCPZxxI芯片进行初始 化;擦除原有数据;写入更新数据;校验数据。
本发明还提供一种总线下载器,并口第2引脚连接第一电平转换装置 的输入端,所述第一电平转换装置的输出端与I2C第一接口引脚相连;并口 第3引脚连接第二电平转换装置的输入端,所述第二电平转换装置的输出 端、I2C接口第3引脚和并口第12引脚连接于一点。
本发明的有益效果是利用PC机并口实现I2C硬件接口,利用PC机应用程 序实现I2C软件接口,由于器件少而且全是国产,具有低成本、高可靠性、 高易用性、高可移植性等特点,尤其是支持在线下载,方便了固件的调试 和升级。
以下结合具体实施方式和
附图对本发明作进一步的说明。
本发明利用PC机并口和应用程序来模拟I2C主设备,实现与 ADuC70xxBCPZxxI的I2C通讯。
本发明的系统连接示意图如图1,硬件原理图如图2。如图2所示,硬 件上采用NPN
三极管构成OC
门,以符合I2C规范所规定的连接方式。图 3是软件运行示意图。
本发明的应用程序完全兼容以下规范或协议:《Intel HEX File Format》、 《I2C Download Protocol for ADuC70xxBCPZxxI Models》和《THE I2C-BUS SPECIFICATION》。
按图1连接PC机并口到下载器并口,连接下载器I2C接口到ADuC70xxB- CPZxxI的I2C管脚。
所述下载器将硬件系统连接好以后,通过PC机应用程序模拟I2C时序, 以确保同ADuC70xxBCPZxxI的I2C进行通讯。应用程序界面如图4,顺序执 行“Open”,“Start”,“Erase”,“Program”,“Verify”,“Run”,即可把一个 hex文件数据下载到ADuC70xxBCPZxxI芯片中去。通过Open键打开需要下 载的hex文件,读入有效数据到一个数据缓冲区并显示在表格中,如果出错 会有错误提示;通过Start键实现与ADuC70xxBCPZxxI的握手同步确认后, 就可对ADuC70xxBCPZxxI进行擦除操作。擦除操作采用的是整
块flash擦除 方式,这样比逐页插除方式耗时更少。擦除完后通过Program下载数据到 ADuC70xxBCPZxxI中。下载完后可以进行校验,如果出错将会有出错提示; 如果校验成功,通过Run键,就可以立即执行刚下载到ADuC70xxBCPZxxI 中的固件。
总线数据传输方式是利用PC机并口和应用程序模拟I2C主设备,主设 备是利用应用程序产生模拟I2C
信号,外围ADuC70xxBCPZxxI芯片设备为 从设备,接收PC传输的数据。利用并口转I2C总线下载器的两个端口分别 连接PC并口和ADuC70xxBCPZxxI芯片I2C管脚进行数据的下载。PC机 并口第2引脚发送SCL信号经过第一电平转换装置V1到I2C接口第1引脚, PC机并口第3引脚发送SDA信号经过第二电平转换装置V2和I2C接口第 3引脚引出的信号合路,将SDA信号反馈至PC并口引脚12。
进一步的说,通过应用程序实现PC并口与I2C接口的协议转换,转换格 式参照《I2C Download Protocol for ADuC70xxBCPZxxI Models》,与外部 设备的ADuC70xxBCPZxxI芯片以I2C协议进行通讯。
本发明还提供一种实现并口转I2C总线固件升级的方法,包括以下步 骤:对ADuC70xxBCPZxxI芯片进行初始化、擦除原有数据、写入更新数 据、校验数据的操作。
本发明提供的总线下载器的结构方式如下:并口第2引脚连接第一电 平转换装置V1的输入端,所述第一电平转换装置V1的输出端与I2C第1 接口引脚相连;并口第3引脚连接第二电平转换装置V2的输入端,所述第 二电平转换装置V2的输出端与I2C接口第3引脚连接于A点,A点通过电 阻R5和并口第12引脚相连。
更进一步的说,第一电平转换装置V1包括一个NPN三极管Q1和两 个
电阻R1,R3,NPN三极管Q1的基极连接电阻R1作为第一电平转换装 置V1的输入端;电源通过电阻R3和NPN三极管Q1的集
电极连接于B点, B点作为第一电平转换装置V1的输出端;NPN三极管Q1的发射极接地。
更进一步的说,第二电平转换装置V2包括一个NPN三极管Q2和两 个电阻R2,R4,NPN三极管Q2的基极连接电阻R2作为第二电平转换装 置V2的输入端;电源通过电阻R4和NPN三极管Q2的集电极连接于C点, C点作为第二电平转换装置V2的输出端;NPN三极管Q2的发射极接地。
更进一步的说,并口第18、19、20、21、22、23、24、25引脚接地, 第1、4、5、6、7、8、9、10、11、13、14、15、16、17引脚悬空;I2C接 口第2引脚接地,第4引脚接电源。
以下是总线数据传输以及固件升级具体的功能描述。
关于“Open”功能的描述如下。ADuC70xxBCPZxxI中的固件是在对于 在keil uVersion3环境下编译生成的Intel HEX格式的烧录文件。Intel HEX 文件是记录文本行的ASCII文本文件,在Intel HEX文件中,每一行是一个HE- X记录由十六进制数组成的机器码或者静态数据,Intel HEX文件经常被用于 将程序或数据传输存储到ROM或EPROM等非易失性
存储器中。结合一个A -DuC7020的HEX文件实例,来说明本发明的应用程序如何实现HEX文件的 分析:
:020000040008F2
:1000000018F09FE518F09FE518F09FE518F09FE5C0
……
:00000001FF
第一行表明扩展线性地址记录为0008h;第二行表明该行数据记录的偏 移首地址为0000h,共10h个数据,分别是00,18,F0,9F,E5,18,F0, 9F,E5,18,F0,9F,E5,18,F0,9F,E5;C0是校验码。最后一行表明 该文件结束。由于ADuC70xxBCPZxxI的固件数据不会超过62k字节,所以 在应用程序中定义了一个62k字节的数组,其各个单元的内容由上述的偏移 地址所
指定的数据决定。
为了便于描述,本文把PC机称为上位机,把ADuC70xxBCPZxxI芯片称 为下位机。
关于“Start”功能的描述如下。下位机一旦进入下载模式,其P1.0和 P1.1管脚即被配置成从I2C器件管脚,且从I2C器件地址为04h。上位机发送 08h到下位机以表示协议开始。下位机接收到08h以后发送24字节的ID数据 包ADuC702x
-62 H5T表示响应;其中“ADuC702x” 为产品标识,“-62”对应器件内存大小,“H5T”是硬件和版本号,H代表硅, 5代表版本号,T代表修订号。
上位机收到ID数据包后就可以开始数据传输了,数据包格式见表1。 Start ID No.of Data Bytes Data 1 CMD Data 2->5 (Address:h, u,m,l) Data x (x=6 ->25) Checksum 07h 0Eh 5->255 ‘E’,‘W’, ‘V’or‘R’ h,u,m,l XX No of DataBytes +Data1+Data2->5 +∑Datax (2’s Comp)
表1数据传输格式
“Start ID”包括2个字节07H和0EH,以表示一个有效数据包开始。“No.of Data Bytes”表示需要传输的数据个数,最少为5,最多为255。“Data 1 CMD” 命令格式,其中E代表擦除,W表示写,V表示校验,R表示运行。“Data 2->5(Address:h,u,m,l)”表示要操作的32位FALSH/EE绝对地址,h 代表MSB,l代表LSB。“Data x(x=6->55)”即实际下载数据,数据格式 必须为Intel扩展的HEX格式。“Checksum”即校验和。
关于“Erase”功能的描述如下。擦除命令允许擦除FALSH的任何一页, 页地址由Data 2->5地址信息决定,例如擦除地址从0x00000000开始,需 要擦除00页,责擦除命令数据包格式如表2。 Start ID No.of Data Bytes Data 1 CMD Data 2->5 (Address:h,u,m,l) Data 6 (pages) Checksum 07h 0Eh 6 ‘E’ (45h) h,u,m,l x pages No of DataBytes +∑Data (2’s Comp)
表2擦除命令格式
关于“Program”功能的描述如下。写命令涉及到data 1+data 2→5+data x,下位机收到数据后就会立即将数据写入FLASH/EE,如果checksum不对或 者地址超出范围,下位机将会发送BEL信号,主机收到BEL信号后,应该立 即终止命令。下载只能重新开始。写命令格式如表3。 Start ID No.of Data Bytes Data 1 CMD Data 2->5 (Address:h,u,m,l) Datax (x=1->250) Checksum 07h 0Eh 5+No.of Data x (6->255) ‘W’ (57h) h,u,m,l … No of DataBytes +∑Data Bytes 1-515
表3写命令格式
本发明的应用程序在编程时,把62k字节数据分成了256页,每页248个 字节数据。鉴于I2C通讯异常的情况有可能发生(比如芯片虚焊,I2C线缆接 触不良,上位机异常关机等),所以在下载时,先不写首页,即保留80014h 地址内的内容为0xffffffff,待其他页都写入数据后,再写首页。那么即使下 载中途发生了什么不测而导致下载中断,下位机仍然可以被再次下载,否 则将导致该ADuC70xxBCPZxxI芯片报废。
关于“Verify”功能的描述如下。为了提高检测数据的纠错能力,需要 检验的数据从高5位移到了低5位,低3位被移到了高3位。下位机会自动恢 复数据正确的序位然后和写入到FLASH/EE里的内容进行比较,正确返回 06h,错误返回07h。校验命令格式如表4所示。
StartID No.of Data Bytes Data 1 CMD Data 2->5 (Address:h,u,m,l) Datax (x=1->250) Checksum 07h 0Eh 5+No.of Data x (6->255) ‘V’ (56h) h,u,m,l Complemented data bytes No of Data Bytes +∑Data Bytes 1-515
表4校验命令格式
关于“Run”功能的描述如下。所有数据下载完毕后,主机就可以发送 “运行”命令以使处理器从给定的地址开始执行用户程序代码,目前下位 机支持Flash/EE地址从(h,u,m,l=80000h或80001h)开始。用户代码运行 命令格式如表5所示。 Start ID No.of Data Bytes Data 1 (Command) Data 2->5 (Address:h,u,m,l) Checksum 07h 0Eh 05h ‘R’ (52h) h,u,m,l A9h
表5运行命令格式