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

📄 sndsiic.h

📁 4510b的vxworks的BSP
💻 H
字号:
/* sndsIIC.h - header file for SNDS IIC driver */

#ifndef __INCsndsIICh
#define __INCsndsIICh
#include "vxWorks.h"
#include "types\vxTypesBase.h"
#include "types\vxTypes.h"
#include "iv.h"
#include "intLib.h"
#include "sysLib.h"
#include "taskLib.h"
#include "semLib.h"
#include "snds100.h"

#define EEPROM_PAGE_SIZE 32
#define EEPROM_MAX_SIZE 8192
#define SCLK 50000

/* device and channel structures */
typedef struct iic_drv_funcs IIC_DRV_FUNCS;
typedef struct
	{
	UINT8 slaveAddress;
	UINT8 writeAddrMSB; 
	UINT8 writeAddrLSB;
	UINT32 dataSize;
	UINT8 pageBuff [EEPROM_PAGE_SIZE];
	UINT32 byteWriteCount;
	UINT32 totalBytesWritten;
	UINT8 flag;
	SEM_ID endofWriteSemID;
	} IIC_TXMIT;

typedef struct
	{
	UINT8 slaveAddress;
	UINT8 readAddrMSB; 
	UINT8 readAddrLSB;
	UINT32 dataSize;
	UINT8 *rxBuff;
	UINT32 byteReadCount;
	UINT32 totalBytesRead;
	UINT8 flag;
	SEM_ID endofReadSemID;
	} IIC_RCV;

typedef struct
	{
    /* register addresses */
	volatile UINT32 *iiccon;            
	volatile UINT32 *iicbuf;            
	volatile UINT32 *iicps;            
	volatile UINT32 *iiccnt; 
    /* misc */
	IIC_TXMIT	IIC_Txmit;
	IIC_RCV		IIC_Rcv;
	SEM_ID IICSemID;
	int int_vec;
	int sclk;
	} SNDS_IIC;

/* definitions */
/*Reset values for Registers*/
#define SNDS_IIC_RESET_IICCON 0x0080
#define SNDS_IIC_IEN 0x2
#define SNDS_IIC_NOIEN 0x0
#define SNDS_IIC_ACK 0x8
#define SNDS_IIC_NOACK 0x0
#define SNDS_IIC_ISBUSY 0x40
#define SNDS_IIC_START 0x10 	
#define SNDS_IIC_STOP 0x20
#define SNDS_IIC_REPEAT_START 0x30

#define IIC_TX_BYTE_ADDR_MSB 0x01
#define IIC_TX_BYTE_ADDR_LSB 0x02

#define IIC_RX_BYTE_ADDR_MSB 0x01
#define IIC_RX_BYTE_ADDR_LSB 0x02
#define IIC_REPEAT_START 0x04
#define IIC_MULTI_RCV 0x08

#define EEPROM_BOOTLINE_ADDR 0
#define	EEPROM_SLAVE_ADDR 0xA0

#define S_WRITE 0xFFFFFFFE
#define S_READ 0x01

#define SET_PRE_SCALER 01

/* Macro Defns. */
#define SNDS_IIC_REG_READ(reg, result) \
	result = *((UINT32 *)sndsIIC.reg)

#define SNDS_IIC_REG_WRITE(reg, data) \
	*((UINT32 *)sndsIIC.reg) = data

/* function prototypes */
#if defined(__STDC__)
void sndsIICDevInit();
void sndsIICDevInit2();
STATUS sndsIICWrite(UINT8 slaveAddr,UINT16 WriteAddr,UINT8 *data, UINT32 SizeOfData);
STATUS sndsIICRead(UINT8 slaveAddr,UINT16 ReadAddr, UINT8 *pBuff, UINT32 SizeOfData);
STATUS sndsIICPagwiseRead(UINT8 slaveAddr,UINT16 ReadAddr, UINT8 *pBuff, UINT32 SizeOfData);
STATUS sndsIICIoctl(UINT32 cmd, void* arg);
#endif  /* __STDC__ */
#endif  /* __INCsndsIICh */

⌨️ 快捷键说明

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