60 lines
3.1 KiB
C
60 lines
3.1 KiB
C
|
|
#ifndef _MCU_BSP_I2C_H_
|
|||
|
|
#define _MCU_BSP_I2C_H_
|
|||
|
|
|
|||
|
|
#include "stm32f1xx_hal.h"
|
|||
|
|
|
|||
|
|
#define MCU_BSP_I2C_MASTER 0
|
|||
|
|
#define MCU_BSP_I2C_SALVE 1
|
|||
|
|
#define MCU_BSP_I2C_REG 2 // 即从设备带寄存器
|
|||
|
|
|
|||
|
|
/* I2C1的配置 */
|
|||
|
|
#define MCU_BSP_I2C1_USE_FLAG 1 // 硬件电路是否存在该功能
|
|||
|
|
#define MCU_BSP_I2C1_ID 1
|
|||
|
|
#define MCU_BSP_I2C1_CLOCKSPEED 400000 // 配置时钟速率400k
|
|||
|
|
#define MCU_BSP_I2C1_DUTYCYCLE I2C_DUTYCYCLE_2 // I2C的占空比为
|
|||
|
|
#define MCU_BSP_I2C1_I2C_ADDRESS1 0x0f // 如果为主模式为该I2C的地址,如果从模式为I2C的第一个从地址
|
|||
|
|
#define MCU_BSP_I2C1_ADDRESS_MODE I2C_ADDRESSINGMODE_7BIT // 7位地址寻址
|
|||
|
|
#define MCU_BSP_I2C1_DUALADDRESS_MODE I2C_DUALADDRESS_DISABLE // 主模式下,不启用双从地址
|
|||
|
|
#define MCU_BSP_I2C1_I2C_ADDRESS2 0xff // 如果为主模式则不会被使用,如果从模式为I2C的第二个从地址
|
|||
|
|
#define MCU_BSP_I2C1_GENERALCALL_MODE I2C_GENERALCALL_DISABLE // 广播模式失能
|
|||
|
|
#define MCU_BSP_I2C1_NOSTRETCH_MODE I2C_NOSTRETCH_DISABLE // 时钟延长模式失能
|
|||
|
|
|
|||
|
|
#define MCU_BSP_I2C1_SCL_GPIO GPIOB
|
|||
|
|
#define MCU_BSP_I2C1_SCL_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
|
|||
|
|
#define MCU_BSP_I2C1_SCL_GPIO_PIN GPIO_PIN_6
|
|||
|
|
|
|||
|
|
#define MCU_BSP_I2C1_SDA_GPIO GPIOB
|
|||
|
|
#define MCU_BSP_I2C1_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
|
|||
|
|
#define MCU_BSP_I2C1_SDA_GPIO_PIN GPIO_PIN_7
|
|||
|
|
|
|||
|
|
/* I2C2的配置 */
|
|||
|
|
#define MCU_BSP_I2C2_USE_FLAG 1 // 硬件电路是否存在该功能
|
|||
|
|
#define MCU_BSP_I2C2_ID 2
|
|||
|
|
#define MCU_BSP_I2C2_CLOCKSPEED 400000 // 配置时钟速率400k
|
|||
|
|
#define MCU_BSP_I2C2_DUTYCYCLE I2C_DUTYCYCLE_2 // I2C的占空比为
|
|||
|
|
#define MCU_BSP_I2C2_I2C_ADDRESS1 0x30f // 如果为主模式为该I2C的地址,如果从模式为I2C的第一个从地址
|
|||
|
|
#define MCU_BSP_I2C2_ADDRESS_MODE I2C_ADDRESSINGMODE_7BIT // 7位地址寻址
|
|||
|
|
#define MCU_BSP_I2C2_DUALADDRESS_MODE I2C_DUALADDRESS_DISABLE // 主模式下,不启用双从地址
|
|||
|
|
#define MCU_BSP_I2C2_I2C_ADDRESS2 0xff // 如果为主模式则不会被使用,如果从模式为I2C的第二个从地址
|
|||
|
|
#define MCU_BSP_I2C2_GENERALCALL_MODE I2C_GENERALCALL_DISABLE // 广播模式失能
|
|||
|
|
#define MCU_BSP_I2C2_NOSTRETCH_MODE I2C_NOSTRETCH_DISABLE // 时钟延长模式失能
|
|||
|
|
|
|||
|
|
#define MCU_BSP_I2C2_SCL_GPIO GPIOB
|
|||
|
|
#define MCU_BSP_I2C2_SCL_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
|
|||
|
|
#define MCU_BSP_I2C2_SCL_GPIO_PIN GPIO_PIN_10
|
|||
|
|
|
|||
|
|
#define MCU_BSP_I2C2_SDA_GPIO GPIOB
|
|||
|
|
#define MCU_BSP_I2C2_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
|
|||
|
|
#define MCU_BSP_I2C2_SDA_GPIO_PIN GPIO_PIN_11
|
|||
|
|
|
|||
|
|
int McuBspI2cInit(unsigned char I2cId);
|
|||
|
|
int McuBspI2cSendData(unsigned char type, unsigned char I2cId, unsigned short DevAddress, unsigned short MemAddress,
|
|||
|
|
unsigned short MemAddSize, unsigned char *pData, unsigned short Size);
|
|||
|
|
int McuBspI2cRecvData(uint8_t type, uint8_t I2cId, uint16_t DevAddress, uint16_t MemAddress,
|
|||
|
|
uint16_t MemAddSize, uint8_t *pData, uint16_t Size);
|
|||
|
|
/* IIC SLEEP */
|
|||
|
|
void McuBspI2cSleep(void);
|
|||
|
|
/* IIC WakeUp */
|
|||
|
|
void McuBspI2cWakeUp(void);
|
|||
|
|
#endif
|