I2C

1. #include <periperals/i2c_slave.h>

... wird immer automatisch vom SpartanMC System geladen. Der Include muss nicht in der C-Quelle erfolgen.
#include <peripherals/i2c_master.h>
#ifndef __I2C_SLAVE_H
#define __I2C_SLAVE_H
/* --- Definitions for i2c master's registers --- */
	
/* ----- Read-write access						      */

#define	I2C_SL_CTRL		0x00	/* Control register                   */
#define	I2C_SL_TX		0x01	/* Transmit byte register             */
#define	I2C_SL_RX		0x02	/* Receive byte register              */
	
/* ----- Bits definition						      */

/* ----- Control register						      */

#define	I2C_SL_EN		(1<<0)	/* Core enable bit:                   */
					/*      1 - core is enabled           */
					/*      0 - core is disabled          */
#define	I2C_SL_IEN		(1<<1)	/* Interrupt enable bit               */
					/*      1 - Interrupt enabled         */
					/*      0 - Interrupt disabled        */
#define	I2C_SL_10BIT_EN		(1<<2)	/* 10 Adresse aktiv                   */

#define	I2C_SL_IR_SIGR		(1<<3)	/* Read Interrupt = 1                 */
#define	I2C_SL_IR_SIGW		(1<<4)	/* Write Interrupt = 1                */
#define	I2C_SL_READ		(1<<5)	/* last Transfer 0 = write / 1 = read */
#define	I2C_SL_ADDR(addr)	((addr <<6) )
#define	I2C_SL_RDONE		(1<<16)	/* I2C STOP erkannt und kein START    */
#define	I2C_SL_RACK_F		(1<<17)	/* ACK Bit vom Master                 */

typedef	struct	i2c_slave {
	volatile unsigned int	ctrl;	// (r/w)
	volatile unsigned int	txr;	// (r/w)
	volatile unsigned int	rxr;	// (r)
} i2c_slave_regs_t;

#endif




SpartanMC