bsp.h File Reference

Go to the source code of this file.

Data Structures

struct  TBLCMDSET
 

Macros

#define BIT(n)   ( 1<<(n) )
 
#define BIT_MASK_LEN(len)   (BIT(len)-1)
 
#define BIT_RNG(s, e)   (BIT_MASK_LEN((e)-(s)+1) << (s))
 
#define BM_CLR_MASK_V(x, mask)   ( (x) & ~(mask) )
 
#define BM_SET(x, mask)   ( (x) |= (mask) )
 
#define BM_CLR(x, mask)   ( (x) &= ~(mask) )
 
#define BM_IS_SET(x, mask)   ( (x) & (mask) )
 
#define BM_IS_CLR(x, mask)   ( (~x) & (mask) )
 
#define BM_FLIP(x, mask)   ( (x) ^= (mask) )
 
#define BIT_LOW_BIT(y)
 
#define BIT_HIGH_BIT(y)
 
#define COUNT_ARGS_IMPL2(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, N, ...)   N
 
#define COUNT_ARGS_IMPL(args)   COUNT_ARGS_IMPL2 args
 
#define COUNT_ARGS(...)   COUNT_ARGS_IMPL((__VA_ARGS__, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0))
 
#define MACRO_CHOOSE_HELPER2(base, count)   base##count
 
#define MACRO_CHOOSE_HELPER1(base, count)   MACRO_CHOOSE_HELPER2(base, count)
 
#define MACRO_CHOOSE_HELPER(base, count)   MACRO_CHOOSE_HELPER1(base, count)
 
#define MACRO_GLUE(x, y)   x y
 
#define VARARG(base, ...)   MACRO_GLUE(MACRO_CHOOSE_HELPER(base, COUNT_ARGS(__VA_ARGS__)),(__VA_ARGS__))
 
#define MV(m, v)   (((v) << BIT_LOW_BIT(m)) & (m))
 
#define MASK_VAL2(m, v)   (MV(m,v))
 
#define MASK_VAL4(m1, v1, m2, v2)   (MV(m1,v1)|MV(m2,v2))
 
#define MASK_VAL6(m1, v1, m2, v2, m3, v3)   (MV(m1,v1)|MV(m2,v2)|MV(m3,v3))
 
#define MASK_VAL8(m1, v1, m2, v2, m3, v3, m4, v4)   (MV(m1,v1)|MV(m2,v2)|MV(m3,v3)|MV(m4,v4))
 
#define MASK_VAL10(m1, v1, m2, v2, m3, v3, m4, v4, m5, v5)   (MV(m1,v1)|MV(m2,v2)|MV(m3,v3)|MV(m4,v4)|MV(m5,v5))
 
#define MASK_VAL12(m1, v1, m2, v2, m3, v3, m4, v4, m5, v5, m6, v6)   (MV(m1,v1)|MV(m2,v2)|MV(m3,v3)|MV(m4,v4)|MV(m5,v5)|MV(m6,v6))
 
#define MASK_VAL14(m1, v1, m2, v2, m3, v3, m4, v4, m5, v5, m6, v6, m7, v7)   (MV(m1,v1)|MV(m2,v2)|MV(m3,v3)|MV(m4,v4)|MV(m5,v5)|MV(m6,v6)|MV(m7,v7))
 
#define MASK_VAL16(m1, v1, m2, v2, m3, v3, m4, v4, m5, v5, m6, v6, m7, v7, m8, v8)   (MV(m1,v1)|MV(m2,v2)|MV(m3,v3)|MV(m4,v4)|MV(m5,v5)|MV(m6,v6)|MV(m7,v7)|MV(m8,v8))
 
#define MASK_VAL(...)   VARARG(MASK_VAL, __VA_ARGS__)
 
#define REG_BASE_ADDR   0x800000
 
#define REG_ADDR8(a)   (*(volatile unsigned char*) (REG_BASE_ADDR + (a)))
 
#define REG_ADDR16(a)   (*(volatile unsigned short*)(REG_BASE_ADDR + (a)))
 
#define REG_ADDR32(a)   (*(volatile unsigned long*) (REG_BASE_ADDR + (a)))
 
#define write_reg8(addr, v)   (*(volatile unsigned char*) (REG_BASE_ADDR + (addr)) = (unsigned char)(v))
 
#define write_reg16(addr, v)   (*(volatile unsigned short*) (REG_BASE_ADDR + (addr)) = (unsigned short)(v))
 
#define write_reg32(addr, v)   (*(volatile unsigned long*) (REG_BASE_ADDR + (addr)) = (v))
 
#define read_reg8(addr)   (*(volatile unsigned char*) (REG_BASE_ADDR + (addr)))
 
#define read_reg16(addr)   (*(volatile unsigned short*)(REG_BASE_ADDR + (addr)))
 
#define read_reg32(addr)   (*(volatile unsigned long*) (REG_BASE_ADDR + (addr)))
 
#define WRITE_REG8   write_reg8
 
#define WRITE_REG16   write_reg16
 
#define WRITE_REG32   write_reg32
 
#define READ_REG8   read_reg8
 
#define READ_REG16   read_reg16
 
#define READ_REG32   read_reg32
 
#define TCMD_UNDER_BOTH   0xc0
 
#define TCMD_UNDER_RD   0x80
 
#define TCMD_UNDER_WR   0x40
 
#define TCMD_MASK   0x3f
 
#define TCMD_WRITE   0x3
 
#define TCMD_WAIT   0x7
 
#define TCMD_WAREG   0x8
 

Typedefs

typedef struct TBLCMDSET TBLCMDSET
 

Functions

int LoadTblCmdSet (const TBLCMDSET *pt, int size)
 This function performs a series of operations of writing digital or analog registers according to a command table. More...
 
void sub_wr_ana (unsigned int addr, unsigned char value, unsigned char e, unsigned char s)
 This function writes a byte data to analog register. More...
 
void sub_wr (unsigned int addr, unsigned char value, unsigned char e, unsigned char s)
 This function writes a byte data to a specified analog register. More...
 

Macro Definition Documentation

◆ BIT

#define BIT (   n)    ( 1<<(n) )

define BIT operations

◆ BIT_MASK_LEN

#define BIT_MASK_LEN (   len)    (BIT(len)-1)

◆ BIT_RNG

#define BIT_RNG (   s,
 
)    (BIT_MASK_LEN((e)-(s)+1) << (s))

◆ BM_CLR_MASK_V

#define BM_CLR_MASK_V (   x,
  mask 
)    ( (x) & ~(mask) )

◆ BM_SET

#define BM_SET (   x,
  mask 
)    ( (x) |= (mask) )

◆ BM_CLR

#define BM_CLR (   x,
  mask 
)    ( (x) &= ~(mask) )

◆ BM_IS_SET

#define BM_IS_SET (   x,
  mask 
)    ( (x) & (mask) )

◆ BM_IS_CLR

#define BM_IS_CLR (   x,
  mask 
)    ( (~x) & (mask) )

◆ BM_FLIP

#define BM_FLIP (   x,
  mask 
)    ( (x) ^= (mask) )

◆ BIT_LOW_BIT

#define BIT_LOW_BIT (   y)
Value:
(((y) & BIT(0))?0:(((y) & BIT(1))?1:(((y) & BIT(2))?2:(((y) & BIT(3))?3: \
(((y) & BIT(4))?4:(((y) & BIT(5))?5:(((y) & BIT(6))?6:(((y) & BIT(7))?7: \
(((y) & BIT(8))?8:(((y) & BIT(9))?9:(((y) & BIT(10))?10:(((y) & BIT(11))?11: \
(((y) & BIT(12))?12:(((y) & BIT(13))?13:(((y) & BIT(14))?14:(((y) & BIT(15))?15: \
(((y) & BIT(16))?16:(((y) & BIT(17))?17:(((y) & BIT(18))?18:(((y) & BIT(19))?19: \
(((y) & BIT(20))?20:(((y) & BIT(21))?21:(((y) & BIT(22))?22:(((y) & BIT(23))?23: \
(((y) & BIT(24))?24:(((y) & BIT(25))?25:(((y) & BIT(26))?26:(((y) & BIT(27))?27: \
(((y) & BIT(28))?28:(((y) & BIT(29))?29:(((y) & BIT(30))?30:(((y) & BIT(31))?31:32 \
))))))))))))))))))))))))))))))))
#define BIT(n)
Definition: bsp.h:33

define Reg operations

◆ BIT_HIGH_BIT

#define BIT_HIGH_BIT (   y)
Value:
(((y) & BIT(31))?31:(((y) & BIT(30))?30:(((y) & BIT(29))?29:(((y) & BIT(28))?28: \
(((y) & BIT(27))?27:(((y) & BIT(26))?26:(((y) & BIT(25))?25:(((y) & BIT(24))?24: \
(((y) & BIT(23))?23:(((y) & BIT(22))?22:(((y) & BIT(21))?21:(((y) & BIT(20))?20: \
(((y) & BIT(19))?19:(((y) & BIT(18))?18:(((y) & BIT(17))?17:(((y) & BIT(16))?16: \
(((y) & BIT(15))?15:(((y) & BIT(14))?14:(((y) & BIT(13))?13:(((y) & BIT(12))?12: \
(((y) & BIT(11))?11:(((y) & BIT(10))?10:(((y) & BIT(9))?9:(((y) & BIT(8))?8: \
(((y) & BIT(7))?7:(((y) & BIT(6))?6:(((y) & BIT(5))?5:(((y) & BIT(4))?4: \
(((y) & BIT(3))?3:(((y) & BIT(2))?2:(((y) & BIT(1))?1:(((y) & BIT(0))?0:32 \
))))))))))))))))))))))))))))))))
#define BIT(n)
Definition: bsp.h:33

◆ COUNT_ARGS_IMPL2

#define COUNT_ARGS_IMPL2 (   _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7,
  _8,
  _9,
  _10,
  _11,
  _12,
  _13,
  _14,
  _15,
  _16,
  _17,
  _18,
  _19,
  _20,
  N,
  ... 
)    N

◆ COUNT_ARGS_IMPL

#define COUNT_ARGS_IMPL (   args)    COUNT_ARGS_IMPL2 args

◆ COUNT_ARGS

#define COUNT_ARGS (   ...)    COUNT_ARGS_IMPL((__VA_ARGS__, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0))

◆ MACRO_CHOOSE_HELPER2

#define MACRO_CHOOSE_HELPER2 (   base,
  count 
)    base##count

◆ MACRO_CHOOSE_HELPER1

#define MACRO_CHOOSE_HELPER1 (   base,
  count 
)    MACRO_CHOOSE_HELPER2(base, count)

◆ MACRO_CHOOSE_HELPER

#define MACRO_CHOOSE_HELPER (   base,
  count 
)    MACRO_CHOOSE_HELPER1(base, count)

◆ MACRO_GLUE

#define MACRO_GLUE (   x,
 
)    x y

◆ VARARG

#define VARARG (   base,
  ... 
)    MACRO_GLUE(MACRO_CHOOSE_HELPER(base, COUNT_ARGS(__VA_ARGS__)),(__VA_ARGS__))

◆ MV

#define MV (   m,
 
)    (((v) << BIT_LOW_BIT(m)) & (m))

◆ MASK_VAL2

#define MASK_VAL2 (   m,
 
)    (MV(m,v))

◆ MASK_VAL4

#define MASK_VAL4 (   m1,
  v1,
  m2,
  v2 
)    (MV(m1,v1)|MV(m2,v2))

◆ MASK_VAL6

#define MASK_VAL6 (   m1,
  v1,
  m2,
  v2,
  m3,
  v3 
)    (MV(m1,v1)|MV(m2,v2)|MV(m3,v3))

◆ MASK_VAL8

#define MASK_VAL8 (   m1,
  v1,
  m2,
  v2,
  m3,
  v3,
  m4,
  v4 
)    (MV(m1,v1)|MV(m2,v2)|MV(m3,v3)|MV(m4,v4))

◆ MASK_VAL10

#define MASK_VAL10 (   m1,
  v1,
  m2,
  v2,
  m3,
  v3,
  m4,
  v4,
  m5,
  v5 
)    (MV(m1,v1)|MV(m2,v2)|MV(m3,v3)|MV(m4,v4)|MV(m5,v5))

◆ MASK_VAL12

#define MASK_VAL12 (   m1,
  v1,
  m2,
  v2,
  m3,
  v3,
  m4,
  v4,
  m5,
  v5,
  m6,
  v6 
)    (MV(m1,v1)|MV(m2,v2)|MV(m3,v3)|MV(m4,v4)|MV(m5,v5)|MV(m6,v6))

◆ MASK_VAL14

#define MASK_VAL14 (   m1,
  v1,
  m2,
  v2,
  m3,
  v3,
  m4,
  v4,
  m5,
  v5,
  m6,
  v6,
  m7,
  v7 
)    (MV(m1,v1)|MV(m2,v2)|MV(m3,v3)|MV(m4,v4)|MV(m5,v5)|MV(m6,v6)|MV(m7,v7))

◆ MASK_VAL16

#define MASK_VAL16 (   m1,
  v1,
  m2,
  v2,
  m3,
  v3,
  m4,
  v4,
  m5,
  v5,
  m6,
  v6,
  m7,
  v7,
  m8,
  v8 
)    (MV(m1,v1)|MV(m2,v2)|MV(m3,v3)|MV(m4,v4)|MV(m5,v5)|MV(m6,v6)|MV(m7,v7)|MV(m8,v8))

◆ MASK_VAL

#define MASK_VAL (   ...)    VARARG(MASK_VAL, __VA_ARGS__)

◆ REG_BASE_ADDR

#define REG_BASE_ADDR   0x800000

Reg operations

◆ REG_ADDR8

#define REG_ADDR8 (   a)    (*(volatile unsigned char*) (REG_BASE_ADDR + (a)))

◆ REG_ADDR16

#define REG_ADDR16 (   a)    (*(volatile unsigned short*)(REG_BASE_ADDR + (a)))

◆ REG_ADDR32

#define REG_ADDR32 (   a)    (*(volatile unsigned long*) (REG_BASE_ADDR + (a)))

◆ write_reg8

#define write_reg8 (   addr,
 
)    (*(volatile unsigned char*) (REG_BASE_ADDR + (addr)) = (unsigned char)(v))

◆ write_reg16

#define write_reg16 (   addr,
 
)    (*(volatile unsigned short*) (REG_BASE_ADDR + (addr)) = (unsigned short)(v))

◆ write_reg32

#define write_reg32 (   addr,
 
)    (*(volatile unsigned long*) (REG_BASE_ADDR + (addr)) = (v))

◆ read_reg8

#define read_reg8 (   addr)    (*(volatile unsigned char*) (REG_BASE_ADDR + (addr)))

◆ read_reg16

#define read_reg16 (   addr)    (*(volatile unsigned short*)(REG_BASE_ADDR + (addr)))

◆ read_reg32

#define read_reg32 (   addr)    (*(volatile unsigned long*) (REG_BASE_ADDR + (addr)))

◆ WRITE_REG8

#define WRITE_REG8   write_reg8

◆ WRITE_REG16

#define WRITE_REG16   write_reg16

◆ WRITE_REG32

#define WRITE_REG32   write_reg32

◆ READ_REG8

#define READ_REG8   read_reg8

◆ READ_REG16

#define READ_REG16   read_reg16

◆ READ_REG32

#define READ_REG32   read_reg32

◆ TCMD_UNDER_BOTH

#define TCMD_UNDER_BOTH   0xc0

◆ TCMD_UNDER_RD

#define TCMD_UNDER_RD   0x80

◆ TCMD_UNDER_WR

#define TCMD_UNDER_WR   0x40

◆ TCMD_MASK

#define TCMD_MASK   0x3f

◆ TCMD_WRITE

#define TCMD_WRITE   0x3

◆ TCMD_WAIT

#define TCMD_WAIT   0x7

◆ TCMD_WAREG

#define TCMD_WAREG   0x8

Typedef Documentation

◆ TBLCMDSET

typedef struct TBLCMDSET TBLCMDSET

command table for special registers

Function Documentation

◆ LoadTblCmdSet()

int LoadTblCmdSet ( const TBLCMDSET pt,
int  size 
)

This function performs a series of operations of writing digital or analog registers according to a command table.

Parameters
[in]pt- pointer to a command table containing several writing commands
[in]size- number of commands in the table
Returns
number of commands are carried out

◆ sub_wr_ana()

void sub_wr_ana ( unsigned int  addr,
unsigned char  value,
unsigned char  e,
unsigned char  s 
)

This function writes a byte data to analog register.

Parameters
[in]addr- the address of the analog register needs to write
[in]value- the data will be written to the analog register
[in]e- the end address of value
[in]s- the start address of the value
Returns
none

◆ sub_wr()

void sub_wr ( unsigned int  addr,
unsigned char  value,
unsigned char  e,
unsigned char  s 
)

This function writes a byte data to a specified analog register.

Parameters
[in]addr- the address of the analog register needs to write
[in]value- the data will be written to the analog register
[in]e- the end address of value
[in]s- the start address of the value
Returns
none