登录/注册

stm32f103 i2c gpio

更多

在STM32F103系列MCU中配置I2C通信时,GPIO的设置是关键步骤之一。以下是核心要点:


1. I2C引脚分配

STM32F103的I2C模块通常使用以下引脚(默认复用功能):


2. GPIO配置步骤

(1) 启用时钟

// 启用GPIOB时钟(假设使用PB6/PB7)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
// 启用I2C1时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);

(2) 配置GPIO模式

I2C通信需要将GPIO设置为复用开漏输出模式,并启用内部/外部上拉电阻:

GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;  // PB6(SCL), PB7(SDA)
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_OD;        // 复用开漏模式
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;       // 速度可选
GPIO_Init(GPIOB, &GPIO_InitStruct);

3. I2C模块配置(以标准库为例)

I2C_InitTypeDef I2C_InitStruct;
I2C_InitStruct.I2C_Mode = I2C_Mode_I2C;
I2C_InitStruct.I2C_DutyCycle = I2C_DutyCycle_2;      // 50%占空比
I2C_InitStruct.I2C_OwnAddress1 = 0xA0;               // 本机地址(7位或10位)
I2C_InitStruct.I2C_Ack = I2C_Ack_Enable;             // 启用应答
I2C_InitStruct.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
I2C_InitStruct.I2C_ClockSpeed = 100000;              // 100kHz标准模式
I2C_Init(I2C1, &I2C_InitStruct);
I2C_Cmd(I2C1, ENABLE);                               // 启用I2C1

4. 常见问题排查


5. HAL库配置(替代方案)

若使用STM32CubeMX/HAL库,可通过以下代码初始化:

// GPIO配置
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitTypeDef gpio;
gpio.Pin = GPIO_PIN_6 | GPIO_PIN_7;
gpio.Mode = GPIO_MODE_AF_OD;
gpio.Pull = GPIO_PULLUP;
gpio.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB, &gpio);

// I2C配置
hi2c1.Instance = I2C1;
hi2c1.Init.ClockSpeed = 100000;
hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
hi2c1.Init.OwnAddress1 = 0xA0;
hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
HAL_I2C_Init(&hi2c1);

如有具体问题(如通信超时、ACK失败等),请提供更多细节以进一步分析!

请问STM32F103 I2C通信和SPI通信哪种方式更稳定?

STM32F103这颗料I2C通信和SPI通信哪种方式更稳定?

2024-03-22 06:24:49

STM32F103系列做PMBus的主机和I2C再配置上有什么区别吗?

有没有人用STM32F103系列做过PMBus的主机呀?和I2C再配置上有什么区别吗?

2024-03-13 07:41:56

STM32F103 GPIO内部电路图讲解

STM32F103 GPIO内部电路图讲解

2023-02-01 16:32:14

STM32f103系列i2c读写文件at24c02

STM32f103系列i2c读写文件at24c02免费下载。

资料下载 heianqishi1118 2022-03-04 09:43:47

STM32F103硬件I2C Slave

MCU:STM32F103IDE:STM32CubeIDEHAL库硬件I2C当作Slave,模拟EEPROM行为测试工具:树莓派为

资料下载 goodmbby 2021-12-20 19:38:54

STM32F103 硬件I2C主从机通信

STM32F103 硬件I2C主从机通信

资料下载 名士流 2021-12-07 12:06:10

STM32作为I2C从机中断接收和从模式中断应答数据总结

之前在项目中用到了STM32F103的i2c功能,大致功能是两个单片机进行i2c通信,而且通信模式是主问从答模式。这里我研究了一下

资料下载 远不及你 2021-12-02 19:21:32

STM32 通用GPIO模拟I2C实现

STM32 模拟I2C实现#通用GPIO模拟I2C通信实现样例1

资料下载 山中老虎 2021-11-29 15:21:08

STM32F103硬件I2C Slave的相关资料分享

MCU:STM32F103IDE:STM32CubeIDEHAL库硬件I2C当作Slave,模拟EEPROM行为测试工具:树莓派为

2022-02-17 06:59:50

STM32F103STM32F103F407寄存器和配制差异

别。默认复用功能:只需要开启该外设的时钟和相对应的GPIO时钟,然后再配置相应外设即可。(例:开启I2c时钟和PB6和PB7时钟)重映射复用:不仅要开启该外设的时钟和相对应的

2022-01-24 06:08:29

STM32F103I2C软件模拟实验

例程:STM32F103系列 I2C软件模拟实验(mini板)问题:下面两行关于“IO方向”的代码不太明白。//IO 方向设置#define SDA_IN() {GPIOC->CRH&=0XFFFF0F

2022-01-18 08:14:34

STM32F103 Slave I2C配置过程是怎样的?

STM32F103 Slave I2C配置过程是怎样的?

2021-12-14 06:57:59

STM32F103系列芯片的相关资料推荐

信号线。内核通过总线矩阵与FLASH、SRAM、外设连接。而外设包括GPIO、USART、I2C、SPI等。STM32芯片系统结构

2021-12-10 07:16:35

STM32F103 硬件I2C主从机通信 精选资料分享

肝了这么多天,查了很多资料,逛了不少论坛终于把stm32f103的硬件I2C写出来了,就先做个记录。开发板是自己画的兼容原子精英两块板子,型号是f103

2021-08-11 06:04:15

stm32f030和stm32f103功能差异

stm32f030和stm32f103功能差异主要表现在哪?

2021-07-22 09:35:47

7天热门专题 换一换
相关标签