in AZ3166/src/libraries/AudioV2/src/stm32412g_discovery.c [151:295]
static HAL_StatusTypeDef I2Cx_ReadMultiple( I2C_HandleTypeDef *i2c_handler, uint8_t Addr, uint16_t Reg,
uint16_t MemAddSize, uint8_t *Buffer, uint16_t Length );
static HAL_StatusTypeDef I2Cx_WriteMultiple( I2C_HandleTypeDef *i2c_handler, uint8_t Addr, uint16_t Reg,
uint16_t MemAddSize, uint8_t *Buffer, uint16_t Length );
//static HAL_StatusTypeDef I2Cx_IsDeviceReady( I2C_HandleTypeDef *i2c_handler, uint16_t DevAddress, uint32_t Trials );
static void I2Cx_Error( I2C_HandleTypeDef *i2c_handler, uint8_t Addr );
static void FMC_BANK1_WriteData( uint16_t Data );
static void FMC_BANK1_WriteReg( uint8_t Reg );
static uint16_t FMC_BANK1_ReadData( void );
static void FMC_BANK1_Init( void );
static void FMC_BANK1_MspInit( void );
/* LCD IO functions */
void LCD_IO_Init( void );
void LCD_IO_WriteData( uint16_t RegValue );
void LCD_IO_WriteReg( uint8_t Reg );
void LCD_IO_WriteMultipleData( uint16_t *pData, uint32_t Size );
uint16_t LCD_IO_ReadData( void );
void LCD_IO_Delay( uint32_t Delay );
/* AUDIO IO functions */
void AUDIO_IO_Init( void );
void AUDIO_IO_DeInit( void );
void AUDIO_IO_Write( uint8_t Addr, uint16_t Reg, uint16_t Value );
uint16_t AUDIO_IO_Read( uint8_t Addr, uint16_t Reg );
void AUDIO_IO_Delay( uint32_t Delay );
/* I2C EEPROM IO function */
void EEPROM_IO_Init( void );
HAL_StatusTypeDef EEPROM_IO_WriteData( uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize );
HAL_StatusTypeDef EEPROM_IO_ReadData( uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize );
HAL_StatusTypeDef EEPROM_IO_IsDeviceReady( uint16_t DevAddress, uint32_t Trials );
/* TouchScreen (TS) IO functions */
void TS_IO_Init( void );
void TS_IO_Write( uint8_t Addr, uint8_t Reg, uint8_t Value );
uint8_t TS_IO_Read( uint8_t Addr, uint8_t Reg );
uint16_t TS_IO_ReadMultiple( uint8_t Addr, uint8_t Reg, uint8_t *Buffer, uint16_t Length );
void TS_IO_WriteMultiple( uint8_t Addr, uint8_t Reg, uint8_t *Buffer, uint16_t Length );
void TS_IO_Delay( uint32_t Delay );
/**
* @}
*/
/** @defgroup STM32412G_DISCOVERY_LOW_LEVEL_Private_Functions STM32412G Discovery Low Level Private Functions
* @{
*/
/*******************************************************************************
BUS OPERATIONS
*******************************************************************************/
/******************************* I2C Routines *********************************/
/**
* @brief Initializes I2C MSP.
* @param i2c_handler : I2C handler
*/
static void I2Cx_MspInit( I2C_HandleTypeDef *i2c_handler )
{
GPIO_InitTypeDef gpio_init_structure;
if ( i2c_handler == (I2C_HandleTypeDef*) (&hI2cAudioHandler) )
{
/* AUDIO I2C MSP init */
/*** Configure the GPIOs ***/
/* Enable GPIO clock */
DISCOVERY_AUDIO_I2Cx_SCL_SDA_GPIO_CLK_ENABLE()
;
/* Configure I2C Tx as alternate function */
gpio_init_structure.Pin = DISCOVERY_AUDIO_I2Cx_SCL_PIN;
gpio_init_structure.Mode = GPIO_MODE_AF_OD;
gpio_init_structure.Pull = GPIO_NOPULL;
gpio_init_structure.Speed = GPIO_SPEED_FREQ_HIGH;
gpio_init_structure.Alternate = DISCOVERY_AUDIO_I2Cx_SCL_SDA_AF;
HAL_GPIO_Init( DISCOVERY_AUDIO_I2Cx_SCL_SDA_GPIO_PORT, &gpio_init_structure );
/* Configure I2C Rx as alternate function */
gpio_init_structure.Pin = DISCOVERY_AUDIO_I2Cx_SDA_PIN;
HAL_GPIO_Init( DISCOVERY_AUDIO_I2Cx_SCL_SDA_GPIO_PORT, &gpio_init_structure );
/*** Configure the I2C peripheral ***/
/* Enable I2C clock */
DISCOVERY_AUDIO_I2Cx_CLK_ENABLE()
;
/* Force the I2C peripheral clock reset */
DISCOVERY_AUDIO_I2Cx_FORCE_RESET();
/* Release the I2C peripheral clock reset */
DISCOVERY_AUDIO_I2Cx_RELEASE_RESET();
/* Enable and set I2Cx Interrupt to a lower priority */
HAL_NVIC_SetPriority( DISCOVERY_AUDIO_I2Cx_EV_IRQn, 0x0F, 0x00 );
HAL_NVIC_EnableIRQ( DISCOVERY_AUDIO_I2Cx_EV_IRQn );
/* Enable and set I2Cx Interrupt to a lower priority */
HAL_NVIC_SetPriority( DISCOVERY_AUDIO_I2Cx_ER_IRQn, 0x0F, 0x00 );
HAL_NVIC_EnableIRQ( DISCOVERY_AUDIO_I2Cx_ER_IRQn );
}
else
{
/* External and Arduino connector I2C MSP init */
/*** Configure the GPIOs ***/
/* Enable GPIO clock */
DISCOVERY_EXT_I2Cx_SCL_SDA_GPIO_CLK_ENABLE()
;
/* Configure I2C Tx as alternate function */
gpio_init_structure.Pin = DISCOVERY_EXT_I2Cx_SCL_PIN;
gpio_init_structure.Mode = GPIO_MODE_AF_OD;
gpio_init_structure.Pull = GPIO_NOPULL;
gpio_init_structure.Speed = GPIO_SPEED_FREQ_HIGH;
gpio_init_structure.Alternate = DISCOVERY_EXT_I2Cx_SCL_AF;
HAL_GPIO_Init( DISCOVERY_EXT_I2Cx_SCL_SDA_GPIO_PORT, &gpio_init_structure );
/* Configure I2C Rx as alternate function */
gpio_init_structure.Pin = DISCOVERY_EXT_I2Cx_SDA_PIN;
gpio_init_structure.Alternate = DISCOVERY_EXT_I2Cx_SDA_AF;
HAL_GPIO_Init( DISCOVERY_EXT_I2Cx_SCL_SDA_GPIO_PORT, &gpio_init_structure );
/*** Configure the I2C peripheral ***/
/* Enable I2C clock */
DISCOVERY_EXT_I2Cx_CLK_ENABLE()
;
/* Force the I2C peripheral clock reset */
DISCOVERY_EXT_I2Cx_FORCE_RESET();
/* Release the I2C peripheral clock reset */
DISCOVERY_EXT_I2Cx_RELEASE_RESET();
/* Enable and set I2Cx Interrupt to a lower priority */
HAL_NVIC_SetPriority( DISCOVERY_EXT_I2Cx_EV_IRQn, 0x0F, 0x00 );
HAL_NVIC_EnableIRQ( DISCOVERY_EXT_I2Cx_EV_IRQn );
/* Enable and set I2Cx Interrupt to a lower priority */
HAL_NVIC_SetPriority( DISCOVERY_EXT_I2Cx_ER_IRQn, 0x0F, 0x00 );
HAL_NVIC_EnableIRQ( DISCOVERY_EXT_I2Cx_ER_IRQn );
}
}