用P89C664实现I2C总线大批量数据的自动存储

发布者:脑电风暴最新更新时间:2012-11-23 来源: 单片机及嵌入式系统应用 关键字:P89C664  I2C总线  自动存储 手机看文章 扫描二维码
随时随地手机看文章

引言

在实际工作中,有些情况下可能需要对一些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的网站上可以下载到详细的技术资料及各种应用文档:http://www.semiconductors.philips.com/。


    下面科简单的介绍一下ISP、IAP的概念。

ISP(In System Programming),即在系统编程。它允许MCU还在产品电路板上时,对其下载新的程序。这种技术的一个明优点是,不需要把MCU芯片从你的电路板上拆下来,再装到传统的编程器上来写入新的程序。你尽可以把具有ISP功能的MCU芯片焊接在电路板上,应用更加可靠、方便。当然,你得把MCU的UART串口留出,并设计好简单的外围电路;同时还配有一个专用的ISP软件以实现用户程序的直下载。这种专用的ISP下载软件可以在各公司的网部上免费下载到。P89C664的ISP软件可在Philips公司的网站上下载。当然,如果你有兴趣也可以自己设计一个个性化的ISP下载软件,因为Philips公司对ISP的各种编程指令是开放的。[page]


    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,可以在该组织的网站上下载到,网址为http://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所示。[page]

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总线数据的自动保存、编辑、分析、打印等,也可将该置用于一般的开发中,测试你的程序是否满足要求等。

关键字:P89C664  I2C总线  自动存储 引用地址:用P89C664实现I2C总线大批量数据的自动存储

上一篇:爱特梅尔提供2.4GHz ISM频带应用无线微控制器产品
下一篇:非易失闪存技术NAND Flash内存设备的读写控制设计

推荐阅读最新更新时间:2024-03-16 13:13

单片机模拟I2C总线读写EEPROM(24CXX)程序二
昨天实现了字节的读写操作(前一篇程序一),今天实现了页写和连续读的操作。 电路不变,下面是仿真电路,只不过P2口的数码管由观测程序执行到哪一步改为查看接收缓冲区的数据。 程序如下: #include reg51.h #define unit unsigned int #define uchar unsigned char uchar num=4; uchar idata sendbuf ={0x96,0x84,0xd5,0x63}; uchar idata recivebuf ; sbit scl=P0^0; sbit sda=P0^1; sbit led0=P2^0; sbit led1=P2^1; sbi
[单片机]
单片机模拟<font color='red'>I2C总线</font>读写EEPROM(24CXX)程序二
P87LPC764单片机的I2C总线显示电路
摘要:I2C总线是Philips公司推出的芯片间串行传输总线。目前,已有不少大电气公司半导体厂商推出了不少带有I2C总线接口的单片机。本文介绍一种利用Philips公司生产的P87LPC764单片机作为I2C总线控制器与I2C总线显示器件SAA1064构成的I2C显示电路,并给出相应的程序清单。 关键词:I2C总线 P87LPC764单片机 SAA1064 显示电路 I2C总线是Philips公司推出的芯片间串行传输总线。它以串行数据线(SDA)和串行时钟线(SCL)2根连线实现了完善的全双工同步数据传送,可以极方便地构成多机系统和外围器件扩展系统。关于I2C总线的结构和工作原理详见参考文献1。 一、P87LPC764单片机
[应用]
采用I2C总线的ADS1100型16位模/数转换器的设计
  ADS1100是采用2.7V~5.5V单电源供电的连续自校准模/数(A/D)转换器。它具有分辨率、接口简单、比例放大、功耗低、体积小等优点。ADS1100采用电源电压为基准电压,可按比例进行A/D转换,同时带有差分输入且具有高达16位的分辨率。   ADS1100每秒可采样8、16、32或128次以进行A/D转换,并提供I2C端口与外部通信。片内可编程增益放大器(PGA)能提供高达8倍的增益,允许对小信号进行测量。ADS1100有二种工作方式:单周期转换方式和连续周期转换方式。在单周期转换方式中,ADS1100进行一次A/D转换后将自动掉电以减少电流消耗。   ADS1100的主要特点如下:   ·16位无漏码;   ·可
[单片机]
采用<font color='red'>I2C总线</font>的ADS1100型16位模/数转换器的设计
I2C总线数字式温湿度传感器SHT11及其在单片机系统的应用
摘要:SHT11是瑞士Sensirion公司生产的具有I2C总线接口的单片全校准数字式相对湿度和温度传感器。该传感器采用独特的CMOSens TM技术,具有数字式输出、免调试、免标定、免外围电路及全互换的特点。文中对传感器的性能特点、接口时序与命令进行了详细的阐述,给出了SHT11与单片机的接口电路及相应程序。 关键词:数字式;温湿度传感器;I2C总线;单片机 1 概述 温湿度的测量在仓储管理、生产制造、气象观测、科学研究以及日常生活中被广泛应用,传统的模拟式湿度传感器一般都要设计信号调理电路并需要经过复杂的校准和标定过程,因此测量精度难以保证,且在线性度、重复性、互换性、一致性等方面往往不尽人意。SHT11是瑞士Sens
[单片机]
模拟I2C总线软件包(C51)
/****************************************************************************** I2C.H 标准80C51模拟I2C总线程序头文件 ******************************************************************************/ #ifndef I2C_H #define I2C_H //定义I2C操作模式 #define I2C_RECV 0 /* 接收模式 */ #define I2C_SEND 1 /* 发送模式 */ #define I2C_SrRECV 2
[单片机]
AVR单片机I2C总线实验
AVR单片机I2C总线实验。 1、用24C02记录CPU启动次数,并在PB口上显示出来。 2、内部1 M晶振,程序采用单任务方式,软件延时。 3、进行此实验请插上JP1的所有8个短路块,JP7(LED_EN)/PC0/PC1短路块。 4、通过此实验,可以I2C总线操作有个初步认识。 */ #include "iom16v.h" extern unsigned char twi_write(unsigned char addr, unsigned char dd); extern unsigned char twi_read(unsigned char addr, unsigned char *dd); /*延时函数*/
[单片机]
用Verilog HDL实现I2C总线功能
开发FPGA时,利用EDA工具设计芯片实现系统功能已经成为支撑电子设计的通用平台,并逐步向支持系统级的设计方向发展。在软件设计过程中,越来越强调模块化设计。I2C总线是Philips公司推出的双向两线串行通讯标准,具有接口线少、通讯效率高等特点。把I2C总线设计成相应的模块,有利于相关FPCA的开发。 目前有一些介绍相关开发的资料,但都是利用VHDL语言或AHDL语言实现的。本文给出利用Verilog HDL语言设计的I2C总线模块。 1 I2C总线概述 I2C总线系统由两根总线即SCL(串行时钟)线和SDA(串行数据)线构成。这种总线可以设计成很多种通讯配置,但本文只讨论主从系统的应用。主器件控制总线通讯,开始/结束传送
[嵌入式]
I2C总线EEPROM实现
开发板是fl2440板子。。跑的Linux3.0内核 这里的EEPROM只是初步的实现。。并没有具体的分析函数。。以后会具体的分析。。 1.修改内核 改make menuconfig Device Drivers --- * I2C support --- --- I2C support Enable compatibility bits for old user-space
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved