news 2026/4/23 13:05:04

FreeRtos中I2C操作过程中被任务切换或者中断打断会不会出问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FreeRtos中I2C操作过程中被任务切换或者中断打断会不会出问题

疑问:一直有个疑问就是一些外设的驱动需不需要加临界区,比如i2c,我要写操作,要操作片选,写寄存器地址,写入数据,再操作片选。不加的话在写的中间有别的中断打断导致时序会不会出问题

答:如果是使用 MCU 的硬件外设(无论是 I2C/SPI 还是 UART): 不需要关中断。 因为硬件控制器(Shift Register)独立于 CPU 工作。CPU 被中断打断,只会导致‘两个字节之间’的发送间隔变长,而不会破坏‘一个字节内部’的波形时序。如果是软件模拟 (Bit-Bang):
模拟 I2C/SPI (同步): 不需要关中断。 因为你手里攥着时钟线 (SCL),你停,从机就停,波形只是暂停,不会畸变。
模拟 UART / 1-Wire(异步/时序敏感): 必须关中断! 这些协议靠‘脉冲持续时间’来通信。中断会把脉冲意外拉长,直接导致解码错误。

所以这里我们可以知道,如果是带有时钟线的,比如I2C,SPI这种,只用经过时钟线的调节才能正常接收的,任务切换和中断对他们没有影响,无论硬件I2C还是模拟I2C,不需要去管

但是单线通信的那种,使用的使用必须关中断,必须停止任务切换或者提高任务等级,如果水平不够,尽量不要去使用单总线通信的模块

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/13 5:44:30

物联网项目tp5怎么也获取不到请求的参数问题

做一个物联网项目时,thinkPHP5.0用常规的框架方法获取不到设备请求过来的参数,总是空。 最后用 原生PHP获取请求体 的方法得到了参数,也就是用PHP原生的方法获取参数,获取后为字符串,再转换为对象就可以用了 $raw fil…

作者头像 李华
网站建设 2026/4/19 3:46:07

2026牛客网春招面经,BATJ最新10000道Java中高级面试题,限时开源

前言: 想在面试、工作中脱颖而出?想在最短的时间内快速掌握 Java 的核心基础知识点?想要成为一位优秀的 Java 工程师?本篇文章能助你一臂之力! 目前正值招聘求职旺季,很多同学对一些新技术名词都能侃侃而…

作者头像 李华
网站建设 2026/4/23 12:01:42

技术面:如何让你的系统抗住高并发的流量?

前言 如何能让系统抗住高并发流量,要考虑的因素有很多,但是真的让你讲一下都有哪些,很多人肯定就会说,用Redis缓存啦,用MQ做解耦啦,总之就是想起来这一块儿就说一嘴,想起来那一块儿也说一嘴&am…

作者头像 李华
网站建设 2026/4/23 12:00:42

南加州大学让AI说话更有口音:语言学规则与神经网络的奇妙对话

当我们听到不同地区的人说英语时,总能轻松区分出美式英语和英式英语的差别。但如果要让计算机生成的语音也具备这种自然的口音变化,事情就变得复杂多了。南加州大学信号分析与解释实验室、计算机科学系和语言学系的研究团队最近在2026年IEEE国际声学、语…

作者头像 李华
网站建设 2026/4/23 12:02:34

面试官:RocketMQ 消息堆积了怎么处理?

面试考察点 面试官提出这个问题,主要希望考察候选人以下几个方面的能力: 问题诊断能力:候选人能否系统性地分析消息堆积的根源,而不仅仅是给出解决方案。这包括区分是 “生产者流量激增” 还是 “消费者消费能力不足” 导致的问题…

作者头像 李华