用P89C664实现I2C总线大批量数据的自动存储_存储器论文
关键词:flash magic isp i2c p89c664
引言
在实际工作中,有些情况下可能需要对一些i2c接口发出的数据进行分析,如果数据较少则比较容易解决。比如可以直接把数据保存到单片机的ram中,然后通过led显示出来,但如果数据量很大,这种方法就很河取了。在这种情况下,想办法把大量的数据保存到电脑里是一个比较好的方法这样不但可以解决大批量数据的存储问题,同时也易于编辑、分析和打印。
但是,电脑的外设接口中是没有i2c接口的,因此需要对i2c部迟疑不决的数据进行转换,使之能发往电脑,实现数据的文件存储。综合各种因素考虑,采用uart串口的方式比较方便,因为串口技术简单、应用广泛、各种应用软件也较为丰富。
本文不仅介绍了如何实现i2c数据的转发和自动存储,同时也介绍了p89c664的isp功能,并给出了详细配合相关软件,完全可以省去一台价格不菲的编程器,实用性强。这非常适合业余自学单片机技术或者在家吵建立一个简单实用的开发系统。
1 p89c664单片机及isp、iap简介
p89c664是plilips公司一款优秀的51内核单片机芯片、带64kb的flash程序夏令、1792b的数据存储器、i2c硬件全工作方式接口、6 clocks/12 clocks可选、8个中断源/4级中断优先级、双dptr寄存器、pca以及iap、isp功能等,具体内容请参考相关资源。在philips的网站上可以下载到详细的技术资料及各种应用文档://www.semiconductors.philips.com/。
下面科简单的介绍一下isp、iap的概念。
isp(in system programming),即在系统编程。它允许mcu还在产品电路板上时,对其下载新的程序。这种技术的一个明优点是,不需要把mcu芯片从你的电路板上拆下来,再装到传统的编程器上来写入新的程序。你尽可以把具有isp功能的mcu芯片焊接在电路板上,应用更加可靠、方便。当然,你得把mcu的uart串口留出,并设计好简单的外围电路;同时还配有一个专用的isp软件以实现用户程序的直下载。这种专用的isp下载软件可以在各公司的网部上免费下载到。p89c664的isp软件可在philips公司的网站上下载。当然,如果你有兴趣也可以自己设计一个个性化的isp下载软件,因为philips公司对isp的各种编程指令是开放的。
iap(in application programming),即在应用中程序。就是说,mcu自己可以获取新的代码并对自己重新编程。这是一个极为有用的技术,比如可以通过internet、程控电话网等给你的产品远程升级,就像常见的杀毒软件可以自动升级一样。有了这项技术,你就可以利用现在的程控电话网、互联网等实现你的嵌入式系统远程自动升级,而无须传统的那种给客户邮寄芯片而带来的不便。
需要指出的是:isp和iap的核心技术是相同的,都是调用内部的标准程序对flash存储器进行擦除和重新编程。区别在于:isp由片内固化的一个默认的串行加载程序(boot loader)来完成这一动作;而iap则由用户在自己的程序中完成这一调用,这就为产品的远程升级提供了可能,甚至可以说是mcu应用技术的一个里程碑。
2 isp技术的应用
对于philips的mcu,其isp电路很简单,就是一个与计算机串口通信的电路(注:根据isp控制软件的不同电路会略有不同),电路如图1所示。
国外的嵌入式系统学会(embedded systems academy)提供了一个isp软件flash magic,可以在该组织的网站上下载到,网址为//www.esacademy.com/。上面的连接电路也是与该软件配套使用的。这是一款很优秀的软件,操作方便、功能强大,并且该软件支持philips公司的几乎所有带isp的器件。另外,philips公司也免费提供isp软件,但其易用性方面不如flash magic。
flash magic的安装过程与标准的windows软件类似,在此不再详述。安装完成后,启动flash magic后,有图2所示画面。
紧接着flash magic软件将用默认的设置尝试连接isp芯片,如图3所示。
请注意状态栏中的显示“attempting to connect...”,说明flash magic正在尝试着连接isp装置。如果你已经用flash magic下载过程序并且没有更改isp装置的话,则很快就可连接上。如果你是第一次使用,则需要进行一些必要的针对性设置,以便flash magic能正常连接带isp的mcu。如果连接不上,flash magic将弹出图4所示的提示框。
请点击“取消”!然后在软件的主界面中选择菜单options/advanced options...,如图5所示。
此时弹出设置框,请切换到hardware config选项卡,如图6所示。
使“use dtr and rts to control rst and psen”、“keep rts asserted while com port open”选项有效即可,其它都不用更改,直接点“ok”确定。
flash magic的主界面上有清晰的1、2、3、4、5数字指示。这1~5的数字不令表示5个不同的区域,同时也不是下载程序的5个步骤。当然如果你已经设置好了,每次下载后就可直接点"start"按钮即可。
在区域1中,我们需要设置这里的每一个选项,在这里我们是以p89c664为例的,如图7所示。
com port:flash magic支持com1、com2、com3和com4共4个串口,在过大多数电脑只有com1和com2口,主选择正确的com口,该com就是连接用户板的那个串口。
baud rate:这里设置程序的下载速率,根据情况选择合适的值,不易太大,否则会因为干扰而无法连接,通常情况下用19200bps就比较合适了。
device:选择isp器件型号,在flash magic的1.81版中,共支持35种isp器件,这里选择p89c664。
oscillator frea.(mhz):在这里请填入你用户板上mcu用兵晶振频率值。
其它部分类似,可以自己下载下一个flash magic,新自操作一下就会很清楚了。
除了下载用户程序外,flash magic还提供了其它的一些功能,都集中在“isp”菜单中。可以亲自去试一下,以后你会发现flash magic真的很好用。有了它一定能让你的开发工作事半功倍,而且可以省去一台昂贵的编程器,对单片机的初学者尤为适用。
3 i2c接收数据并转发到电脑
由于p89c664带有硬件i2c接口,因此我们用它作为从器件接收i2c总线上的数据,philips公司在相关的技术资料中给出了标准的i2c接口控制程序包。其实也可根据p89c664的资料自己来编写i2c接口的控制程序,不过philips公司提供的参考程序很值得我们学习、研究。下面程序中用的就是phlips公司推出的i2c接口控制程序,为了更适用于接收大批量的i2c总线数据,我们对其中的一部分代码作了必要的更改,如果需要标准的控制程序请自己从philips的网站上下载。
程序的流程是首先设置好i2c接口的地址以及各sfr的值,然后启动i2c接口,并把接收到的数据通过串口发往电脑,在电脑上启动另一串口调试软件并做好相关的设置,即可将i2c总线的数据接收并保存下来。在这里,我们的用户板作用相当于一个协议转换装置,即把i2c总线的数据流转换为uart的数据流并发往电脑。
请注意:一般我们的isp下载、串口调试是公用同一部分电路和同一个串口的。因此,flash magic和串口调试软件不能同时启动,否则将出错,请在下载完程序后关闭flash magic软件再启动串口调试软件。
由于串口一直以来都是各种计算机系统所提供的一个标准接口,因此串口中的调试软件在网上随处可见,当然你若有兴趣也可自己设计一款串口调试软件。
在这里我们采用的是一个名为串口调试器,名comport debuger的软件,比较好用,并且具有大批量数据的自动保存功能,这个功能很重要。该软件启动后的界面如图8所示。
在发送区和接收区中显示有软件作者的网站,大家可以去那里下载最新版。
在用户板程序运行并对串口调试设置好后即可点“打开串口”,此时在接收区将显示通过串口发来的各种数据。
网站(www.dpj.com.cn)给出该转发装置中p89c664的完事源泉程序,程序中附有必要的注释。
结语
本文较为详细的介绍了p89c664 isp功能的应用,及利用简单的在线下载装置编程实现i2c总线的数据转发和保存;同时给出了详细的i2c硬件接口的初始化及整套装置的源程序。可用于各种大批量i2c总线数据的自动保存、编辑、分析、打印等,也可将该置用于一般的开发中,测试你的程序是否满足要求等。