Include
stdbool.h |
stdint.h |
Constants
AO_SPI_BRG_BITS
#define AO_SPI_BRG_BITS (13)
The size of the SPIxBRG.BRG
field, in bits.
AO_SPI_BRG_MAX
AO_SPI_BRG_MIN
#define AO_SPI_BRG_MAX ((1 << (AO_SPI_BRG_BITS)) - 1)
#define AO_SPI_BRG_MIN (0)
The maximum and minimum value, respectively, of the SPIxBRG.BRG
field.
AO_SPI_ENHBUF
#define AO_SPI_ENHBUF (true)
Indicates whether the SPIxCON.ENHBUF
field is available.
Types
ao_spi_reg_t
typedef struct ao_spi_reg_t ao_spi_reg_t;
Represents the control register set.
ao_spi_reg_*_t
typedef struct ao_spi_reg_brg_t ao_spi_reg_brg_t;
typedef struct ao_spi_reg_buf_t ao_spi_reg_buf_t;
typedef struct ao_spi_reg_con_t ao_spi_reg_con_t;
typedef struct ao_spi_reg_con2_t ao_spi_reg_con2_t;
typedef struct ao_spi_reg_stat_t ao_spi_reg_stat_t;
These types represent individual control registers.
Structs
ao_spi_reg_t
struct ao_spi_reg_t
{
ao_spi_reg_con_t con;
ao_spi_reg_stat_t stat;
ao_spi_reg_buf_t buf;
ao_spi_reg_brg_t brg;
ao_spi_reg_con2_t con2;
};
ao_spi_reg_brg_t
struct ao_spi_reg_brg_t
{
union
{
uint32_t volatile reg;
struct
{
uint32_t volatile brg : 13;
} bits;
};
uint32_t volatile clr;
uint32_t volatile set;
uint32_t volatile inv;
};
ao_spi_reg_buf_t
struct ao_spi_reg_buf_t
{
union
{
uint32_t volatile reg;
struct
{
uint32_t volatile data : 32;
} bits;
};
uint32_t volatile : 32;
uint32_t volatile : 32;
uint32_t volatile : 32;
};
ao_spi_reg_con_t
struct ao_spi_reg_con_t
{
union
{
uint32_t volatile reg;
struct
{
uint32_t volatile srxisel : 2;
uint32_t volatile stxisel : 2;
uint32_t volatile dissdi : 1;
uint32_t volatile msten : 1;
uint32_t volatile ckp : 1;
uint32_t volatile ssen : 1;
uint32_t volatile cke : 1;
uint32_t volatile smp : 1;
uint32_t volatile mode16 : 1;
uint32_t volatile mode32 : 1;
uint32_t volatile dissdo : 1;
uint32_t volatile sidl : 1;
uint32_t volatile : 1;
uint32_t volatile on : 1;
uint32_t volatile enhbuf : 1;
uint32_t volatile spife : 1;
uint32_t volatile : 5;
uint32_t volatile mclksel : 1;
uint32_t volatile frmcnt : 3;
uint32_t volatile frmsypw : 1;
uint32_t volatile mssen : 1;
uint32_t volatile frmpol : 1;
uint32_t volatile frmsync : 1;
uint32_t volatile frmen : 1;
} bits;
};
uint32_t volatile clr;
uint32_t volatile set;
uint32_t volatile inv;
};
ao_spi_reg_con2_t
struct ao_spi_reg_con2_t
{
union
{
uint32_t volatile reg;
struct
{
uint32_t volatile audmod : 2;
uint32_t volatile : 1;
uint32_t volatile audmono : 1;
uint32_t volatile : 3;
uint32_t volatile auden : 1;
uint32_t volatile igntur : 1;
uint32_t volatile ignrov : 1;
uint32_t volatile spituren : 1;
uint32_t volatile spiroven : 1;
uint32_t volatile frmerren : 1;
uint32_t volatile : 2;
uint32_t volatile spisgnext : 1;
} bits;
};
uint32_t volatile clr;
uint32_t volatile set;
uint32_t volatile inv;
};
ao_spi_reg_stat_t
struct ao_spi_reg_stat_t
{
union
{
uint32_t volatile reg;
struct
{
uint32_t volatile spirbf : 1;
uint32_t volatile spitbf : 1;
uint32_t volatile : 1;
uint32_t volatile spitbe : 1;
uint32_t volatile : 1;
uint32_t volatile spirbe : 1;
uint32_t volatile spirov : 1;
uint32_t volatile srmt : 1;
uint32_t volatile spitur : 1;
uint32_t volatile : 2;
uint32_t volatile spibusy : 1;
uint32_t volatile frmerr : 1;
uint32_t volatile : 3;
uint32_t volatile txbufelm : 5;
uint32_t volatile : 3;
uint32_t volatile rxbufelm : 5;
} bits;
};
uint32_t volatile clr;
uint32_t volatile set;
uint32_t volatile inv;
};
Functions
ao_spi_baud
void ao_spi_baud(ao_spi_reg_t * r, uint32_t f_pbclk, uint32_t f);
r |
The control registers of the module. |
f_pbclk |
The frequency of the peripheral bus clock, in Hertz. |
f |
The baud rate, in bits per second. |
Sets up the baud rate for a module.
AO_SPI_BAUD_MAX
#define AO_SPI_BAUD_MAX(f_pbclk) \
( \
(f_pbclk) / \
( \
2 * ((AO_SPI_BRG_MIN) + 1) \
) \
)
f_pbclk |
The frequency of the peripheral bus clock, in Hertz. |
Calculates the maximum possible baud rate, in bits per second.
AO_SPI_BAUD_MIN
#define AO_SPI_BAUD_MIN(f_pbclk) \
( \
1 + \
( \
((f_pbclk) - 1) / \
( \
2 * ((AO_SPI_BRG_MAX) + 1) \
) \
) \
)
f_pbclk |
The frequency of the peripheral bus clock, in Hertz. |
Calculates the minimum possible baud rate, in bits per second.