您当前的位置:五五电子网电子知识电子知识资料仪器仪表读写器利用PC机串行接口读写24C08数据 正文
利用PC机串行接口读写24C08数据

利用PC机串行接口读写24C08数据

点击数:7659 次   录入时间:03-04 11:35:11   整理:http://www.55dianzi.com   仪器仪表读写器

  24C08主要用于存储系统设置参数的集成存储电路。由于现在的电子产品大多使用了计算机技术,通电初期主控电路需要获得一些系统初始数据(开机时间、整机电路配置等一些系统参数),而这些参数的设置起来较为专业,也很繁琐,不是每个人都能做好的,所以就有了这样一类存储器电路。在电子产品的调试过程中可以将系统所需参量集中保存写入存储器件之中,以后每次开机时都可以直接调用。这样不但避免了因为设置出现偏差可能导致的产品无法使用,也可免去每次开机重新进行设置的麻烦。这种类型的存储器容量一般都不大,只是用来储存系统正常工作所需的一些较为重要的参量。一件产品使用年头久了,储存数据容易出现问题,这时整机电路就会出现功能异常,或者完全不能工作。这样就需要我们对检查储存器数据进行修正,或者重新写入了。下面就以24C08为例介绍一下此类IIC总线存储器数据读取和写入的一般方法。下图即是这种读写工具的实际电路构成。

24C08存储电路

  这种24C08的数据读写工具由单片机主控电路与电脑两个相对独立的部分组合而成。

  做为一个功能齐全的存储器读写电路,不能没有一个可视化的介面,所以电脑在这里最大的功能就是起到直观显示编缉24C08数据的作用。单片机依然使用比较常见的51系列中的89S51。将编制好的读写程序写入内部便好了。在电脑一方,需要一种功能全面的串口调试软件配合,这里使用PORTTEST这种串口调试工具。单片机与电脑之间的联机通讯通过RS232串口完成。RS232接口芯片采用MAX3232,MAX3232的最大数据传输率低于1Mbps,而24C08的总线最高时钟频率400KHz,所以双方的传输速率还是很相称的。

  这里采用RS232通讯方式中最简单的发送、接收、地端三线传输的方式。

  单片机89S51内部具有一个全双工异步通讯控制器。所谓的全双工就是说通讯双方的发送、接收两种工作可以同时进行,由系统内部电路自动进行协调,可以做到互不干扰。

  由于RS232通讯多数情况下不采取同步传输的方式,而是由通讯双方事先对数据格式以及传输速率这两种异步传输必要的两种参量进行约定,

  在实际通讯过程中双方依约定各自产生相应的时钟信号进行同步,来实现数据的识别。应用中,双方的时钟将不可能做到绝对的统一,总是会有一定差异,主要包括中心频率的差异与时钟频率的漂移。电子振荡器的频率虽然非常非常稳定,但是随环境气温等变化会产生一定波动。这种频率波动极为微小,而且仅是围绕中心频率的窄幅波动,所以双方时钟自身的频率漂移对异步传输的影响可谓微乎其微,完全可以忽略不计的。但是这两种时钟中心频率的差异是固定不变的。虽然在异步通讯的初始化期间两种时钟被同步,但是随时间推移它们的相位差又会逐步拉大,达到一定程度,必然会导致双方的数据传输出现混乱。

  那时,传递的信息将不能正确识别。所以RS232异步通讯通常采用一种10位异步传输的方式。这是一种单字节数据传输方式,即由数据发送方先送出一位起始信号、随后发送8位1个字节的数据、完成后立即发送一位停止信号,以这样一个过程做为一次完整的异步数据传输。当发送下一位数据时,重新进行启动同步。这样的做法,将把双方时钟差异限定在十个时钟周期之内,只要双方时钟误差保持在5%以内,数据传输基本上不会出错。付出的代价是传输速率降低。但是用在对传输速率要求不高,且数据量不大的场合还是值得的。

  由于标准的RS232电平是将(-3)-(-15V)的电压表示为高电平,3-15v的电压作为低电平的,所以电脑的串口都采用12V的供电电压,而单片机都是使用5V乃至更低的工作电压,只能发出TTL或CMOS逻辑电平。这样它们之间就还需要一种接口电路来承担逻辑电压转换工作,同时要保证不会影响到异步传输的速度与质量。集成电路MAX3232是专用的RS232电平转换电路,可以很好地完成这一任务。它与RS232在引脚排列与功能方面完全兼容,只是外围元件参数稍有差异。

  24C08的存储容量为8Kbit,1024字节,这里对它的数据读取采用了一种连续的方式。24C08这种数据读写模式可以简要概括如下图所示。

147852

 



www.55dianzi.com

  24C08可以储存1024个字节的数据,1024个字节的寻址编码要用10位的二进制数据来表示,所以对24C08的读取与24C02有些不同,它的寻址地址超过8位,所以须分两次发出,10位二进制地址的最高两位B9、B8紧随芯片选择位A2(A2与芯片第3脚相对应)发出,剩余的八位地址数据做为一个完整的字节,在24C08对单片机指令做出响应后,随后发出。24C08读取到两字节数据后,内部相应地址储存的数据将在串行时钟配合下,移位串行从SDA引脚输出。

  此类存储器的读取都比较简单,采用连续的方式可以提高程序执行的效率。在连续读取模式下,单片机完整读到每一字节数据后必须做出应答,由24C08识别后,控制内部地址存储器自动加1,下一地址所储存的数据就会自动移位输出。

  不断重复这一过程,直至单片机停止回应,并发出停机信号,24C08进入待机,单片机也就完成了对24C08内部数据的读取工作。在对24C08进行数据读取时,如果没有发出寻址地址数据,24C08将始终从上一次读写结束后内部地址寄存器保留的地址数据开始进行读取。

  由于数据写入需要的时间要比读取所用的时间长得多,所以大多存储电路的写入方式相对读取也都要复杂得多,24C08也不例外。它的单字节读写原则与24C02一致,只是由于容量不同,24C08寻址位要多出两位,这里就不再重述了。

  为了提高程序效率,这里对24C08的数据写入也是采用的连续写入方式。连续写入的方式与连续读取的方式截然不同。在这种连续写入方式下,24C08只能一次性写入长度不超过16字节的数据;而24C08的连续读取却是没有任何限制的,可以无限地循环下去。

  下图为24C08的这种数据页写入格式的详图。在对24C08进行数据写入时,寻址数据是必须的,24C08的数据写入是一个相对独立的过程。24C08内部具有独立的数据寄存器电路,在连续写入过程中,24C08将把接收的字节数据依次序先存在这些寄存器中,如果发送方发出的数据长度超过了16字节,16位寄存器将产生循环移位,先期发出的数据将被复写,直至收到发送方传来的停机信号,接收完成,最后接收的16字节数据被保留,之后24C08正式进入真正的写入过程。此时外部总线上任何的电压变化都不会得到响应,包括单片机发出的标准总线起动信号。具体实现方法就是使SDA线维持高电平,使单片机得不到应答进入等待状态,直至24C08完成数据的写入工作,所以单片机起动IIC总线通讯过程时,总要以24C08是否做出应答做为进入下一步骤的依据,而进入了正式读写过程后便不需要如此了。16字节数据的写入周期,大约要占用10ms的时间。

 

  24C08各引脚功能描述如下,它的1、2、7脚都是空脚,使用中一般都直接接地。3脚是24C08唯一的一位芯片选择位,所以在同一条IIC总线上只可以同时挂接两片24C08存储器。24C08的4、8两脚为芯片的供电端。采用5V的工作电压时,串行时钟的频率最高可以达到400KHz.在实际使用中,为了保证24C08的稳定工作,通常要通过在汇编程序中插入空操作这种做法,来降低同步时钟频率,以保证与24C08的时钟频率相匹配。5、6两脚分别为24C08的SDA、SCL两端,这是IIC总线中仅须的两条数据通道。一般使用中都是需要通过外接两只上拉电阻来维持两脚的静态输出为高电平。

  89S51的异步通讯接口虽然是全双工的,由于使用简单的三线通讯方式,要注意做好双方传输速度的协调工作。单片机采用11.0592MHz的晶振,它的指令周期约为1微秒。然而单片机在异步接收的同时还要承担将电脑传输的数据写入24C08中这个任务。这种简单的三线异步通讯,电脑的数据发送将严格按照约定进行,而不理会单片机对24C08的数据写入是否已经完成。

  芯片内部RS232接口对数据的接收自动完成的,但不会将接收的数据主动传送给单片机,在实际读取过程中,程序必须预留适当的时间来完成对异步接收标志位Rl的检测与控制。如果写入耗费的时间太多,则单片机RS232接口收到的数据将得不到及时处理,而接收控制位Rl不能及时清零,电脑侧发送的数据也将会丢失。所以异步传输的速率设置就比较重要了,设置快了,必将导致双方RS232接口数据传送不能正常进行和24C08数据写入出错。那选择多少的传输速率才算合适呢?单片机主要是通过串口控制寄存器SCON的接收中断位Rl的指示来完成数据接收的。在单片机RS232接口接收完一位完整的1字节数据后,接口自动将Rl置位,指示单片机对接收数据进行处理并要求单片机及时清除Rl位,以便RS232接口可以进入下一次数据接收过程。其中的关键已经很明显了,就是要求单片机必须在两次单字节异步数据传输的中间时间及时完成对24C08的16字节数据写入工作,并转入对Rl信号的监测工作。综合以上个因素和实际调试结果,将RS232的传输速率设为9600bps比较恰当。

[1] [2]  下一页


本文关键字:接口  仪器仪表读写器电子知识资料 - 仪器仪表读写器