发布时间:2026/7/29 9:54:43
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 时间换来完全可控的时序。有用的话点个收藏下次调试直接用。有问题欢迎评论区交流看到了都会回。

相关新闻

2026/7/29 9:54:43

树莓派2从开箱到配置:老玩家实战指南与避坑要点

1. 项目概述:从开箱到点亮,一个老玩家的视角 手边这台树莓派2,是前阵子从一位老朋友那里收来的“老物件”。虽然现在树莓派5都已经发布了,但每次看到这些经典的板子,总忍不住想再折腾一番。对于很多刚入门嵌入式开发、…

2026/7/29 9:54:43

Win11设置虚拟内存

设置-系统-系统信息-设备规格-高级系统设置系统属性-高级-设置性能选项-高级-虚拟内存-更改

2026/7/29 9:54:43

UsbDk:Windows USB开发神器,让设备访问变得简单直接

UsbDk:Windows USB开发神器,让设备访问变得简单直接 【免费下载链接】UsbDk Usb Drivers Development Kit for Windows 项目地址: https://gitcode.com/gh_mirrors/us/UsbDk 还在为Windows USB开发头疼吗?传统驱动开发的繁琐流程、复杂…

2026/7/29 10:59:51

计算机毕业设计之基于springboot的宠物智能健康管理系统

随着宠物饲养的普及和宠物主人对宠物健康日益增长的关注,一个功能全面、操作便捷、智能化的宠物健康管理系统显得尤为重要。本系统采用Spring Boot作为后端框架,结合Java语言进行开发,利用MySQL数据库进行数据存储与管理。前端则采用Vue.js框…

2026/7/29 10:59:51

Topit:Mac用户的终极窗口管理神器,免费解决窗口遮挡难题

Topit:Mac用户的终极窗口管理神器,免费解决窗口遮挡难题 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 还在为Mac上多个窗口互相遮挡而…

2026/7/29 10:59:51

终极指南:3步解锁老款Mac,免费升级最新macOS系统

终极指南:3步解锁老款Mac,免费升级最新macOS系统 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否还在使用2015年前的MacBook Pr…

2026/7/29 10:59:51

SAP IAM核心概念与权限管理实战指南

1. SAP身份与访问管理基础概念解析在SAP系统中,身份与访问管理(Identity and Access Management,简称IAM)是企业信息安全的第一道防线。作为从业15年的SAP顾问,我见过太多因为权限管理不当导致的数据泄露和业务混乱案例…

2026/7/29 10:59:51

MetaboAnalystR 4.0:如何用开源R包实现LC-MS代谢组学一站式分析

MetaboAnalystR 4.0:如何用开源R包实现LC-MS代谢组学一站式分析 【免费下载链接】MetaboAnalystR R package for MetaboAnalyst 项目地址: https://gitcode.com/gh_mirrors/me/MetaboAnalystR 你是否曾为处理复杂的LC-MS代谢组学数据而烦恼?面对海…

2026/7/29 10:54:51

DIY透明屏展示箱:从树莓派驱动到3D打印箱体的完整制作指南

1. 项目概述:从“透明屏”到“展示箱体”的完整构想 最近在折腾一个挺有意思的项目,核心是想做一个能展示动态内容的透明屏展示箱。这玩意儿听起来有点赛博朋克,其实拆解开来,就是几个成熟技术的组合应用。简单来说,我…

2026/7/28 13:41:25

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

2026/7/29 0:02:56

商标注册找代理还是自己办?算清这笔“时间账”和“风险账

商标注册,找代理还是自己办?帮你算清这笔“时间账”和“风险账”“商标注册,找代理还是自己办?”这是深圳每个创业者都会遇到的灵魂拷问。有人说找代理是花冤枉钱,有人说自己办风险太高。到底哪种更划算?本…

2026/7/29 0:02:56

免费开源RPA工具OpenRPA:企业级自动化流程的终极解决方案

免费开源RPA工具OpenRPA:企业级自动化流程的终极解决方案 【免费下载链接】openrpa Free Open Source Enterprise Grade RPA 项目地址: https://gitcode.com/gh_mirrors/op/openrpa 你是否厌倦了每天重复枯燥的数据录入和报表整理工作?是否希望有…

2026/7/29 0:02:56

KMS智能激活工具:一站式解决Windows和Office激活难题

KMS智能激活工具:一站式解决Windows和Office激活难题 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为系统弹出激活提示而烦恼吗?KMS智能激活工具能够帮你彻底告别W…

2026/7/28 4:38:09

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…