129 lines
4.6 KiB
C
Executable File
129 lines
4.6 KiB
C
Executable File
|
|
//-----------------------------------
|
|
#define CFG_I2C_SLAVE_RVER_ADDR 0x0000
|
|
#define I2C_SLAVE_RF_VER_OFFSET 0
|
|
#define I2C_SLAVE_RF_VER_MASK 0x000000FF
|
|
|
|
//-----------------------------------
|
|
#define CFG_I2C_SLAVE_CTRL0_ADDR 0x0004
|
|
#define I2C_RD_WR_SPEC_OFFSET 19
|
|
#define I2C_RD_WR_SPEC_MASK 0x00080000
|
|
#define I2C_DEV_ADDR_OFFSET 12
|
|
#define I2C_DEV_ADDR_MASK 0x0007F000
|
|
#define SDA_FILTER_THRS_OFFSET 8
|
|
#define SDA_FILTER_THRS_MASK 0x00000F00
|
|
#define SCL_FILTER_THRS_OFFSET 4
|
|
#define SCL_FILTER_THRS_MASK 0x000000F0
|
|
#define SDA_FILTER_EB_OFFSET 2
|
|
#define SDA_FILTER_EB_MASK 0x00000004
|
|
#define SCL_FILTER_EB_OFFSET 1
|
|
#define SCL_FILTER_EB_MASK 0x00000002
|
|
#define I2C_FSM_EB_OFFSET 0
|
|
#define I2C_FSM_EB_MASK 0x00000001
|
|
|
|
//-----------------------------------
|
|
#define CFG_I2C_SLAVE_CTRL1_ADDR 0x0008
|
|
#define ACK_NACK_SAT_TIME_OFFSET 20
|
|
#define ACK_NACK_SAT_TIME_MASK 0x0FF00000
|
|
#define LOW_LEVEL_PERIOD_OFFSET 12
|
|
#define LOW_LEVEL_PERIOD_MASK 0x000FF000
|
|
#define HIGH_LEVEL_PERIOD_OFFSET 4
|
|
#define HIGH_LEVEL_PERIOD_MASK 0x00000FF0
|
|
#define TRANS_BIT_ORDER_OFFSET 3
|
|
#define TRANS_BIT_ORDER_MASK 0x00000008
|
|
#define RECE_BIT_ORDER_OFFSET 2
|
|
#define RECE_BIT_ORDER_MASK 0x00000004
|
|
#define I2C_FORCE_DRIVE_SDA_OFFSET 1
|
|
#define I2C_FORCE_DRIVE_SDA_MASK 0x00000002
|
|
#define I2C_FSM_RST_OFFSET 0
|
|
#define I2C_FSM_RST_MASK 0x00000001
|
|
|
|
//-----------------------------------
|
|
#define CFG_I2C_SLAVE_FIFO_STATUS_ADDR 0x000C
|
|
#define FIFO_DATA_NUM_OFFSET 4
|
|
#define FIFO_DATA_NUM_MASK 0x000001F0
|
|
#define FIFO_FULL_OFFSET 1
|
|
#define FIFO_FULL_MASK 0x00000002
|
|
#define FIFO_EMP_OFFSET 0
|
|
#define FIFO_EMP_MASK 0x00000001
|
|
|
|
//-----------------------------------
|
|
#define CFG_I2C_SLAVE_STATUS_ADDR 0x0010
|
|
#define RECE_1ST_BYTE_OFFSET 4
|
|
#define RECE_1ST_BYTE_MASK 0x00000FF0
|
|
#define I2C_FSM_STATUS_OFFSET 0
|
|
#define I2C_FSM_STATUS_MASK 0x0000000F
|
|
|
|
//-----------------------------------
|
|
#define CFG_I2C_SLAVE_INT_RAW_ADDR 0x0020
|
|
#define I2C_FSM_DONE_INT_RAW_OFFSET 4
|
|
#define I2C_FSM_DONE_INT_RAW_MASK 0x00000010
|
|
#define TRANS_FIFO_IS_EMP_INT_RAW_OFFSET 3
|
|
#define TRANS_FIFO_IS_EMP_INT_RAW_MASK 0x00000008
|
|
#define RECE_FIFO_FULL_NACK_INT_RAW_OFFSET 2
|
|
#define RECE_FIFO_FULL_NACK_INT_RAW_MASK 0x00000004
|
|
#define RECE_1ST_BYTE_INT_RAW_OFFSET 1
|
|
#define RECE_1ST_BYTE_INT_RAW_MASK 0x00000002
|
|
#define DEV_ADDR_NO_MATCH_INT_RAW_OFFSET 0
|
|
#define DEV_ADDR_NO_MATCH_INT_RAW_MASK 0x00000001
|
|
|
|
//-----------------------------------
|
|
#define CFG_I2C_SLAVE_INT_ST_ADDR 0x0024
|
|
#define I2C_FSM_DONE_INT_ST_OFFSET 4
|
|
#define I2C_FSM_DONE_INT_ST_MASK 0x00000010
|
|
#define TRANS_FIFO_IS_EMP_INT_ST_OFFSET 3
|
|
#define TRANS_FIFO_IS_EMP_INT_ST_MASK 0x00000008
|
|
#define RECE_FIFO_FULL_NACK_INT_ST_OFFSET 2
|
|
#define RECE_FIFO_FULL_NACK_INT_ST_MASK 0x00000004
|
|
#define RECE_1ST_BYTE_INT_ST_OFFSET 1
|
|
#define RECE_1ST_BYTE_INT_ST_MASK 0x00000002
|
|
#define DEV_ADDR_NO_MATCH_INT_ST_OFFSET 0
|
|
#define DEV_ADDR_NO_MATCH_INT_ST_MASK 0x00000001
|
|
|
|
//-----------------------------------
|
|
#define CFG_I2C_SLAVE_INT_ENA_ADDR 0x0028
|
|
#define I2C_FSM_DONE_INT_ENA_OFFSET 4
|
|
#define I2C_FSM_DONE_INT_ENA_MASK 0x00000010
|
|
#define TRANS_FIFO_IS_EMP_INT_ENA_OFFSET 3
|
|
#define TRANS_FIFO_IS_EMP_INT_ENA_MASK 0x00000008
|
|
#define RECE_FIFO_FULL_NACK_INT_ENA_OFFSET 2
|
|
#define RECE_FIFO_FULL_NACK_INT_ENA_MASK 0x00000004
|
|
#define RECE_1ST_BYTE_INT_ENA_OFFSET 1
|
|
#define RECE_1ST_BYTE_INT_ENA_MASK 0x00000002
|
|
#define DEV_ADDR_NO_MATCH_INT_ENA_OFFSET 0
|
|
#define DEV_ADDR_NO_MATCH_INT_ENA_MASK 0x00000001
|
|
|
|
//-----------------------------------
|
|
#define CFG_I2C_SLAVE_INT_CLR_ADDR 0x002C
|
|
#define I2C_FSM_DONE_INT_CLR_OFFSET 4
|
|
#define I2C_FSM_DONE_INT_CLR_MASK 0x00000010
|
|
#define TRANS_FIFO_IS_EMP_INT_CLR_OFFSET 3
|
|
#define TRANS_FIFO_IS_EMP_INT_CLR_MASK 0x00000008
|
|
#define RECE_FIFO_FULL_NACK_INT_CLR_OFFSET 2
|
|
#define RECE_FIFO_FULL_NACK_INT_CLR_MASK 0x00000004
|
|
#define RECE_1ST_BYTE_INT_CLR_OFFSET 1
|
|
#define RECE_1ST_BYTE_INT_CLR_MASK 0x00000002
|
|
#define DEV_ADDR_NO_MATCH_INT_CLR_OFFSET 0
|
|
#define DEV_ADDR_NO_MATCH_INT_CLR_MASK 0x00000001
|
|
|
|
//-----------------------------------
|
|
#define CFG_I2C_S_FIFO_RDATA_ADDR 0x0040
|
|
#define FIFO_RDATA_OFFSET 0
|
|
#define FIFO_RDATA_MASK 0x000000FF
|
|
|
|
//-----------------------------------
|
|
#define CFG_I2C_S_FIFO_WDATA_ADDR 0x0044
|
|
#define FIFO_WDATA_OFFSET 0
|
|
#define FIFO_WDATA_MASK 0x000000FF
|
|
|
|
//-----------------------------------
|
|
#define CFG_I2C_S_FIFO_RD_ADDR 0x0048
|
|
#define FIFO_RD_WE_OFFSET 0
|
|
#define FIFO_RD_WE_MASK 0x00000001
|
|
|
|
//HW module read/write macro
|
|
#define I2C_SLAVE0_READ_REG(addr) SOC_READ_REG(I2C_SLAVE0_BASEADDR + addr)
|
|
#define I2C_SLAVE0_WRITE_REG(addr,value) SOC_WRITE_REG(I2C_SLAVE0_BASEADDR + addr,value)
|
|
#define I2C_SLAVE1_READ_REG(addr) SOC_READ_REG(I2C_SLAVE1_BASEADDR + addr)
|
|
#define I2C_SLAVE1_WRITE_REG(addr,value) SOC_WRITE_REG(I2C_SLAVE1_BASEADDR + addr,value)
|