Hilscher netX microcontroller driver  V0.0.5.0
Documentation of the netX driver package
netx_drv_i2c.h File Reference

Header file of I2C DRV module. More...

#include "netx_drv.h"
Include dependency graph for netx_drv_i2c.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  DRV_I2C_ADDRESS_T
 Type definiton of a i2c address. More...
 
union  DRV_I2C_ADDRESS_U
 The matching union to DRV_I2C_ADDRESS_T. More...
 
struct  DRV_I2C_CONFIGURATION_T
 The configuration of the driver. More...
 
struct  DRV_I2C_HANDLE_T
 The handle of the driver. More...
 

Macros

#define DRV_I2C_ADDRESSING_10_BIT   0xF800u
 This definition encodes the addressing scheme for 10bit i2c addresses. More...
 
#define DRV_I2C_ADDRESSING_10_BIT_MSK   0x03FFu
 This definition encodes the mask for the addressing scheme for 10bit i2c addresses. More...
 
#define DRV_I2C_ADDRESSING_7_BIT   0x8000u
 This definition encodes the addressing scheme for 7bit i2c addresses. More...
 
#define DRV_I2C_ADDRESSING_7_BIT_MSK   0x007Fu
 This definition encodes the mask for the addressing scheme for 7bit i2c addresses. More...
 
#define DRV_I2C_ADDRESSING_MASTER   0x8400u
 This definition encodes the addressing scheme for Master accesses for highspeed i2c modes. More...
 
#define DRV_I2C_ADDRESSING_MASTER_CODE_ADDRESS_MSK   0x007Fu
 This definition encodes the mask for the addressing part for Master accesses for highspeed i2c modes. More...
 
#define DRV_I2C_ADDRESSING_MASTER_CODE_ID_MSK   0x0380u
 This definition encodes the mask for the master code for Master accesses for highspeed i2c modes. More...
 
#define DRV_I2C_CONTINUOUS_FLAG   (DRV_I2C_ADDRESS_T) {0x8000u}
 This define is used to set the continuous flag. More...
 

Enumerations

enum  DRV_I2C_SPEED_MODE_E {
  DRV_I2C_SPEED_MODE_FS_50k = 0x00ul,
  DRV_I2C_SPEED_MODE_DEFAULT = DRV_I2C_SPEED_MODE_FS_50k,
  DRV_I2C_SPEED_MODE_FS_100k = 0x01ul,
  DRV_I2C_SPEED_MODE_FS_STANDARD = DRV_I2C_SPEED_MODE_FS_100k,
  DRV_I2C_SPEED_MODE_FS_200k = 0x02ul,
  DRV_I2C_SPEED_MODE_FS_400k = 0x03ul,
  DRV_I2C_SPEED_MODE_FS_FAST = DRV_I2C_SPEED_MODE_FS_400k,
  DRV_I2C_SPEED_MODE_HS_800k = 0x04ul,
  DRV_I2C_SPEED_MODE_HS_1_2M = 0x05ul,
  DRV_I2C_SPEED_MODE_HS_1_7M = 0x06ul,
  DRV_I2C_SPEED_MODE_HS_3_4M = 0x07ul,
  DRV_I2C_SPEED_MODE_HS_HIGH_SPEED = DRV_I2C_SPEED_MODE_HS_3_4M,
  DRV_I2C_SPEED_MODE_MIN = DRV_I2C_SPEED_MODE_FS_50k,
  DRV_I2C_SPEED_MODE_MAX = DRV_I2C_SPEED_MODE_HS_3_4M
}
 The I2C speed modes. More...
 
enum  DRV_I2C_COMMAND_E {
  DRV_I2C_COMMAND_START = 0x00ul,
  DRV_I2C_COMMAND_S_AC = 0x01ul,
  DRV_I2C_COMMAND_S_AC_T = 0x02ul,
  DRV_I2C_COMMAND_S_AC_TC = 0x03ul,
  DRV_I2C_COMMAND_CT = 0x04ul,
  DRV_I2C_COMMAND_CTC = 0x05ul,
  DRV_I2C_COMMAND_STOP = 0x06ul,
  DRV_I2C_COMMAND_IDLE = 0x07ul
}
 The I2C speed modes. More...
 
enum  DRV_I2C_WATERMARK_E {
  DRV_I2C_WATERMARK_UNINITIALIZED = 0x00ul,
  DRV_I2C_WATERMARK_0 = 0x00ul,
  DRV_I2C_WATERMARK_1 = 0x01ul,
  DRV_I2C_WATERMARK_2 = 0x02ul,
  DRV_I2C_WATERMARK_3 = 0x03ul,
  DRV_I2C_WATERMARK_4 = 0x04ul,
  DRV_I2C_WATERMARK_5 = 0x05ul,
  DRV_I2C_WATERMARK_6 = 0x06ul,
  DRV_I2C_WATERMARK_7 = 0x07ul,
  DRV_I2C_WATERMARK_8 = 0x08ul,
  DRV_I2C_WATERMARK_DEFAULT = DRV_I2C_WATERMARK_8,
  DRV_I2C_WATERMARK_9 = 0x09ul,
  DRV_I2C_WATERMARK_10 = 0x0aul,
  DRV_I2C_WATERMARK_11 = 0x0bul,
  DRV_I2C_WATERMARK_12 = 0x0cul,
  DRV_I2C_WATERMARK_13 = 0x0dul,
  DRV_I2C_WATERMARK_14 = 0x0eul,
  DRV_I2C_WATERMARK_15 = 0x0ful,
  DRV_I2C_WATERMARK_MAX = DRV_I2C_WATERMARK_15
}
 The watermark levels of the i2c. More...
 
enum  DRV_I2C_STATE_E {
  DRV_I2C_STATE_MASTER_FIFO_LEVEL_1B = 0x00000001ull,
  DRV_I2C_STATE_MASTER_FIFO_LEVEL_2B = 0x00000002ull,
  DRV_I2C_STATE_MASTER_FIFO_LEVEL_4B = 0x00000004ull,
  DRV_I2C_STATE_MASTER_FIFO_LEVEL_8B = 0x00000008ull,
  DRV_I2C_STATE_MASTER_FIFO_LEVEL_16B = 0x00000010ull,
  DRV_I2C_STATE_RESERVED0 = 0x00000020ull,
  DRV_I2C_STATE_MASTER_FIFO_EMPTY = 0x00000040ull,
  DRV_I2C_STATE_MASTER_FIFO_FULL = 0x00000080ull,
  DRV_I2C_STATE_MASTER_FIFO_OVERFLOW = 0x00000100ull,
  DRV_I2C_STATE_MASTER_FIFO_UNDERRUN = 0x00000200ull,
  DRV_I2C_STATE_SLAVE_FIFO_LEVEL_1B = 0x00000400ull,
  DRV_I2C_STATE_SLAVE_FIFO_LEVEL_2B = 0x00000800ull,
  DRV_I2C_STATE_SLAVE_FIFO_LEVEL_4B = 0x00001000ull,
  DRV_I2C_STATE_SLAVE_FIFO_LEVEL_8B = 0x00002000ull,
  DRV_I2C_STATE_SLAVE_FIFO_LEVEL_16B = 0x00004000ull,
  DRV_I2C_STATE_RESERVED1 = 0x00008000ull,
  DRV_I2C_STATE_SLAVE_FIFO_EMPTY = 0x00010000ull,
  DRV_I2C_STATE_SLAVE_FIFO_FULL = 0x00020000ull,
  DRV_I2C_STATE_SLAVE_FIFO_OVERFLOW = 0x00040000ull,
  DRV_I2C_STATE_SLAVE_FIFO_UNDERRUN = 0x00080000ull,
  DRV_I2C_STATE_BUS_MASTER = 0x00100000ull,
  DRV_I2C_STATE_READ_TRANSFER = 0x00200000ull,
  DRV_I2C_STATE_STARTED = 0x00400000ull,
  DRV_I2C_STATE_LOCAL_SLAVE_ACCESSED = 0x00800000ull,
  DRV_I2C_STATE_LAST_BYTE_ACKED = 0x01000000ull,
  DRV_I2C_STATE_READ_TRANSFER_ACKED = 0x02000000ull,
  DRV_I2C_STATE_GENERAL_CALL_ACKED = 0x04000000ull,
  DRV_I2C_STATE_10BIT_ADD_ACKED = 0x08000000ull,
  DRV_I2C_STATE_TIMEOUT_OCCURRED = 0x10000000ull,
  DRV_I2C_STATE_RESERVED2 = 0x20000000ull,
  DRV_I2C_STATE_SDA_HIGH = 0x40000000ull,
  DRV_I2C_STATE_SCL_HIGH = 0x80000000ull,
  DRV_I2C_STATE_MASTER_CMD_READ = 0x00000001ull<<32,
  DRV_I2C_STATE_MASTER_CMD_START = 0x00000002ull<<32,
  DRV_I2C_STATE_MASTER_CMD_S_AC = 0x00000004ull<<32,
  DRV_I2C_STATE_MASTER_CMD_S_AC_T = 0x00000008ull<<32,
  DRV_I2C_STATE_MASTER_CMD_S_AC_TC = 0x00000010ull<<32,
  DRV_I2C_STATE_MASTER_CMD_CT = 0x00000020ull<<32,
  DRV_I2C_STATE_MASTER_CMD_CTC = 0x00000040ull<<32,
  DRV_I2C_STATE_MASTER_CMD_STOP = 0x00000080ull<<32,
  DRV_I2C_STATE_MASTER_CMD_IDLE = 0x00000100ull<<32,
  DRV_I2C_STATE_RESERVED3 = 0x00000200ull<<32,
  DRV_I2C_STATE_RESERVED4 = 0x00000400ull<<32,
  DRV_I2C_STATE_RESERVED5 = 0x00000800ull<<32,
  DRV_I2C_STATE_RESERVED6 = 0x00001000ull<<32,
  DRV_I2C_STATE_RESERVED7 = 0x00002000ull<<32,
  DRV_I2C_STATE_RESERVED8 = 0x00004000ull<<32,
  DRV_I2C_STATE_RESERVED9 = 0x00008000ull<<32,
  DRV_I2C_STATE_MASTER_TRANSFER_SIZE_1B = 0x00010000ull<<32,
  DRV_I2C_STATE_MASTER_TRANSFER_SIZE_2B = 0x00020000ull<<32,
  DRV_I2C_STATE_MASTER_TRANSFER_SIZE_4B = 0x00040000ull<<32,
  DRV_I2C_STATE_MASTER_TRANSFER_SIZE_8B = 0x00080000ull<<32,
  DRV_I2C_STATE_MASTER_TRANSFER_SIZE_16B = 0x00100000ull<<32,
  DRV_I2C_STATE_MASTER_TRANSFER_SIZE_32B = 0x00200000ull<<32,
  DRV_I2C_STATE_MASTER_TRANSFER_SIZE_64B = 0x00400000ull<<32,
  DRV_I2C_STATE_MASTER_TRANSFER_SIZE_128B = 0x00800000ull<<32,
  DRV_I2C_STATE_MASTER_TRANSFER_SIZE_256B = 0x01000000ull<<32,
  DRV_I2C_STATE_MASTER_TRANSFER_SIZE_512B = 0x02000000ull<<32,
  DRV_I2C_STATE_RESERVED10 = 0x04000000ull<<32,
  DRV_I2C_STATE_RESERVED11 = 0x08000000ull<<32,
  DRV_I2C_STATE_RESERVED12 = 0x10000000ull<<32,
  DRV_I2C_STATE_RESERVED13 = 0x20000000ull<<32,
  DRV_I2C_STATE_RESERVED14 = 0x40000000ull<<32,
  DRV_I2C_STATE_RESERVED15 = 0x80000000ull<<32
}
 Enumeration of i2c device states. More...
 
enum  DRV_I2C_TIMEOUT_DETECTION_E {
  DRV_I2C_TIMEOUT_DETECTION_ENABLED = 0x00u,
  DRV_I2C_TIMEOUT_DETECTION_DISABLED = 0x01u
}
 Timeout detection. More...
 
enum  DRV_I2C_RW_FLAG_E {
  DRV_I2C_RW_FLAG_WRITE = 0x00u,
  DRV_I2C_RW_FLAG_READ = 0x01u,
  DRV_I2C_RW_FLAG_UNKNOWN = 0x02u
}
 Read/Write Flag. More...
 
enum  DRV_I2C_ADDRESS_SCHEME_E {
  DRV_I2C_ADDRESS_10_BIT =0x3Eu,
  DRV_I2C_ADDRESS_MASTER_CODE =0x21u,
  DRV_I2C_ADDRESS_7_BIT =0x20u
}
 Addressing Scheme enumeration for the DRV_I2C_ADDRESS_T. More...
 
enum  DRV_I2C_CONT_E {
  DRV_I2C_CONT_CONTINUOUS =0x1u,
  DRV_I2C_CONT_END =0x0u
}
 This enumeration is used to define if the arbitration context will end after the command or continue. More...
 

Detailed Description

Header file of I2C DRV module.

Revision
4646
Date
2018-12-19 08:47:36 +0100 (Mi, 19 Dez 2018)
Note
Exclusion of Liability for this demo software: The following software is intended for and must only be used for reference and in an evaluation laboratory environment. It is provided without charge and is subject to alterations. There is no warranty for the software, to the extent permitted by applicable law. Except when otherwise stated in writing the copyright holders and/or other parties provide the software "as is" without warranty of any kind, either expressed or implied. Please refer to the Agreement in README_DISCLAIMER.txt, provided together with this file! By installing or otherwise using the software, you accept the terms of this Agreement. If you do not agree to the terms of this Agreement, then do not install or use the Software!

Definition in file netx_drv_i2c.h.