1、使用IO模拟简单的I2C总线,仅支持主机模式和7位地址;
2、基于EFM32(CORTEX-M3内核);
3、第一段定义IO管脚及其操作,可修改这部分适配其它MCU;
4、第二段定义模拟的I2C总线频率;
5、第三段定义总线的起始、读写等基本操作;
6、第四段是对外的功能接口,实现了较为常用的I2C设备直接读写和I2C设备内部寄存器读写。
#include "em_gpio.h"
/***********************************************************************************************
* IIC BUS PORT DEFINITION START
************************************************************************************************/
#define DATApin gpioPortB, 11
#define SCKpin gpioPortB, 12
#define PinOpOpen(p)
#define PinOpOut(p) GPIO_PinModeSet(p, gpioModePushPull, 1)
#define PinOpIn(p) GPIO_PinModeSet(p, gpioModeInputPull, 1)
#define PinOpSet(p) GPIO_PinOutSet(p)
#define PinOpClr(p) GPIO_PinOutClear(p)
#define PinOpGet(p) GPIO_PinInGet(p)
#define PinOpClose(p) GPIO_PinModeSet(p, gpioModeDisabled, 1)
/***********************************************************************************************
* IIC BUS PORT DEFINITION END
************************************************************************************************/
/***********************************************************************************************
* IIC BUS FREQ DEFINITION START
************************************************************************************************/
#define IIC_BUS_FREQ