MXCHIP+Core1081的I2C
前天测试了下 下V1.19中 I2C 的实验。
也得到了 实验现象:
查看MX1081_IO.H 文件 找到:
#define USE_I2C1 I2C1
//#define USE_I2C2 I2C2
#if defined (USE_I2C1)
#define USE_I2Cx USE_I2C1
#define USE_I2Cx_CLK RCC_APB1Periph_I2C1
#define USE_I2Cx_INIT RCC_APB1PeriphClockCmd
#define USE_I2Cx_SDA_PIN GPIO_Pin_7
#define USE_I2Cx_SDA_SOURCE GPIO_PinSource7
#define USE_I2Cx_SDA_PORT GPIOB
#define USE_I2Cx_SDA_CLK RCC_AHB1Periph_GPIOB
#define USE_I2Cx_SDA_AF GPIO_AF_I2C1
#define USE_I2Cx_SCL_PIN GPIO_Pin_6
#define USE_I2Cx_SCL_SOURCE GPIO_PinSource6
#define USE_I2Cx_SCL_PORT GPIOB
#define USE_I2Cx_SCL_CLK RCC_AHB1Periph_GPIOB
#define USE_I2Cx_SCL_AF GPIO_AF_I2C1
#elif defined (USE_I2C2)
#define USE_I2Cx USE_I2C2
#define USE_I2Cx_CLK RCC_APB1Periph_I2C2
#define USE_I2Cx_INIT RCC_APB1PeriphClockCmd
#define USE_I2Cx_SDA_PIN GPIO_Pin_0
#define USE_I2Cx_SDA_SOURCE GPIO_PinSource0
#define USE_I2Cx_SDA_PORT GPIOF
#define USE_I2Cx_SDA_CLK RCC_AHB1Periph_GPIOF
#define USE_I2Cx_SDA_AF GPIO_AF_I2C2
#define USE_I2Cx_SCL_PIN GPIO_Pin_1
#define USE_I2Cx_SCL_SOURCE GPIO_PinSource1
#define USE_I2Cx_SCL_PORT GPIOF
#define USE_I2Cx_SCL_CLK RCC_AHB1Periph_GPIOF
#define USE_I2Cx_SCL_AF GPIO_AF_I2C2
#endif
不难发现 Core1081的核芯片 MX1081内部集成了2个I2C 总线接口。
也可参看 Core1081的一些官方资料:
因此,Core1081提供了2路I2C总线接口供我们使用。只需配置下 #define USE_I2C1 I2C1 #define USE_I2C2 I2C2 就可使用。
简单分析在main.c 程序,主要用到下面的函数:
I2C_Configuration(); //对I2C总线接口进行参数配置
I2C_Write(USE_I2Cx,ADDR_24LC02,0,WriteBuffer,sizeof(WriteBuffer) ); // 向EEPROM写数据
I2C_Read(USE_I2Cx,ADDR_24LC02,0,ReadBuffer,sizeof(WriteBuffer) ); // 从EEPROM读数据
这些函数的定义可以在24C02.c文件中找到。
STM32F2系列的芯片 I2C接口特性
另外摘录一些资料:
I2C 协议
I2C (Inter-Integrated Circuit)协议是由Phiilps公司开发的,由于它具引脚少,硬件实现简单,可扩展性强,不需要如USART、CAN的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。
谢谢分享