SPI总线冲突——一个器件通讯为什么干扰另一个
一句话: 两个芯片挂在同一条 SPI 上DAC 通讯一次ADC 的配置寄存器就被干扰一次。ADC 读数比实际电压低五六倍换通道、改配置、加延时全没用。根因不是驱动写错了是硬件 SPI 外设共享时没有隔离干净。适合谁读SPI 总线上多个器件一个通讯另一个就异常的嵌入式开发者。现象ADC 两个通道读数异常。1.36V 信号输入ADC 只读出约 260mV 等价值——低五六倍。换通道、改配置寄存器、加 SPI 延时——读数纹丝不动。排查过程按顺序逐一排除步骤检查项结果1ADC 内部基准电压2.47V正常2CFG 寄存器REF、INCC、通道地址全部正确3前端运放增益正常信号没问题4SPI 总线DAC 和 ADC 共用 SPI2前三个都排除了。问题指向 SPI 总线。根因DAC 和 ADC 挂同一条 SPI2。两个器件各自有 CS 片选——选中谁谁说话。但片选管的是数据发给谁不管总线上的波形不会串到另一个器件的寄存器。DAC 通讯时 SPI2 总线上的 SCK 和 MOSI 活动——ADC 虽然 CS 没拉低但在某些芯片上SCK 的边沿信号可能被 ADC 意外识别为串行输入悄悄改了配置寄存器。DAC 每通讯一次ADC 的 CFG 寄存器就可能被污染一次。每次改 CFG 值、换通道配置——下一次 DAC 通讯又给你破坏了。改代码永远追不上污染的节奏。你用示波器分别量两个器件的 CS/SCK/MOSI 都正常——各自的帧格式都对。但问题是 ADC 的配置被额外的 SCK 边沿改了这种损坏在波形上看不出来——因为寄存器值变了但外部引脚没异常。解决GPIO 软件模拟 SPIbit-bang替代硬件 SPI。用四个 GPIO 引脚模拟 SPI 时序——只在该 ADC 通讯的时候手动产生 SCK其他时候总线上完全安静。// 硬件 SPI总线在整个通信期间活跃干扰邻居 SPI2_Transmit(data, len); // GPIO bit-bang只在需要的时候手动翻转引脚 CNV_LOW(); // 开始转换 SPI_BitBang_Write(cfg); // 手动 16 个 SCK 发 CFG uint16_t val SPI_BitBang_Read(); // 手动 16 个 SCK 读数据 CNV_HIGH(); // 结束转换同时加了引脚切换机制——ADC 和 DAC 共用 GPIOB 引脚用之前切 GPIO 模式bit-bang用完之后切回 AF 模式SPI2DAC 正常用硬件 SPI。s_Pins_To_GPIO(); → PB13/14/15 切 GPIO 模式 → ADC bit-bang AD7689_Pins_To_SPI2(); → PB13/14/15 切 AF 模式 → DAC 硬件 SPI验证结果IN0 和 IN7 通道 0.75V 输入均读出约 19900 码值AD7689 16 位分辨率正确。经验一条 SPI 总线多器件CS 对应选中谁说话但它不保护没被选中的那个不受干扰。有些器件在 CS 未拉低时对 SCK 边沿敏感——数据手册不一定写。一个器件通讯正常不代表总线上没有冲突。另一个器件的异常可能被反复修改的配置掩盖——改完有效下一次通讯又坏。硬件 SPI 不行时bit-bang 是最终的隔离手段——牺牲一点 CPU 时间换来完全可控的时序。有用的话点个收藏下次调试直接用。有问题欢迎评论区交流看到了都会回。

相关新闻

NBM5100A电池寿命增强器:提升纽扣电池性能的智能方案

NBM5100A电池寿命增强器:提升纽扣电池性能的智能方案

1. 认识NBM5100A电池寿命增强器的核心价值 在物联网设备和便携式电子产品的设计中,纽扣电池(如CR2032)因其体积小巧、使用方便而广受欢迎。然而这类电池存在两个致命弱点:一是放电电流能力有限(通常仅5-10mA&#xff0…

2026/10/10 16:40:00 阅读更多 →
大模型运维实战:从原理到部署优化

大模型运维实战:从原理到部署优化

1. 大模型概念解析:运维视角的通俗理解大模型这个词最近两年在技术圈里火得不行,但很多运维老哥看到这个词还是有点懵——这玩意儿跟咱们平时维护的服务器、数据库到底有啥关系?其实用运维工程师熟悉的视角来看,大模型本质上就是个…

2026/10/9 17:19:41 阅读更多 →
已经有ERP和BI,为什么还需要AI商品决策系统?

已经有ERP和BI,为什么还需要AI商品决策系统?

很多鞋服品牌在建设商品系统时,都会遇到一个问题:已经有ERP,也有BI报表,为什么还需要AI商品决策系统?这个问题不能简单回答成“ERP记录数据,BI看报表,AI做决策”。因为今天很多BI工具也可以做预…

2026/10/9 16:42:06 阅读更多 →

最新新闻

网络内容缓存服务器实战:从架构设计到部署避坑

网络内容缓存服务器实战:从架构设计到部署避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 1:01:13 阅读更多 →
Windows Server上部署Oracle 19c实战指南

Windows Server上部署Oracle 19c实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 1:01:13 阅读更多 →
工业机器人技术题库docx解析与组卷分析实战

工业机器人技术题库docx解析与组卷分析实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 1:01:13 阅读更多 →
STM32寄存器开发实战:从点灯到串口底层原理

STM32寄存器开发实战:从点灯到串口底层原理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 1:01:13 阅读更多 →
N100真机启动排查:串口日志、NVMe超时与时钟源修复全记录

N100真机启动排查:串口日志、NVMe超时与时钟源修复全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 1:01:13 阅读更多 →
水果识别深度学习实战:从数据到部署的工程落地指南

水果识别深度学习实战:从数据到部署的工程落地指南

简介:这是一套面向计算机相关专业在校学生、教师及初入行开发者的Python深度学习水果识别系统实战项目,专为毕业设计、课程设计与竞赛实践打造。项目基于经典CNN架构实现多类别水果图像分类,含完整可运行源码、详细项目说明文档及配套数据集&…

2026/10/11 1:00:13 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →