📄 twi_drv.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 + -