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 (1 *

该博客介绍了如何在EFM32(基于Cortex-M3内核)微控制器上使用GPIO模拟I2C总线,仅支持主机模式和7位地址。内容涵盖了IO管脚配置、I2C总线频率设定、起始条件、读写操作的实现,以及对外提供的I2C设备读写功能接口。
最低0.47元/天 解锁文章
8769

被折叠的 条评论
为什么被折叠?



