|
ChibiOS 21.11.4
|
Generic I2S Driver. More...
Generic I2S Driver.
This module implements a generic I2S driver.
HAL_USE_I2S option must be enabled in halconf.h.
I2S modes | |
| #define | I2S_MODE_SLAVE 0 |
| #define | I2S_MODE_MASTER 1 |
Macro Functions | |
| #define | i2sIsBufferComplete(i2sp) |
| Buffer state. | |
| #define | i2sStartExchangeI(i2sp) |
| Starts a I2S data exchange. | |
| #define | i2sStopExchangeI(i2sp) |
| Stops the ongoing data exchange. | |
| #define | _i2s_isr_half_code(i2sp) |
| Common ISR code, half buffer event. | |
| #define | _i2s_isr_full_code(i2sp) |
| Common ISR code. | |
PLATFORM configuration options | |
| #define | PLATFORM_I2S_USE_I2S1 FALSE |
| I2SD1 driver enable switch. | |
Data Structures | |
| struct | hal_i2s_driver |
| Structure representing an I2S driver. More... | |
| struct | hal_i2s_config |
| Driver configuration structure. More... | |
Macros | |
| #define | i2s_lld_driver_fields |
| Low level fields of the I2S driver structure. | |
| #define | i2s_lld_config_fields |
| Low level fields of the I2S configuration structure. | |
Typedefs | |
| typedef struct hal_i2s_driver | I2SDriver |
| Type of a structure representing an I2S driver. | |
| typedef struct hal_i2s_config | I2SConfig |
| Type of a structure representing an I2S driver configuration. | |
| typedef void(* | i2scallback_t) (I2SDriver *i2sp) |
| I2S notification callback type. | |
Enumerations | |
| enum | i2sstate_t { I2S_UNINIT = 0 , I2S_STOP = 1 , I2S_READY = 2 , I2S_ACTIVE = 3 , I2S_COMPLETE = 4 } |
| Driver state machine possible states. More... | |
Functions | |
| void | i2sInit (void) |
| I2S Driver initialization. | |
| void | i2sObjectInit (I2SDriver *i2sp) |
Initializes the standard part of a I2SDriver structure. | |
| msg_t | i2sStart (I2SDriver *i2sp, const I2SConfig *config) |
| Configures and activates the I2S peripheral. | |
| void | i2sStop (I2SDriver *i2sp) |
| Deactivates the I2S peripheral. | |
| void | i2sStartExchange (I2SDriver *i2sp) |
| Starts a I2S data exchange. | |
| void | i2sStopExchange (I2SDriver *i2sp) |
| Stops the ongoing data exchange. | |
| void | i2s_lld_init (void) |
| Low level I2S driver initialization. | |
| void | i2s_lld_start (I2SDriver *i2sp) |
| Configures and activates the I2S peripheral. | |
| void | i2s_lld_stop (I2SDriver *i2sp) |
| Deactivates the I2S peripheral. | |
| void | i2s_lld_start_exchange (I2SDriver *i2sp) |
| Starts a I2S data exchange. | |
| void | i2s_lld_stop_exchange (I2SDriver *i2sp) |
| Stops the ongoing data exchange. | |
Variables | |
| I2SDriver | I2SD1 |
| I2S2 driver identifier. | |
| #define i2sIsBufferComplete | ( | i2sp | ) |
Buffer state.
| [in] | i2sp | pointer to the I2SDriver object |
| false | if the driver filled/sent the first half of the buffer. |
| true | if the driver filled/sent the second half of the buffer. |
| #define i2sStartExchangeI | ( | i2sp | ) |
Starts a I2S data exchange.
| [in] | i2sp | pointer to the I2SDriver object |
Definition at line 158 of file hal_i2s.h.
Referenced by i2sStartExchange().
| #define i2sStopExchangeI | ( | i2sp | ) |
Stops the ongoing data exchange.
The ongoing data exchange, if any, is stopped, if the driver was not active the function does nothing.
| [in] | i2sp | pointer to the I2SDriver object |
Definition at line 172 of file hal_i2s.h.
Referenced by i2sStopExchange().
| #define _i2s_isr_half_code | ( | i2sp | ) |
Common ISR code, half buffer event.
This code handles the portable part of the ISR code:
| [in] | i2sp | pointer to the I2CDriver object |
| #define _i2s_isr_full_code | ( | i2sp | ) |
Common ISR code.
This code handles the portable part of the ISR code:
| [in] | i2sp | pointer to the I2CDriver object |
| #define PLATFORM_I2S_USE_I2S1 FALSE |
I2SD1 driver enable switch.
If set to TRUE the support for I2S1 is included.
FALSE. Definition at line 48 of file hal_i2s_lld.h.
| #define i2s_lld_driver_fields |
Low level fields of the I2S driver structure.
Definition at line 67 of file hal_i2s_lld.h.
| #define i2s_lld_config_fields |
Low level fields of the I2S configuration structure.
Definition at line 74 of file hal_i2s_lld.h.
| typedef struct hal_i2s_driver I2SDriver |
| typedef struct hal_i2s_config I2SConfig |
| typedef void(* i2scallback_t) (I2SDriver *i2sp) |
| enum i2sstate_t |
| void i2sInit | ( | void | ) |
I2S Driver initialization.
halInit(), there is no need to explicitly initialize the driver.Definition at line 56 of file hal_i2s.c.
References i2s_lld_init().
Referenced by halInit().

| void i2sObjectInit | ( | I2SDriver * | i2sp | ) |
Initializes the standard part of a I2SDriver structure.
| [out] | i2sp | pointer to the I2SDriver object |
Definition at line 68 of file hal_i2s.c.
References hal_i2s_driver::config, I2S_STOP, and hal_i2s_driver::state.
Referenced by i2s_lld_init().
Configures and activates the I2S peripheral.
Definition at line 83 of file hal_i2s.c.
References hal_i2s_driver::config, HAL_RET_SUCCESS, i2s_lld_start(), I2S_READY, I2S_STOP, osalDbgAssert, osalDbgCheck, osalSysLock(), osalSysUnlock(), and hal_i2s_driver::state.

| void i2sStop | ( | I2SDriver * | i2sp | ) |
Deactivates the I2S peripheral.
| [in] | i2sp | pointer to the I2SDriver object |
Definition at line 120 of file hal_i2s.c.
References hal_i2s_driver::config, i2s_lld_stop(), I2S_READY, I2S_STOP, osalDbgAssert, osalDbgCheck, osalSysLock(), osalSysUnlock(), and hal_i2s_driver::state.

| void i2sStartExchange | ( | I2SDriver * | i2sp | ) |
Starts a I2S data exchange.
| [in] | i2sp | pointer to the I2SDriver object |
Definition at line 143 of file hal_i2s.c.
References I2S_READY, i2sStartExchangeI, osalDbgAssert, osalDbgCheck, osalSysLock(), osalSysUnlock(), and hal_i2s_driver::state.

| void i2sStopExchange | ( | I2SDriver * | i2sp | ) |
Stops the ongoing data exchange.
The ongoing data exchange, if any, is stopped, if the driver was not active the function does nothing.
| [in] | i2sp | pointer to the I2SDriver object |
Definition at line 162 of file hal_i2s.c.
References I2S_ACTIVE, I2S_COMPLETE, I2S_READY, i2sStopExchangeI, osalDbgAssert, osalDbgCheck, osalSysLock(), osalSysUnlock(), and hal_i2s_driver::state.

| void i2s_lld_init | ( | void | ) |
Low level I2S driver initialization.
Definition at line 63 of file hal_i2s_lld.c.
References I2SD1, and i2sObjectInit().
Referenced by i2sInit().

| void i2s_lld_start | ( | I2SDriver * | i2sp | ) |
Configures and activates the I2S peripheral.
| [in] | i2sp | pointer to the I2SDriver object |
Definition at line 77 of file hal_i2s_lld.c.
References I2S_STOP, I2SD1, and hal_i2s_driver::state.
Referenced by i2sStart().
| void i2s_lld_stop | ( | I2SDriver * | i2sp | ) |
Deactivates the I2S peripheral.
| [in] | i2sp | pointer to the I2SDriver object |
Definition at line 97 of file hal_i2s_lld.c.
References I2S_READY, I2SD1, and hal_i2s_driver::state.
Referenced by i2sStop().
| void i2s_lld_start_exchange | ( | I2SDriver * | i2sp | ) |
Starts a I2S data exchange.
| [in] | i2sp | pointer to the I2SDriver object |
Definition at line 116 of file hal_i2s_lld.c.
| void i2s_lld_stop_exchange | ( | I2SDriver * | i2sp | ) |
Stops the ongoing data exchange.
The ongoing data exchange, if any, is stopped, if the driver was not active the function does nothing.
| [in] | i2sp | pointer to the I2SDriver object |
Definition at line 130 of file hal_i2s_lld.c.
| I2SDriver I2SD1 |
I2S2 driver identifier.
Definition at line 39 of file hal_i2s_lld.c.
Referenced by i2s_lld_init(), i2s_lld_start(), and i2s_lld_stop().