博士2019-01 IIC I2C 時鐘芯片 GX8563 兼容PCF8563

一款可以看得見IIC的實時時鐘芯片

在這裏插入圖片描述

簡介

GX8563 是一款CMOS實時時鐘芯片,用於低功耗領域。可編程時鐘和中斷輸出。通過I2C通信,最大傳輸速率100 kbit/s。每個字節傳輸結束後,內部計數器自動加一。

特性

■ 基於外部32k晶振,芯片提供年,月,日,工作日,小時,分鐘,秒。
■ 世紀標誌
■ 工作電壓2.5 V to 5.5 V
■ 低工作電流:在電壓爲3.0 V 、溫度爲25 °C時,僅需1.5 µA。
■ 100kHzI2C通信速率 (在電壓爲 2.5 V 到 5.5 V)
■ 可編程時鐘輸出 (32.768 kHz, 1024 Hz, 32 Hz 和1 Hz),開漏輸出
■ 報警和定時功能
■ 集成了晶體振盪器
■ 內部電源復位
■ I2C地址爲: 讀 A3h, 寫A2h
■ 開漏的中斷輸出

應用

■ 手機
■ 便攜儀器
■ 電子計量
■ 電池產品

管腳

OSCI
OSCO
INT
GND
SDA
SCL
CLKOUT
VDD

架構

在這裏插入圖片描述

裸片

在這裏插入圖片描述
在這裏插入圖片描述

封裝

目前可供樣片封裝形式爲msop8,如下圖所示

在這裏插入圖片描述

樣片圖片
在這裏插入圖片描述

測試

在這裏插入圖片描述

目前測試結果

目前提供樣片中,可留言索取,謝謝

代碼

#include "C8051F320.H"
#include "lcd.h"
#include "INIT.h"



sbit scl		= P2^7;  
sbit chip_vcc	= P2^5; 
sbit chip_gnd	= P2^3; 
sbit sda		= P2^1; 

#define I2C_Addr	0xA2


void I2C_init(){
	P2MDIN  = 0xff;
	P2MDOUT = 0x28;

	chip_vcc = 1;
	chip_gnd = 0;    							
	scl = 1;                          
	sda = 1;							
}

void I2C_delay(void) {
//    unsigned short a;
//	for(a=2000; a>0; a--);				//  1k

    unsigned char a;
//	for(a=200; a>0; a--);				// 10k
//	for(a= 97; a>0; a--);				// 20k
	for(a= 35; a>0; a--);				// 50k
//	for(a= 15; a>0; a--);				//100k
//	for(a=  5; a>0; a--);				//200k
//	;									//400k

}

void I2C_start () {
	I2C_delay();
	sda = 1;
	I2C_delay();
	I2C_delay();
	scl = 1;
	I2C_delay();
	I2C_delay();
	sda = 0;
	I2C_delay();
	scl = 0;
	I2C_delay(); 
}

void I2C_stop() {
	sda = 0;
	I2C_delay();
	scl = 1;
	I2C_delay();
	sda = 1;
	I2C_delay();
	I2C_delay();
	I2C_delay();	
}

void I2C_write_bit( unsigned char wdata) {
	sda = wdata;
	I2C_delay();
	scl = 1;
	I2C_delay();
	I2C_delay();
	scl = 0;
	I2C_delay();
}

void I2C_write_byte( unsigned char wdata) {
	unsigned char i;
	for (i=0;i<8;i++) {
		I2C_write_bit((wdata<<i)&0x80);
	}	
}

unsigned char I2C_read_bit () {
	unsigned char i;
	sda = 1;
	I2C_delay();
	scl = 1;
	I2C_delay();

	i = sda?1:0;

	I2C_delay();
	scl = 0;
	I2C_delay();

	return i;
}

unsigned char I2C_read_byte() {
	unsigned rdata, i;
	rdata=0;
	for (i=0;i<8;i++) {
		rdata <<=1;
		if (I2C_read_bit())
			rdata |= 0x01;
	}
	return rdata;
}

unsigned char I2C_check_ack() {
	return (I2C_read_bit());
}

void I2C_send_ack() {
	I2C_write_bit(0);
	sda = 1;
}

void I2C_send_nack() {
	I2C_write_bit(1);
}


void I2C_ID(unsigned char RW){
	I2C_write_byte(I2C_Addr + RW);
 
}


void DiaplayIICReg(unsigned char y){
	unsigned char i;
	Set_LCDYXChar(y+0,1);		
	ToLCDS(" C1:");	ToLCDB(dat[0]);
	ToLCDS(" C2:");	ToLCDB(dat[1]);
	Set_LCDYXChar(y+1,1);			font_color = purple;	
	ToLCDS("  s:");	ToLCDB(dat[2]);
	ToLCDS("  m:");	ToLCDB(dat[3]);
	ToLCDS("  h:");	ToLCDB(dat[4]);
	ToLCDS("  D:");	ToLCDB(dat[5]);
	Set_LCDYXChar(y+2,1);
	ToLCDS("  W:");	ToLCDB(dat[6]);
	ToLCDS("  M:");	ToLCDB(dat[7]);
	ToLCDS("  Y:");	ToLCDB(dat[8]);	font_color = green;
	Set_LCDYXChar(y+3,1);	
	ToLCDS(" AW:");	ToLCDB(dat[12]);
	ToLCDS(" AM:");	ToLCDB(dat[9]);
	ToLCDS(" AH:");	ToLCDB(dat[10]);
	ToLCDS(" AD:");	ToLCDB(dat[11]);	
	Set_LCDYXChar(y+4,1);
	ToLCDS(" FE:");	ToLCDB(dat[13]);	
	ToLCDS(" TE:");	ToLCDB(dat[14]);	
	ToLCDS(" TIMER:");ToLCDB(dat[15]);	

}

void I2CWrite() {
	unsigned char i;

	for(i = 0; i < 16; i++){
		dat[i] = 0;
	}	
	dat[2] = 0x56;
	dat[3] = 0x59;
	dat[4] = 0x23;
	dat[5] = 0x31;
	dat[6] = 0x06;
	dat[7] = 0x12;
	dat[8] = 0x11;

	dat[13] = 0x83;

	Set_LCDYXChar(1,1);		ToLCDS("W8563:");	DiaplayIICReg(2);
	
	I2C_start();
	I2C_ID(0);				I2C_check_ack();
	I2C_write_byte(0);		I2C_check_ack();
	for(i = 0; i < 16; i++){I2C_write_byte(dat[i]);		I2C_check_ack();	}
	I2C_stop();
	
}

void I2CRead() {
	unsigned char i;

	I2C_start();
	I2C_ID(0);				I2C_check_ack();
	I2C_write_byte(0);		I2C_check_ack();
	I2C_stop();

	I2C_start();
	I2C_ID(1);				I2C_check_ack();
	for(i = 0; i < 16; i++){
		dat[i] = I2C_read_byte();	
		if(i < 15)	I2C_send_ack();
		else		I2C_send_nack();
	}
	I2C_stop();
	

}


在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章