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

📄 twi.h

📁 一个基于MEGA16的GUI
💻 H
字号:

#ifndef   TWI_H
#define   TWI_H
//------在此设定芯片型号------
//时钟定为外部晶振7.3728MHz,F_CPU=7372800
//定义了各种模式下的状态码列表(TWSR已屏蔽预分频位),本文后面附上中文描述

//管脚定义
#define  pinSCL				0					//PC0 SCL
#define  pinSDA				1					//PC1 SDA
//为保险起见,最好在SCL/SDA接上1~10K的外部上拉电阻到VCC。

#define fSCL				100000				//TWI时钟为100KHz
//预分频系数=1(TWPS=0)
#if F_CPU < fSCL*36
  #define TWBR_SET 			10;					//TWBR必须大于等于10
#else
  #define TWBR_SET  		(F_CPU/fSCL-16)/2;	//计算TWBR值
#endif

#define TW_ACT				(1<<TWINT)|(1<<TWEN)|(1<<TWIE)
//TWCR只能IN/OUT,直接赋值比逻辑运算(|= &=)更节省空间

#define SLA_24CXX			0xA0				//24Cxx系列的厂商器件地址(高四位)
#define ADDR_24C02			0x00
// AT24C02的地址线A2/1/0全部接地,SLAW=0xA0+0x00<<1+0x00,SLAR=0xA0+0x00<<1+0x01
#define SLAW                0xA0
#define SLAR                0xA1

//TWI_操作状态
#define TW_BUSY				0
#define TW_OK				1
#define TW_FAIL				2
//TWI_读写命令状态
#define OP_BUSY				0
#define OP_RUN				1


//TWI读写操作公共步骤
#define ST_FAIL				0	//出错状态
#define ST_START			1	//START状态检查
#define ST_SLAW				2	//SLAW状态检查
#define ST_WADDR			3	//ADDR状态检查
//TWI读操作步骤
#define ST_RESTART			4	//RESTART状态检查
#define ST_SLAR				5	//SLAR状态检查
#define ST_RDATA			6	//读取数据状态检查,循环n字节
//TWI写操作步骤
#define ST_WDATA			7	//写数据状态检查,循环n字节

#define FAIL_MAX			10	//重试次数最大值
extern struct str_TWI strTWI;
//---------------------------
//-----------4个I2总线公用函数, 可供其它I2总线器件的程序调用--------------
extern uint8 TWI_RW(uint8 sla,uint16 addr,uint8 *ptr,uint16 len);
#endif



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -