| /******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** | |
| * File Name : 75x_i2c.h | |
| * Author : MCD Application Team | |
| * Date First Issued : 03/10/2006 | |
| * Description : This file contains all the functions prototypes for the | |
| * I2C software library. | |
| ******************************************************************************** | |
| * History: | |
| * 07/17/2006 : V1.0 | |
| * 03/10/2006 : V0.1 | |
| ******************************************************************************** | |
| * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS | |
| * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. | |
| * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, | |
| * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE | |
| * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING | |
| * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. | |
| *******************************************************************************/ | |
| /* Define to prevent recursive inclusion ------------------------------------ */ | |
| #ifndef __75x_I2C_H | |
| #define __75x_I2C_H | |
| /* Includes ----------------------------------------------------------------- */ | |
| #include "75x_map.h" | |
| /* Exported types ----------------------------------------------------------- */ | |
| /* I2C Init structure definition */ | |
| typedef struct | |
| { | |
| u32 I2C_CLKSpeed; | |
| u16 I2C_OwnAddress; | |
| u8 I2C_GeneralCall; | |
| u8 I2C_Ack; | |
| }I2C_InitTypeDef; | |
| /* Exported constants --------------------------------------------------------*/ | |
| /* General Call */ | |
| #define I2C_GeneralCall_Enable 0x10 | |
| #define I2C_GeneralCall_Disable 0xEF | |
| /* Acknowledgement */ | |
| #define I2C_Ack_Enable 0x04 | |
| #define I2C_Ack_Disable 0xFB | |
| /* I2C Flags */ | |
| #define I2C_FLAG_SB 0x0001 | |
| #define I2C_FLAG_M_SL 0x0002 | |
| #define I2C_FLAG_ADSL 0x0004 | |
| #define I2C_FLAG_BTF 0x0008 | |
| #define I2C_FLAG_BUSY 0x0010 | |
| #define I2C_FLAG_TRA 0x0020 | |
| #define I2C_FLAG_ADD10 0x0040 | |
| #define I2C_FLAG_EVF 0x0080 | |
| #define I2C_FLAG_GCAL 0x0100 | |
| #define I2C_FLAG_BERR 0x0200 | |
| #define I2C_FLAG_ARLO 0x0400 | |
| #define I2C_FLAG_STOPF 0x0800 | |
| #define I2C_FLAG_AF 0x1000 | |
| #define I2C_FLAG_ENDAD 0x2000 | |
| #define I2C_FLAG_ACK 0x4000 | |
| /* I2C Events */ | |
| #define I2C_EVENT_SLAVE_ADDRESS_MATCHED ( I2C_FLAG_EVF | I2C_FLAG_BUSY |I2C_FLAG_ADSL) | |
| #define I2C_EVENT_SLAVE_BYTE_RECEIVED ( I2C_FLAG_EVF | I2C_FLAG_BUSY | I2C_FLAG_BTF ) | |
| #define I2C_EVENT_SLAVE_BYTE_TRANSMITTED ( I2C_FLAG_EVF | I2C_FLAG_BUSY | I2C_FLAG_BTF | I2C_FLAG_TRA ) | |
| #define I2C_EVENT_MASTER_MODE_SELECT ( I2C_FLAG_EVF | I2C_FLAG_BUSY | I2C_FLAG_M_SL | I2C_FLAG_SB ) | |
| #define I2C_EVENT_MASTER_MODE_SELECTED ( I2C_FLAG_EVF | I2C_FLAG_BUSY | I2C_FLAG_M_SL | I2C_FLAG_ENDAD ) | |
| #define I2C_EVENT_MASTER_BYTE_RECEIVED ( I2C_FLAG_EVF | I2C_FLAG_BUSY | I2C_FLAG_M_SL | I2C_FLAG_BTF ) | |
| #define I2C_EVENT_MASTER_BYTE_TRANSMITTED ( I2C_FLAG_EVF | I2C_FLAG_BUSY | I2C_FLAG_M_SL | I2C_FLAG_BTF | I2C_FLAG_TRA ) | |
| #define I2C_EVENT_MASTER_MODE_ADDRESS10 ( I2C_FLAG_EVF | I2C_FLAG_BUSY | I2C_FLAG_M_SL |I2C_FLAG_ADD10 ) | |
| #define I2C_EVENT_SLAVE_STOP_DETECTED I2C_FLAG_STOPF | |
| #define I2C_EVENT_SLAVE_ACK_FAILURE ( I2C_FLAG_EVF | I2C_FLAG_BUSY | I2C_FLAG_BTF | I2C_FLAG_TRA | I2C_FLAG_AF) | |
| #define I2C_BUS_ERROR_DETECTED I2C_FLAG_BERR | |
| #define I2C_ARBITRATION_LOST I2C_FLAG_ARLO | |
| #define I2C_SLAVE_GENERAL_CALL (I2C_FLAG_BUSY | I2C_FLAG_GCAL) | |
| /* Master/Receiver Mode */ | |
| #define I2C_MODE_TRANSMITTER 0x00 | |
| #define I2C_MODE_RECEIVER 0x01 | |
| /* I2C Registers offset */ | |
| #define I2C_CR 0x00 | |
| #define I2C_SR1 0x04 | |
| #define I2C_SR2 0x08 | |
| #define I2C_CCR 0x0C | |
| #define I2C_OAR1 0x10 | |
| #define I2C_OAR2 0x14 | |
| #define I2C_DR 0x18 | |
| #define I2C_ECCR 0x1C | |
| /* Exported macro ------------------------------------------------------------*/ | |
| /* Exported functions ------------------------------------------------------- */ | |
| void I2C_DeInit(void); | |
| void I2C_Init(I2C_InitTypeDef* I2C_InitStruct); | |
| void I2C_StructInit(I2C_InitTypeDef* I2C_InitStruct); | |
| void I2C_Cmd(FunctionalState NewState); | |
| void I2C_GenerateSTART(FunctionalState NewState); | |
| void I2C_GenerateSTOP(FunctionalState NewState); | |
| void I2C_AcknowledgeConfig(FunctionalState NewState); | |
| void I2C_ITConfig(FunctionalState NewState); | |
| u16 I2C_GetLastEvent(void); | |
| ErrorStatus I2C_CheckEvent(u16 I2C_EVENT); | |
| void I2C_SendData(u8 Data); | |
| u8 I2C_ReceiveData(void); | |
| void I2C_Send7bitAddress(u8 Address, u8 Direction); | |
| u8 I2C_ReadRegister(u8 I2C_Register); | |
| FlagStatus I2C_GetFlagStatus(u16 I2C_FLAG); | |
| void I2C_ClearFlag(u16 I2C_FLAG, ...); | |
| #endif /* __75x_I2C_H */ | |
| /******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ |