当前位置: 首页 > news >正文

SPI片选踩坑实录(硬件片选和软件片选)

        SPI(Serial Peripheral Interface,串行外设接口)的片选信号(Chip Select,简称 CS 或 SS,即 Slave Select)是 SPI 通信中用于选择从设备的关键控制信号,其作用是在多从设备的 SPI 总线上,指定当前与主设备进行通信的从设备。

片选信号的基本原理

  • SPI 总线通常包含 4 根线:SCLK(时钟线)、MOSI(主发从收数据线)、MISO(主收从发数据线)和 CS(片选线)。
  • 主设备通过拉低某个从设备的 CS 信号,来选中该从设备进行通信;未被选中的从设备,其 CS 信号为高电平,会忽略总线上的通信数据。
  • 在通信过程中,被选中的从设备会响应主设备的指令,而其他从设备则处于空闲状态。

片选信号的有效电平

  • 片选信号通常是低电平有效,即当 CS 信号为低电平时,从设备被选中;当 CS 信号为高电平时,从设备未被选中。

片选信号的控制方式

  1. 硬件片选(芯片控制)

    由 SPI  Master自动生成和控制片选信号,主设备在发送数据时,硬件会自动拉低对应从设备的 CS 信号,数据发送完成后自动拉高。
  2. 软件片选(GPIO 控制)

    将片选信号连接到主设备的 GPIO 引脚,通过软件编程(如设置 GPIO 输出高低电平)来控制片选信号的状态。

硬件片选和软件片选的选择问题实测:

        以前用官方SDK移植开发通常直接用硬件片选,把管脚复用成芯片内部的CS信号,用起来很方便,但是后面调试了一些SPI驱动设备后发现,用GPIO控制可能是更好的选择,主要是发现有些从设备的时序不允许你中途拉高CS,比如以下图片就要求在特定模式下持续拉低CS信号:

        如果没有注意对多个字节分开读取,就会导致时序出现问题从而读上来顺序有问题。

        还有一个例子是对于有些从设备芯片,只能每次从它特定的寄存器读数据(比如四字节data寄存器这种),当数据量大的时候没办法用驱动接口一次性读取完,这时候如果是硬件片选必然会出现多次CS拉高拉低,就会导致数据异常。

        所以配置成GPIO整体来说更灵活可控,在多设备情况下也能实现更好的控制,代价就是需要频繁操作GPIO会带来一定资源开销。

http://www.dtcms.com/a/363995.html

相关文章:

  • Nacos配置文件攻防思路总结|揭秘Nacos被低估的攻击面|挖洞技巧
  • Python 基础核心概念与实战代码示例(含数据类型、变量、流程控制、数据结构、函数与文件操作)
  • # Shell 文本处理三剑客:awk、sed 与常用小工具详解
  • 如何修改 Docker 默认网段(网络地址池)配置:以使用 10.x.x.x 网段为例
  • 2024 年 AI 产业格局复盘:头部企业竞逐方向与中小玩家生存破局点
  • 跨境电商账号风控核心:IP纯净度与浏览器指纹的防护策略
  • 基于单片机车流车速检测系统设计
  • 90%的C++ 程序员都忽略了这个容器——unordered_multiset,让我们来看看开源项目中怎么使用的
  • 最小二乘法之线性回归篇(普通最小二乘OLS、加权最小二乘WLS、广义最小二乘GLS)-原理讲解
  • 毕业项目推荐:69-基于yolov8/yolov5/yolo11的轴承缺陷检测识别系统(Python+卷积神经网络)
  • Python入门教程之类型转换
  • 【 HarmonyOS 6 】HarmonyOS智能体开发实战:Function组件和智能体创建
  • 博客系统的测试
  • Shell脚本一键监控平台到期时间并钉钉告警推送指定人
  • 黑马头条面试重点业务
  • 如何避免研发文档命名混乱导致难以检索
  • 我们正在成为机械半类人你信吗?
  • Photoshop - Ps 处理图层
  • 数字社会学必读书目推荐!唐兴通20年数字社会学探索思想之旅再回顾人工智能社会学AI社会学下新秩序
  • 计算机保研机试准备——C++算法题(二)
  • 嵌入式学习 day62 SPI子系统、adxl345驱动、驱动回顾
  • 依托深兰科技AI技术生态,深兰教育携手沪上高校企业启动就业科创营
  • CRM数据暴风升级!3步将DataEase可视化神技嵌入Cordys,销售分析直接开挂!
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘flake8’问题
  • 【Vue2 ✨】Vue2 入门之旅(十):Vuex 入门
  • 【机器学习学习笔记】Matplotlib 基本操作
  • 论文解读:基于 77 GHz FMCW 毫米波雷达的舱内占位检测
  • HDI是什么?与普通线路板有何区别?优势在哪?
  • java面试中经常会问到的多线程问题有哪些(基础版)
  • 宋红康 JVM 笔记 Day10|对象实例化