院儿饯 发表于 2025-12-22 12:20:00

STM32软件IIC通信驱动文件(附下载地址)

下载方法


[*]访问git仓库: Guardian-Elf/Guardian-Elf-Embedded
[*]找到并下载IIC驱动文件(2个文件:I2C.c和I2C.h)
[*]由于IIC文件中使用了延时函数(Delay.c/.h),所以也需要下载延时函数,当然也可以自己写一个延时函数
驱动移植


[*]配置引脚,根据需求在代码中修改引脚
I2C.c

// 引脚配置
#define I2C_SCL_PIN GPIO_PIN_14
#define I2C_SDA_PIN GPIO_PIN_15
#define I2C_PORT    GPIOC
#define HAL_RCC_GPIOx_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
[*]标准库移植
若使用的是标准库,至需要将I2C_Init到I2C_R_SDA共4个函数改成标准库写法即可(可以使用AI帮你写)
事实上,我的这个驱动函数就是使用别人的标准库改的,并添加了格外的功能函数
函数解析

// 初始化

void I2C_Init(void) // 初始化I2C总线的GPIO引脚(SCL和SDA),配置为开漏输出模式,并设置默认高电平

// 引脚相关

void I2C_W_SCL(uint8_t BitValue) // 向I2C时钟线(SCL)写入指定的电平值(0或1),并延时10微秒
void I2C_W_SDA(uint8_t BitValue) // 向I2C数据线(SDA)写入指定的电平值(0或1),并延时10微秒
uint8_t I2C_R_SDA(void) // 读取I2C数据线(SDA)的当前电平状态,并延时10微秒后返回电平值

// IIC基本操作

void I2C_Start(void) // 产生I2C起始信号:SCL高电平期间,SDA从高电平跳变到低电平
void I2C_Stop(void) // 产生I2C停止信号:SCL高电平期间,SDA从低电平跳变到高电平

uint8_t I2C_RecvACK(void) // 接收从机发送的应答位(ACK),返回0表示应答,1表示非应答
void I2C_SendACK(uint8_t ack) // 向从机发送应答位(ACK),参数为0表示应答,1表示非应答

void I2C_SendByte(uint8_t dat) // 发送一个字节数据到I2C总线,从最高位开始逐位发送
uint8_t I2C_RecvByte(void) // 从I2C总线接收一个字节数据,从最高位开始逐位接收并组装

// 进一步封装常用操作

uint8_t I2C_CheckDevice(uint8_t addr) // 检测指定地址的I2C设备是否存在,返回0表示设备应答存在
uint8_t I2C_ScanDevice(uint8_t* devices, uint8_t max) // 扫描I2C总线上所有设备地址(0-127),将找到的设备地址存入数组,返回找到的设备数量

uint8_t I2C_ReadReg(uint8_t addr, uint8_t reg) // 从指定I2C设备的寄存器中读取一个字节数据
void I2C_WriteReg(uint8_t addr, uint8_t reg, uint8_t data) // 向指定I2C设备的寄存器写入一个字节数据

void I2C_SendBytes(uint8_t addr, uint8_t *buf, uint8_t len) // 向指定I2C设备连续发送多个字节数据
void I2C_RecvBytes(uint8_t addr, uint8_t *buf, uint8_t len) // 从指定I2C设备连续接收多个字节数据结语

如果觉得有帮助到你,就请给仓库一个 star 吧!
git仓库: Guardian-Elf/Guardian-Elf-Embedded

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

屠焘 发表于 2025-12-22 13:31:48

收藏一下   不知道什么时候能用到

呶募妙 发表于 2025-12-24 10:53:30

用心讨论,共获提升!

柩通奉 发表于 2026-1-20 08:46:54

新版吗?好像是停更了吧。

育局糊 发表于 2026-1-20 21:02:40

鼓励转贴优秀软件安全工具和文档!

捡嫌 发表于 2026-1-21 15:02:17

谢谢楼主提供!

釉她 发表于 2026-1-21 18:31:54

用心讨论,共获提升!

柏雅云 发表于 2026-1-23 09:14:34

感谢,下载保存了

翁真如 发表于 2026-1-25 09:34:02

这个有用。

玻倌瞽 发表于 2026-1-27 07:55:51

前排留名,哈哈哈

柩通奉 发表于 2026-2-2 21:50:42

谢谢楼主提供!

糙昧邵 发表于 2026-2-3 04:46:02

谢谢分享,试用一下

陆菊 发表于 2026-2-3 07:04:35

感谢分享,下载保存了,貌似很强大

喳谍 发表于 2026-2-6 05:11:16

感谢发布原创作品,程序园因你更精彩

饨篦 发表于 2026-2-6 10:42:44

感谢分享,下载保存了,貌似很强大

滕佩杉 发表于 2026-2-6 13:17:40

谢谢楼主提供!

孜尊 发表于 2026-2-7 23:01:40

谢谢分享,试用一下

宛蛲 发表于 2026-2-8 14:21:31

这个好,看起来很实用

茹静曼 发表于 2026-2-9 01:33:06

很好很强大我过来先占个楼 待编辑

那虻 发表于 2026-2-9 04:25:51

新版吗?好像是停更了吧。
页: [1] 2
查看完整版本: STM32软件IIC通信驱动文件(附下载地址)