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