news 2026/5/13 1:18:41

第二十一届智能车雁过留痕组 逐飞库 WiFi SPI 与摄像头共存时数据震荡问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第二十一届智能车雁过留痕组 逐飞库 WiFi SPI 与摄像头共存时数据震荡问题

借助claude code解决 逐飞库STC32G144K 上 WiFi SPI 与 MT9V03X 摄像头共用时,示波器数据震荡问题。

根因:逐飞库exit_init(INT1_P33, BOTH)BOTH在 8051 上是电平触发(IT1=0)。VSYNC 低电平期间 INT1 每个时钟周期都触发,IE1 不断被硬件置位,与 SPI DMA 的寄存器轮询产生 SFR 总线竞争,导致数据错乱。

解决:发送 WiFi 数据时临时EX1=0关中断,发完EX1=1恢复。仅影响发送的几毫秒,不影响摄像头和图像处理

省流:

在 SPI DMA 轮询的几毫秒内屏蔽 INT1,发完立刻恢复

一.摄像头与wifi发送波形信号分开写

结果:波形在目标值和0直接反复横跳

如图

二.注释摄像头初始化函数

结果:得到平滑波形

问题在摄像头某处与wifi冲突

三.参考逐飞摄像头wifi图传

得到平滑波形

四.加上图像处理

结果:震荡

深入底层:

在exit_init(INT1_P33, BOTH)这个函数调用上。

逐飞库的外部中断初始化函数exit_init中,BOTH枚举值为 0:

typedef enum { BOTH, // = 0 FALLING_EDGE, // = 1 } INT_MODE_enum; void exit_init(INTN_enum int_n, INT_MODE_enum mode) { IT1 = mode; // BOTH=0 → IT1=0 EX1 = 1; }

在 8051 架构上,IT1=0意味着电平触发,而非"双边沿触发"(8051 根本没有双边沿模式)。MT9V03X 摄像头的 VSYNC 信号接在 P3.3(INT1),时序如下:

  • VSYNC 高电平:帧间空闲期(~2ms)
  • VSYNC 低电平:帧读出期(~18ms)

当 VSYNC 为低电平时,由于是电平触发,INT1 中断每个机器周期都在触发,硬件不断置位 IE1 标志位。

与此同时,WiFi SPI 模块通过 SPI2 DMA 发送数据,底层实现是轮询 DMA 状态寄存器:

DMA_SPIX_CR(spi_n) = 0xC1; // 启动DMA while(!(DMA_SPIX_STA(spi_n) & 0x01)); // 轮询等待完成 ← 这里被干扰

当 INT1 持续触发时,IE1 标志位不断被硬件写入,与 SPI DMA 的寄存器轮询产生SFR 总线竞争,导致读到错误的 DMA 状态值,数据传输错乱 → 示波器波形震荡。

有无图像处理结果不同分析:

情况一:不加图像处理 —— 好使

没有图像处理时,主循环跑得很快:

摄像头拍完 → 收到flag → 发WiFi → 回到循环顶部 → 等下一帧拍完 → 再发...

每帧只花几微秒发 WiFi,然后就回到循环顶部等着。发 WiFi 的时候,VSYNC 是高电平(帧间空闲期),中断不会疯狂触发,所以数据传输正常,波形平滑。


情况二:加上图像处理 —— 震荡

加上图像处理后,主循环变慢了:

摄像头拍完 → 收到flag → 发WiFi → 图像处理(耗时20ms以上!)→ 回到循环顶部

图像处理要 20 多毫秒,而摄像头一帧 10ms。也就是说,图像处理还没做完,下一帧就已经拍完了

当图像处理结束回到循环顶部时,flag 已经被新帧置位了,程序立刻又进入发送流程。但这时候摄像头正在读出新帧,VSYNC 是低电平

低电平 + 电平触发 = 中断每个时钟周期都在疯狂触发。

最终解决:

在 SPI DMA 轮询的几毫秒内屏蔽 INT1,发完立刻恢复

—— ——由claude(mimo-2.5-pro)激情解答,本次token消耗,1亿。嘤嘤嘤

不一定正确,仅供参考

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

模块二-数据选择与索引——09. query() 方法

09. query() 方法 1. 概述 query() 方法是 Pandas 提供的一种使用字符串表达式进行数据筛选的方式。相比布尔索引,query() 更简洁、可读性更强,特别适合复杂条件筛选。 import pandas as pd import numpy as np# 创建示例数据 np.random.seed(42) df pd…

作者头像 李华
网站建设 2026/5/13 1:16:06

基于Node.js构建高效CLI工具:从原理到实践

1. 项目概述:一个为开发者赋能的命令行工具最近在整理自己的开发工具链时,发现很多重复性的脚手架搭建、项目初始化、依赖管理操作,虽然单个步骤不复杂,但组合起来既耗时又容易出错。这让我想起了之前接触过的一个开源项目&#x…

作者头像 李华
网站建设 2026/5/13 1:15:11

IGF-I Analog ;CYAAPLKPALSSC

一、基础信息多肽名称:IGF-I Analog 胰岛素样生长因子 I 类似物 三字母序列:Cys-Tyr-Ala-Ala-Pro-Leu-Lys-Pro-Ala-Lys-Ser-Cys 单字母序列:CYAAPLKPALSSC 氨基酸数量:12 aa 结构修饰:分子内二硫键 二硫键配对&#xf…

作者头像 李华
网站建设 2026/5/13 1:14:42

当资本垄断审美,《凰标》偏要立东方标准@凤凰标志

当资本把“国风”压缩成滤镜,把“东方”稀释成标签, 我们需要的不是另一场流量狂欢,而是一把能劈开垄断的刀。 ——题记 一、被资本托管的审美:一场长达数十年的“失语症” 资本审美特征东方美学原本模样被异化后的结果西式冲突叙…

作者头像 李华
网站建设 2026/5/13 1:14:37

如何为知识图谱选择合适的本体(Ontology)抽取方法

从业者指南:厘清图谱范式抽取技术选型——从经典规则模式方案到大模型驱动方案 面向生产级知识图谱的最优本体抽取方案——大模型 VS 模型微调 知识图谱的构建,概念上看似简单:抽取实体、识别关系,并将其结构化形成图谱。但所有实…

作者头像 李华
网站建设 2026/5/13 1:14:00

AI 应用开发的流程

AI 大模型的应用开发与传统软件开发相比,重心从“逻辑编码”转向了“上下文管理”和“模型调优”。目前主流的开发流程通常遵循以下五个核心阶段:1. 业务定义与技术选型在开始之前,需要确定 AI 在系统中的定位:是作为辅助插件&…

作者头像 李华