登录/注册

stm32f103c8t6 iic

更多

STM32F103C8T6 的 I2C 配置与使用指南

1. 硬件基础


2. 软件配置步骤(以标准外设库为例)

2.1 时钟与GPIO初始化

// 使能时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);

// 配置GPIO为复用开漏模式
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; // SCL: PB6, SDA: PB7
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_OD;        // 复用开漏
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStruct);

2.2 I2C 参数配置

I2C_InitTypeDef I2C_InitStruct;
I2C_InitStruct.I2C_Mode = I2C_Mode_I2C;
I2C_InitStruct.I2C_DutyCycle = I2C_DutyCycle_2;      // 时钟占空比(标准/快速模式)
I2C_InitStruct.I2C_OwnAddress1 = 0x00;               // 主模式无需从机地址
I2C_InitStruct.I2C_Ack = I2C_Ack_Enable;             // 使能ACK
I2C_InitStruct.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
I2C_InitStruct.I2C_ClockSpeed = 100000;              // 100kHz 标准模式

I2C_Init(I2C1, &I2C_InitStruct);
I2C_Cmd(I2C1, ENABLE);                               // 使能I2C外设

3. 主模式发送数据示例

// 向从机(地址0xA0)发送单字节数据
void I2C_WriteByte(uint8_t devAddr, uint8_t regAddr, uint8_t data) {
    // 发送起始条件
    I2C_GenerateSTART(I2C1, ENABLE);
    while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT)); // 等待EV5

    // 发送从机地址(写模式)
    I2C_Send7bitAddress(I2C1, devAddr, I2C_Direction_Transmitter);
    while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)); // 等待EV6

    // 发送寄存器地址
    I2C_SendData(I2C1, regAddr);
    while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)); // 等待EV8_2

    // 发送数据
    I2C_SendData(I2C1, data);
    while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));

    // 发送停止条件
    I2C_GenerateSTOP(I2C1, ENABLE);
}

4. 常见问题与解决方法

4.1 通信无应答

4.2 总线锁死

4.3 事件标志未触发


5. 关键注意事项

通过以上步骤,可快速上手STM32F103C8T6的I2C通信。实际开发中建议结合STM32CubeMX生成初始化代码,简化配置流程。

STM32为什么首选F103C8T6

STM32F103C8T6是STMicroelectronics(ST)推出的一款基于ARMCortex-M3内核的32位微控制器单片机(MCU)。它具有一系列优势和广泛的应用场景。这里就来介绍一下

2024-05-18 08:04:25

stm32f103c8t6读内部温度

STM32F103C8T6是一款32位的Cortex-M3内核微控制器,它拥有丰富的外设资源和强大的计算能力,可以广泛应用于各种嵌入式系统中。其中一个重要的功能是能够使用内部传感器来读取芯片的温度

2024-01-08 13:48:46

stm32f103c8t6怎么连接噪声传感器

连接噪声传感器到STM32F103C8T6需要以下步骤: 确定传感器和STM32F103C8T6之间的连接接口。噪声传感器通常使用模拟信号输出,可以将其连接到

2023-12-21 16:10:05

STM32F103C8t6程序下载

STM32F103C8t6程序下载

资料下载 golabs 2021-11-24 18:21:06

STM32F103C8T6原理图

STM32F103C8T6原理图免费下载。

资料下载 bye陈发树 2021-06-02 10:01:10

STM32F103C8T6核心板资料汇总

STM32F103C8T6核心板资料汇总

资料下载 jf_42320578 2021-05-20 15:31:18

STM32F103C8T6单片机原理图下载

STM32F103C8T6单片机原理图下载

资料下载 ah此生不换 2021-04-12 09:36:07

STM32F103C8T6核心板的资料合集免费下载

本文档的主要内容详细介绍的是STM32F103C8T6核心板的资料合集免费下载包括了:STM32F103C8T6核心板测试程序(PC13闪烁),STM32F1

资料下载 浮世漂流 2020-06-04 08:00:00

ch32f103c8t6stm32f103c8t6的区别

ch32f103c8t6与stm32f103c8t6的区别 STM32F103C8T6是一款32位微处理器,属于

2023-08-22 16:05:41

STM32F103C8T6中断特征介绍 用按钮为STM32 MCU触发一个中断

中断是MCU的特征之一,STM32F103C8T6也不例外。以下通过STM32F103C8T6 Blue Pill外接一个按钮,向MCU触发外部中断。

2022-05-17 08:57:14

STM32F103C8T6STM32F103CBT6的区别

一 序:1 STM32F103C8T6和STM32F103CBT6 引脚相同,唯一的区别是前者为64kflash(0x8000000~0x800FFFF) 后者为128kflash

2022-01-26 08:19:25

STM32f103c8t6的引脚有哪些

STM32f103c8t6的引脚有哪些?STM32f103c8t6的引脚是如何定义的?

2021-10-26 07:27:55

深圳高价回收STM32F103C8T6 收购STM32F103C8T6

大量收购工厂库存ST电子芯片STM32F103C8T6 ,实力收购工厂库存ST芯片STM32F103C8T6 ,回收价格高!!财富热线 帝欧电子 赵先生 ***同步微信 )QQ:879821252

2021-08-30 16:10:30

芯片使用STM32F103C8T6

芯片使用STM32F103C8T6,用到的资源有TIM | ADC | DMA | RTC实时时钟 | USART | IIC总线,详细记录了安装keil5->新建工程->程序实现 整个过程。

2021-08-03 08:18:26
7天热门专题 换一换
相关标签