X5045是美国XICor公司生产的带有可编程μP监控器的CMOS串行EEPROM,采用SPI串行外设接口方式,它将复位、电压检测、看门狗定时器和块锁保护的串行E2PROM功能集成在一个芯片内,适合于需要现场修改数据的场合,广泛应用于仪器仪表和工业自动控制等领域。
X5045与89C51的接口电路如下图所示。
单片机与X5045接口软件主要包括芯片初始化、内部E2PROM数据的读写和看门狗操作等,主要由以下程序构成。
·voidwrite_byte():用于实现向X5045中写入8位地址或数据。
·unsignedcharread_byte():实现从X5045中读取8位数据。
·voidx5045_start():启动X5045操作。
·voidx5045_end():结束X5045操作。
·unsignedcharx5045_read_status():实现读X5045的状态寄存器的功能。
·voidx5045_write_status():对状态寄存器中的BL1,BL0,WD1,WD0进行设置。
·unsignedcharread_addr_data():读取X5045指定地址EEPROM中的数据。
·voidwrite_addr_data():向X5045指定地址的EEPROM中写入数据。
·voidreset_wdt():复位看门狗功能。
程序中端口宏定义如下:
(1)函数voidwrite_byte()。
实现向X5045中写入8位数据,写入顺序是高位在前,低位在后,程序代码如下:
(2)函数unsignedcharread_byte()。
实现从X5045中读取8位二进制数据,注意读取时先读到的是高位,程序代码如下:
(3)函数voidx5045_start()和voidx5045_stop()。
使用单片机的I/O口模拟实现时序时,在时序开始和结束时总线需要做好一定的准备,程序中通过函数x5045_start()和x5045_stop()实现,程序代码如下:
(4)函数unsignedcharx5045_read_status()。
x5045_read_status()实现读取X5045状态寄存器的功能,单片机发出读状态寄存器的命令,然后再从X5045中读取1个字节的数据即状态寄存器的内容,注意高两位无效,程序代码如下:
(5)函数voidx5045_write_status()。
对状态寄存器中的BL1、BL0、WD1、WD0进行设置,实现向X5045状态寄存器中写指令的功能,注意写操作之前要先使能写操作,程序代码如下:
(6)函数unsignedcharread_addr_data().
函数read_addr_data()实现从制定地址中读取数据的功能,入口地址最高为9位。如果读取的数据超出了一页,则读命令中需要将A8位置为1,然后再执行读操作,程序代码如下:
(7)函数voidwrite_addr_data()。
函数write_addr_data()实现向制定地址中写数据的功能。如果写数据的地址超过了一页,注意要将写操作指令中的A8位置1,然后再执行写操作,程序代码如下:
(8)函数voidreset_wdt()。
函数reset_wdt()实现复位X5045内部看门狗定时器(喂狗)的功能,程序代码如下:
各类SPI总线的器件,由于不同的生产厂商,时钟的频率指标也各不相同,而且数据的输入/输出格式有低位在前的,有高位在前的,因此用户使用时一定要仔细阅读各器件的数据手册。
调试时,注意X5045内部有看门狗功能,在系统进行调试时,应首先关闭看门狗功能,待程序调通后再打开看门狗定时器。
注意每一次写操作前,先写使能,即将状态寄存器中的WEL置1。
本文关键字:软件 总线技术,电子知识资料 - 总线技术