📄 sd2300.h
字号:
#ifndef SD2300_H
#define SD2300_H
//----- 要包含头文件 ----------------------------------------------------------
#include <avr/io.h> // AVR I/O 定义
//#include <avr/signal.h> // "signal" 宏定义
#include <avr/interrupt.h> // 中断支持
#include <avr/wdt.h> // 看门狗
#include <avr/pgmspace.h> // PGM支持
#include <util/delay.h> // delay
#include <avr/eeprom.h> // eeprom
#include "includes.h"
//#include "avrlibdefs.h"
//#include "avrlibtypes.h"
//SD2300设备地址
#define SD2K3_RTC_ADDR 0x64
#define SD2K3_RAM_ADDR 0xA0
//TWI波特率计算
//SD2300 使用100KHzIIC总线
//#ifndef F_CPU
// #define F_CPU 7372800 /* 7.3MHz processor */
//#endif
//设置 TWPS=0 即与分频系数为1 */
#define F_TWI 100000 /* 100KHz */
#define TWBR_SELECT (((F_CPU/F_TWI)-16)/2)
//TWSR 寄存器状态码
//(来自 avr-libc twi.h - 原始作者 Marek Michalkiewicz)
//主设备 Master
#define TW_START 0x08
#define TW_REP_START 0x10
//主发送器 Master Transmitter
#define TW_MT_SLA_ACK 0x18
#define TW_MT_SLA_NACK 0x20
#define TW_MT_DATA_ACK 0x28
#define TW_MT_DATA_NACK 0x30
#define TW_MT_ARB_LOST 0x38
//主接收器 Master Receiver
#define TW_MR_ARB_LOST 0x38
#define TW_MR_SLA_ACK 0x40
#define TW_MR_SLA_NACK 0x48
#define TW_MR_DATA_ACK 0x50
#define TW_MR_DATA_NACK 0x58
// 从发送器 Slave Transmitter
#define TW_ST_SLA_ACK 0xA8
#define TW_ST_ARB_LOST_SLA_ACK 0xB0
#define TW_ST_DATA_ACK 0xB8
#define TW_ST_DATA_NACK 0xC0
#define TW_ST_LAST_DATA 0xC8
// 从接收器 Slave Receiver
#define TW_SR_SLA_ACK 0x60
#define TW_SR_ARB_LOST_SLA_ACK 0x68
#define TW_SR_GCALL_ACK 0x70
#define TW_SR_ARB_LOST_GCALL_ACK 0x78
#define TW_SR_DATA_ACK 0x80
#define TW_SR_DATA_NACK 0x88
#define TW_SR_GCALL_DATA_ACK 0x90
#define TW_SR_GCALL_DATA_NACK 0x98
#define TW_SR_STOP 0xA0
// 其他 Misc
#define TW_NO_INFO 0xF8
#define TW_BUS_ERROR 0x00
// 命令和状态掩码 Masks
#define TWCR_CMD_MASK 0x0F
#define TWSR_STATUS_MASK 0xF8
// 定义返回值
#define I2C_OK 0x00
#define I2C_ERROR_NODEV 0x01
// SD2300 寄存器定义
#define SD2K3_CTRL_REG1 0x0E //控制寄存器地址1
#define AALE 7
#define BALE 6
#define SL2 5
#define SL1 4
#define TEST 3
#define CT2 2
#define CT1 1
#define CT0 0
#define SD2K3_CTRL_REG2 0x0F //控制寄存器地址2
#define T1224 5 //12、24小时制式选择
#define ADJ 4
#define XSTP 4
#define CLEN 3
#define CTFG 2
#define AAFG 1
#define BAFG 0
void twiInit(void);
void twiStop(void);
void twiStart(void);
void twiWriteByte(u08 c) ;
u08 twiReadByteACK(void);
u08 twiReadByteNACK(void);
void sd2300Init(void);
//u08 _rtcWriteNByte(u08 sla,u08 addr,u08 num,u08 *data);
//u08 _rtcReadNByte(u08 sla,u08 addr,u08 num,u08 *data);
u08 rtcWriteNByte(u08 addr,u08 num,u08 *data);
u08 rtcReadNByte(u08 addr,u08 num,u08 *data);
//u08 sramWriteNByte(u16 addr,u08 num,u08 *data);
//u08 sramReadNByte(u16 addr,u08 num,u08 *data);
void setDateTime(u08* datetime);
void getDateTime(u08* datetime);
/*
u08 readBufferParam(void);
u08 writeBufferParam(void);
//void sramBufferInit(void);
u08 sramBufferGetNByte(u08 numbytes, u08* data);
u08 sramBufferAddNByte(u08 numbytes, u08* data);
*/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -