mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-05-22 01:27:11 +08:00
190 lines
4.2 KiB
C
190 lines
4.2 KiB
C
// Copyright 2018 Espressif Systems (Shanghai) PTE LTD
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
#ifndef __I2C_MASTER_H__
|
|
#define __I2C_MASTER_H__
|
|
|
|
#include <stdint.h>
|
|
|
|
#include "rom/ets_sys.h"
|
|
|
|
#include "esp8266/pin_mux_register.h"
|
|
#include "gpio.h"
|
|
|
|
#define I2C_MASTER_SDA_MUX PERIPHS_IO_MUX_GPIO2_U
|
|
#define I2C_MASTER_SCL_MUX PERIPHS_IO_MUX_GPIO4_U
|
|
#define I2C_MASTER_SDA_GPIO 2
|
|
#define I2C_MASTER_SCL_GPIO 4
|
|
#define I2C_MASTER_SDA_FUNC FUNC_GPIO2
|
|
#define I2C_MASTER_SCL_FUNC FUNC_GPIO4
|
|
|
|
//#define I2C_MASTER_SDA_MUX PERIPHS_IO_MUX_GPIO2_U
|
|
//#define I2C_MASTER_SCL_MUX PERIPHS_IO_MUX_GPIO0_U
|
|
//#define I2C_MASTER_SDA_GPIO 2
|
|
//#define I2C_MASTER_SCL_GPIO 0
|
|
//#define I2C_MASTER_SDA_FUNC FUNC_GPIO2
|
|
//#define I2C_MASTER_SCL_FUNC FUNC_GPIO0
|
|
|
|
#if 0
|
|
#define I2C_MASTER_GPIO_SET(pin) \
|
|
gpio_output_set(1<<pin,0,1<<pin,0)
|
|
|
|
#define I2C_MASTER_GPIO_CLR(pin) \
|
|
gpio_output_set(0,1<<pin,1<<pin,0)
|
|
|
|
#define I2C_MASTER_GPIO_OUT(pin,val) \
|
|
if(val) I2C_MASTER_GPIO_SET(pin);\
|
|
else I2C_MASTER_GPIO_CLR(pin)
|
|
#endif
|
|
|
|
#define I2C_MASTER_SDA_HIGH_SCL_HIGH() \
|
|
gpio_output_conf(1<<I2C_MASTER_SDA_GPIO | 1<<I2C_MASTER_SCL_GPIO, 0, 1<<I2C_MASTER_SDA_GPIO | 1<<I2C_MASTER_SCL_GPIO, 0)
|
|
|
|
#define I2C_MASTER_SDA_HIGH_SCL_LOW() \
|
|
gpio_output_conf(1<<I2C_MASTER_SDA_GPIO, 1<<I2C_MASTER_SCL_GPIO, 1<<I2C_MASTER_SDA_GPIO | 1<<I2C_MASTER_SCL_GPIO, 0)
|
|
|
|
#define I2C_MASTER_SDA_LOW_SCL_HIGH() \
|
|
gpio_output_conf(1<<I2C_MASTER_SCL_GPIO, 1<<I2C_MASTER_SDA_GPIO, 1<<I2C_MASTER_SDA_GPIO | 1<<I2C_MASTER_SCL_GPIO, 0)
|
|
|
|
#define I2C_MASTER_SDA_LOW_SCL_LOW() \
|
|
gpio_output_conf(0, 1<<I2C_MASTER_SDA_GPIO | 1<<I2C_MASTER_SCL_GPIO, 1<<I2C_MASTER_SDA_GPIO | 1<<I2C_MASTER_SCL_GPIO, 0)
|
|
|
|
/** \defgroup Driver_APIs Driver APIs
|
|
* @brief Driver APIs
|
|
*/
|
|
|
|
/** @addtogroup Driver_APIs
|
|
* @{
|
|
*/
|
|
|
|
/** \defgroup I2C_Driver_APIs I2C_MASTER Driver APIs
|
|
* @brief UART driver APIs
|
|
*/
|
|
|
|
/** @addtogroup I2C_MASTER_Driver_APIs
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief i2c_master_gpio_init,config SDA and SCL gpio to open-drain output mode.
|
|
*
|
|
* @param null
|
|
*
|
|
* @return null
|
|
*/
|
|
void i2c_master_gpio_init(void);
|
|
|
|
/**
|
|
* @brief i2c_master_gpio_init,config SDA and SCL gpio to open-drain output mode.
|
|
*
|
|
* @param initilize I2C bus to enable i2c operations.
|
|
*
|
|
* @return null
|
|
*/
|
|
void i2c_master_init(void);
|
|
|
|
#define i2c_master_wait os_delay_us
|
|
|
|
|
|
/**
|
|
* @brief i2c_master_gpio_init,config SDA and SCL gpio to open-drain output mode.
|
|
*
|
|
* @param set i2c to stop sending state.
|
|
*
|
|
* @return null
|
|
*/
|
|
void i2c_master_stop(void);
|
|
|
|
/**
|
|
* @brief i2c_master_gpio_init,config SDA and SCL gpio to open-drain output mode.
|
|
*
|
|
* @param set i2c to start sending state.
|
|
*
|
|
* @return null
|
|
*/
|
|
void i2c_master_start(void);
|
|
|
|
/**
|
|
* @brief i2c_master_gpio_init,config SDA and SCL gpio to open-drain output mode.
|
|
*
|
|
* @param set ack to i2c bus as level value.
|
|
*
|
|
* @return null
|
|
*/
|
|
void i2c_master_setAck(uint8_t level);
|
|
|
|
/**
|
|
* @brief confirm if peer send ack.
|
|
*
|
|
* @param null
|
|
*
|
|
* @return null
|
|
*/
|
|
uint8_t i2c_master_getAck(void);
|
|
|
|
/**
|
|
* @brief read Byte from i2c bus.
|
|
*
|
|
* @param null
|
|
*
|
|
* @return the byte which read from i2c bus.
|
|
*/
|
|
uint8_t i2c_master_readByte(void);
|
|
|
|
/**
|
|
* @brief write wrdata value(one byte) into i2c.
|
|
*
|
|
* @param uint8_t wrdata:write value
|
|
*
|
|
* @return null
|
|
*/
|
|
void i2c_master_writeByte(uint8_t wrdata);
|
|
|
|
/**
|
|
* @brief i2c_master_checkAck.
|
|
*
|
|
* @param null
|
|
*
|
|
* @return the result of check ack
|
|
*/
|
|
bool i2c_master_checkAck(void);
|
|
|
|
/**
|
|
* @brief i2c master send Ack.
|
|
*
|
|
* @param null
|
|
*
|
|
* @return null
|
|
*/
|
|
void i2c_master_send_ack(void);
|
|
|
|
/**
|
|
* @brief i2c master send Nack.
|
|
*
|
|
* @param null
|
|
*
|
|
* @return null
|
|
*/
|
|
void i2c_master_send_nack(void);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#endif
|