📄 复件 twi_master_drv.h
字号:
#ifndef _TWI_MASTER_DRV_H_
#define _TWI_MASTER_DRV_H_
/*头文件*/
#include "config.h"
/*宏定义*/
#define MSK_TWCR_TWINT 0x80
#define MSK_TWCR_TWEA 0x40
#define MSK_TWCR_TWSTA 0x20
#define MSK_TWCR_TWSTO 0x10
#define MSK_TWCR_TWEN 0x04
#define MSK_TWCR_TWIE 0x01
#define Twi_set_address(address) (TWAR = address)
#define Twi_get_address() (TWAR)
#define Twi_set_data(data) (TWDR = data)
#define Twi_set_aa() (TWCR |= MSK_TWCR_TWEA&(~MSK_TWCR_TWINT))
#define Twi_clear_aa() (TWCR &= (~MSK_TWCR_TWEA)&(~MSK_TWCR_TWINT))
#define Twi_get_status() (TWSR)
#define Twi_set_status(twps) (TWSR = twps) //by zmq
#define Twi_clear_start() (TWCR &= (~MSK_TWCR_TWSTA)&(~MSK_TWCR_TWINT) )
#define Twi_set_start() (TWCR |= MSK_TWCR_TWSTA)
#define Twi_set_stop() (TWCR |= MSK_TWCR_TWSTO)
#define Twi_clear_stop() (TWCR &= ~MSK_TWCR_TWSTO)
#define Twi_get_data() (TWDR)
#define Twi_clear_si() (TWCR |= MSK_TWCR_TWINT)
#define Twi_set_baudrate(baudrate)(TWBR = baudrate)
#define Twi_wait_hw_stop() while((TWCR & MSK_TWCR_TWSTO)==MSK_TWCR_TWSTO)
#define Twi_wait_event() while(((TWCR & MSK_TWCR_TWINT))!= MSK_TWCR_TWINT)
#define Disable_twi_interrupt() (TWCR &= ~MSK_TWCR_TWIE)
#define Enable_twi_interrupt() (TWCR |= MSK_TWCR_TWIE)
#define Twi_init_hw(arg) (TWCR = arg)
#define TWI_TRANSFER_OK 0
#define TWI_RECEIVE_OK 1
#define TWI_BUS_ERROR 2
#define TWI_HOST_ADR_NACK 3
#define TWI_HOST_DATA_NACK 4
#define TWI_ARBITRATION_LOST 5
#define TWI_UNKNOWN 6
#define TWI_NOT_FREE 7
#define TWI_OK 8
#define TWI_READ 0x01
#define TWI_WRITE 0x00
/*寄存器配置*/
#define TWI_CONFIG 0x04
//master TWEN=1
/*结构定义*/
typedef struct{
uchar address,rw,nbbytes;
uchar* buf;
}TWI_MSG;
/*外部变量定义*/
extern TWI_MSG twi_message; // The TWI message to be sent in Master Mode
extern uchar twi_busy;
extern uchar twi_err;
/*函数定义*/
uchar twi_send_message_polling ( uchar slave_addr, uchar rw, uchar nbytes, uchar *info );
uchar twi_send_message_interrupt( uchar slave_addr,uchar rw, uchar nbytes, uchar *info);
/*外部函数定义*/
extern void twi_lib_init (void);
extern void TWI_MW(uchar slave_addr,uchar nbbytes,uchar *info);
extern void TWI_MR(uchar slave_addr,uchar nbbytes,uchar *info);
#endif /* _TWI_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -