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

📄 twi_master_drv._h

📁 at90can128底层驱动 有SPI,TWI,总线,CAN接口等
💻 _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_FREE				9


#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 + -