打印
[STM32C0]

软件I2C用在从机上是不是不靠谱?

[复制链接]
441|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Bblythe|  楼主 | 2025-4-24 07:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
主机轮询的时候从机总是反应不过来,软件模拟时序是不是太吃性能了?

使用特权

评论回复
沙发
Clyde011| | 2025-4-24 07:24 | 只看该作者
有些主机对ACK要求特别严格。

使用特权

评论回复
板凳
公羊子丹| | 2025-4-24 07:25 | 只看该作者
感觉软件模拟做主机还行,从机真不行。

使用特权

评论回复
地板
周半梅| | 2025-4-24 07:26 | 只看该作者
你是中断模拟的还是定时器驱动的?

使用特权

评论回复
5
帛灿灿| | 2025-4-24 07:27 | 只看该作者
会不会是响应速度跟不上主机?

使用特权

评论回复
6
童雨竹| | 2025-4-24 07:28 | 只看该作者
我用硬件I2C才勉强稳定。

使用特权

评论回复
7
万图| | 2025-4-24 07:28 | 只看该作者
软件I2C容易出应答问题。

使用特权

评论回复
8
Wordsworth| | 2025-4-24 07:29 | 只看该作者
拿逻辑分析仪抓一波看看。

使用特权

评论回复
9
Bblythe|  楼主 | 2025-4-24 07:30 | 只看该作者
是不是拉电阻选得太小了?

使用特权

评论回复
10
Pulitzer| | 2025-4-24 07:31 | 只看该作者
用DMA能不能优化一下?

使用特权

评论回复
11
Uriah| | 2025-4-24 07:32 | 只看该作者
实时性要求高还是别用软件版。

使用特权

评论回复
12
风凉| | 2025-5-18 16:48 | 只看该作者
SCL信号响应延迟,若CPU被中断或高优先级任务占用,可能无法及时响应SCL时钟边沿,导致从机时钟不同步(Clock Stretching失效)。

使用特权

评论回复
13
捧一束彼岸花| | 2025-5-18 16:55 | 只看该作者
软件I2C通过GPIO模拟SCL/SDA信号,依赖CPU循环和延时函数控制时序,无法像硬件I2C(如STM32的I2C外设)那样精确生成时钟脉冲。

使用特权

评论回复
14
失物招領| | 2025-5-18 17:02 | 只看该作者
STM32C0的硬件I2C外设已被占用(如同时连接多个传感器)。芯片型号无硬件I2C(如部分超低成本MCU)。软件I2C可作为替代方案,但需权衡可靠性

使用特权

评论回复
15
故意相遇| | 2025-5-18 19:00 | 只看该作者
SDA信号竞争:在多主机系统中,若多个主机同时尝试通信,软件I2C可能无法正确处理总线仲裁,导致数据冲突。

使用特权

评论回复
16
春日负喧| | 2025-5-18 19:30 | 只看该作者
问题根源,软件I2C依赖CPU轮询或中断检测总线状态,若CPU忙于其他任务(如RTOS调度、中断处理),可能错过SCL边沿或SDA状态变化。

使用特权

评论回复
17
她已醉| | 2025-5-18 20:01 | 只看该作者
数据丢失,若从机未及时检测到起始条件或地址匹配,可能漏读数据。

使用特权

评论回复
18
西洲| | 2025-5-18 23:00 | 只看该作者
ACK/NACK错误,若从机在发送ACK/NACK时被中断打断,可能导致总线卡死

使用特权

评论回复
19
白马过平川| | 2025-5-19 10:00 | 只看该作者
.软件I2C需要持续占用CPU资源检测总线状态,尤其在高速模式(如400kHz)下,CPU需频繁轮询或中断处理。

使用特权

评论回复
20
温室雏菊| | 2025-5-19 23:00 | 只看该作者
从机会影响其他任务:在RTOS系统中,若软件I2C任务优先级过高,可能阻塞其他实时任务;若优先级过低,则可能因调度延迟导致时序错误。

使用特权

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

本版积分规则

91

主题

4953

帖子

0

粉丝