打印
[STM32F1]

I2C串行外设接口驱动

[复制链接]
49|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaoqi000|  楼主 | 2024-12-31 02:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
I2C 是一种常用的多主从串行总线协议,广泛应用于传感器和 EEPROM 等设备的通信。

I2C初始化
配置 I2C 外设:
c
复制代码
I2C_HandleTypeDef hi2c1;

// 配置 I2C1
hi2c1.Instance = I2C1;
hi2c1.Init.ClockSpeed = 100000;    // 100 kHz
hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;  // 占空比 50%
hi2c1.Init.OwnAddress1 = 0x30;     // 从设备地址 0x30
hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; // 7 位寻址模式
hi2c1.Init.Ack = I2C_ACK_ENABLE;    // 启用应答
hi2c1.Init.AcknowledgedAddress = I2C_ACKNOWLEDGEDADDRESS_7BIT;
HAL_I2C_Init(&hi2c1);

使用特权

评论回复
沙发
xiaoqi000|  楼主 | 2024-12-31 02:59 | 只看该作者
发送数据:
c
复制代码
uint8_t txData[] = {0x01, 0x02, 0x03};
HAL_I2C_Master_Transmit(&hi2c1, 0x30 << 1, txData, sizeof(txData), HAL_MAX_DELAY);

使用特权

评论回复
板凳
xiaoqi000|  楼主 | 2024-12-31 03:02 | 只看该作者
接收数据:
c
复制代码
uint8_t rxData[3];
HAL_I2C_Master_Receive(&hi2c1, 0x30 << 1, rxData, sizeof(rxData), HAL_MAX_DELAY);

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

760

帖子

0

粉丝