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

📄 twi_drv.h

📁 Atmel AVR mega324p 的IIC驱动
💻 H
字号:
#ifndef __TWI_DRV_H__
#define __TWI_DRV_H__

//TWI状态定义
//MT 主方式传输  MR 主方式接收
#define START 0x08 
#define RE_START 0x10
#define MT_SLA_ACK 0x18
#define MT_SLA_NOACK 0x20
#define MT_DATA_ACK  0x28
#define MT_DATA_NOACK 0x30
#define MR_SLA_ACK  0x40
#define MR_SLA_NOACK 0x48
#define MR_DATA_ACK 0x50
#define MR_DATA_NOACK 0x58

#define TW_START 0x08 
#define TW_RE_START 0x10
#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_MR_SLA_ACK  0x40
#define TW_MR_SLA_NACK 0x48
#define TW_MR_DATA_ACK 0x50
#define TW_MR_DATA_NACK 0x58
#define Page0_rd 0x51//0xa1
#define Page0_wr 0x50//0xa0
#define Page1_rd 0x53//0xa1
#define Page1_wr 0x52//0xa0
#define Page2_rd 0x55//0xa1
#define Page2_wr 0x54//0xa0

//TWI中断处理(主机模式读和写,以访问AT24C02为例)
#define EE_READ   	0xf0
#define EE_READ_OK  0x50
#define EE_WRITE    0x0f
#define EE_WRITE_OK 0x05
#define EE_WRITE_REG 0xa5
#define EE_WRITE_FAULT 0x30

//常用TWI操作(主模式写和主模式读)
#define Start()    	  (TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN)|(1<<TWIE))
#define Stop()     	  (TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN)|(1<<TWIE))
#define Wait()	   	  {while(!(TWCR&(1<<TWINT)));}
#define TestAck() 	  (TWSR&0xf8)
#define SetAck()	  (TWCR|=(1<<TWEA))
#define SetNoAck()    (TWCR&=~(1<<TWEA))
#define Twi()	  	  (TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWIE))
//#define Write8Bit(x)  {TWDR=(x);TWCR=(1<<TWINT)|(1<<TWEN);} 
#define TWI_START()            (TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN)) 
#define TWI_RESTART()          (TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN)) 
#define TWI_STATUS()           (TWSR&0xf8) 
#define TWI_LOADDATA(x)        do{TWDR=(x);TWCR=(1<<TWINT)|(1<<TWEN);}while(0) 
#define TWI_STOP()             TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO)  
#define TWI_WAIT()             do{while(!(TWCR&(1<<TWINT)));}while(0)   
/*
extern unsigned char EE_STATE;
extern unsigned char EE_DATA;
extern unsigned char EE_ADD;
extern unsigned char DEV_ADD;
*/
extern uint8 TWI_timer;

extern void Write8Bit(unsigned char x);
//extern unsigned char i2c_Read(unsigned char Devaddress, unsigned char RomAddress);
extern unsigned char i2c_Write(unsigned char Devaddress, unsigned char RomAddress,unsigned char Wdata);
extern void TWI_init();

#endif

⌨️ 快捷键说明

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