0
收藏
微博
微信
复制链接

STM32单片机如何选择I2C功能?

2025-12-25 10:34
398

想让STM32和传感器、OLED屏等外设"说上话"?I2C总线是低成本、低引脚数的通信利器。但面对CubeMX里一堆参数,新手往往一头雾水。本文用最直白的方式,拆解I2C功能选择的核心步骤。

1.png

一、硬件引脚:先看芯片有没有"I2C户口"

查手册:打开STM32数据手册,在"Alternate Function Mapping"章节找I2C1/I2C2/I2C3对应的引脚(如PB6-SCL、PB7-SDA)。

避冲突:确保选中的引脚没被其他功能占用(如USART、SPI),否则会"打架"。

上拉电阻:SDA/SCL必须接4.7KΩ~10KΩ上拉电阻,否则信号会"飘"。

二、CubeMX配置:三步走战略

选模式:在Connectivity选项卡勾选I2Cx(x=1/2/3),模式选"I2C"(别选SMBus等复杂模式)。

调速度:

标准模式(100kHz):适合低速设备(如EEPROM)

快速模式(400kHz):需PCLK1>4MHz,适合传感器(如MPU6050)

地址设置:

从设备地址长度:7位(常见)或10位(极少用)

双地址确认:多数设备用不上,保持默认关闭

三、通信模式:按需选择

阻塞模式:简单粗暴,适合单次读写(代码量最少,但会卡住CPU)。

中断模式:数据到自动触发中断,适合需要同时干其他事的场景(如边收数据边处理按键)。

DMA模式:大数据量传输不卡CPU,适合连续读写(如OLED屏刷新)。

关键提醒

地址左移:7位地址在代码里要左移1位(如0x50→0xA0),这是协议规定。

超时设置:别用HAL_MAX_DELAY,实际项目设个合理值(如10ms),避免死等。

硬件I2C vs 软件模拟:优先用硬件I2C(速度快、省CPU),但某些芯片硬件I2C有bug时可换软件模拟。


本文凡亿教育原创文章,转载请注明来源!

登录后查看更多
0
评论 0
收藏
侵权举报
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。

热门评论0

相关文章

电路之家

专注电子、科技分享,对电子领域深入剖解

开班信息