CIU32 I2C — I2C1 从机轮询

CIU32 CIU32F003_STDLib V1.0.3 I2C I2C1 从机轮询 示例教学

I2C — I2C1 从机轮询

固件库: CIU32F003_STDLib V1.0.3
芯片: CIU32
源文件: CIU32/CIU32F003_STDLib_V1.0.3/Projects/I2C/I2C1_Slave_Poll/Source/main.c


功能简介

本示例演示 I2C 轮询方式通信。CPU 等待每个字节传输完成,简单但效率较低。

硬件准备

  • I2C 从设备(如 EEPROM、传感器模块)
  • SCL/SDA 线上需要 4.7K 上拉电阻

完整代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include "main.h"

int main(void)
{    
    /* ϵͳʱ */
    system_clock_config();
    
    /* I2C1LED GPIOʼ */
    gpio_init();
    
    /* I2C1ʼΪģʽ */
    i2c1_slave_init();
    
    /* LEDָʾӻ */
    std_gpio_reset_pin(LED_GPIO_PORT, LED_PIN);

    /* I2C */
    bsp_i2c1_slave_receive();
    
    /* I2C */
    bsp_i2c1_slave_send();
    
    while(1)
    {
        
    }
}

代码讲解

系统时钟初始化:配置 MCU 的主频和时钟树。不同芯片的时钟配置不同,一般由工具生成。

GPIO 配置:设置引脚为输出/输入模式,选择推挽/开漏输出,配置上拉/下拉。

实验现象

  • 主机和从机完成数据收发
  • 校验通过 LED 指示成功

注意事项

  • I2C 总线需要上拉电阻(一般 4.7K)
  • 从机地址要与设备手册一致(注意 7 位/8 位地址的区别)
  • 写 EEPROM 后需要等待 5ms 以上再读
世界是你们
使用 Hugo 构建
主题 StackJimmy 设计