⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sd2300.h

📁 AVRMEG32编写的一个项目代码,里面包含一般应用的模块.
💻 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 + -