ESP32控制6个SPI设备

  • 选通电路
  • 软件编程
  • 程序说明

有一个ESP32想要读取6个MAX31865的RTD电阻,采用一个74HC138的3-8译码器作为6个MAX31865的选通。这里选择了Arduino IDE作为编程软件,从Adafruit下载的读取MAX31865的库。要选通读取可以对3-8进行编码,但这样要改变库函数,不希望对库进行修改,将固定的CS端连接到外部中断端,用函数
attachInterrupt(digitalPinToInterrupt(pin), ISR, mode). 比如说pin 5与中断连接,这里:

  • ISR是要调用的中断程序
  • mode是:
  • LOW 当端子变低时触发中断
  • CHANGE 当端子变化时触发中断
  • RISING 当端子变高时触发中断
  • FAILING 当端子变低时触发中断。

我们这里选择了CHANGE来触发中断

选通电路


从图中可以看出,用ECS1,ECS2,ECS3来控制选通哪个MAX31865。

软件编程

采用Arduino IDE 1.8.13

void setup()
{max_1.begin(MAX31865_3WIRE);  // set to 2WIRE or 4WIRE as necessarypinMode(INTERRUPT_PIN, OUTPUT);attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN), sCounter, CHANGE);

从这里看到sCounter是要调用的中断程序,当我们在调用spi读取RTD的数据时会改变中断的端子,使其变成低电平。

再来看一下sCounter的代码的实现,看看中断程序的内容:

void sCounter()
{if (digitalRead(INTERRUPT_PIN)){csSelect(7);}elsecsSelect(si);
}

变量si是要选择的spi的通道。

再看一下csSelect(si)的选通程序:

void csSelect(int ix)
{switch(ix){case 0: digitalWrite(ECS3, LOW); digitalWrite(ECS2, LOW); digitalWrite(ECS1, LOW); break;case 1: digitalWrite(ECS3, LOW); digitalWrite(ECS2, LOW); digitalWrite(ECS1, HIGH); break;case 2: digitalWrite(ECS3, LOW); digitalWrite(ECS2, HIGH); digitalWrite(ECS1, LOW); break;case 3: digitalWrite(ECS3, LOW); digitalWrite(ECS2, HIGH); digitalWrite(ECS1, HIGH); break;case 4: digitalWrite(ECS3, HIGH); digitalWrite(ECS2, LOW); digitalWrite(ECS1, LOW); break;case 5: digitalWrite(ECS3, HIGH); digitalWrite(ECS2, LOW); digitalWrite(ECS1, HIGH); break;case 6: digitalWrite(ECS3, HIGH); digitalWrite(ECS2, HIGH); digitalWrite(ECS1, LOW); break;case 7: digitalWrite(ECS3, HIGH); digitalWrite(ECS2, HIGH); digitalWrite(ECS1, HIGH); break;default : digitalWrite(ECS3, HIGH); digitalWrite(ECS2, HIGH); digitalWrite(ECS1, HIGH); break;     }
}

程序说明

当读取SPI时,选择的CS端会被读取SPI设备的程序控制其改变。通过中断监视SPI的选通信号,当SPI选通信号为高时,我们通过选通选择信道7为低电平。当SPI选通信号时低电平时,这时是要对SPI进行读写操作了。我们选择相应的si选择的输出端为低电平,作为选通信号,就可以读写不同的SPI设备了。

ESP32通过SPI读取多个SPI Slave--6个MAX31865 RTD芯片相关推荐

  1. 基于ESP32的SPI读取MPU9250数据

    MPU9250集成了加速度计.陀螺仪.磁力计,能够比较精准的得到位姿信息,同时400KHZ的I2C和1MHZ的SPI让其更适用于对速度要求高的领域. 由于产品对速度的要求,我们选择采用速度更快的SPI ...

  2. ESP32学习笔记(20)——SPI(从机)接口使用

    一.SPI简介 SPI(Serial Peripheral Interface) 协议是由摩托罗拉公司提出的通讯协议,即串行外围设备接口,是一种高速全双工的通信总线.它被广泛地使用在 ADC.LCD ...

  3. SPI 读取不同长度 寄存器_SPI协议,MCP2515裸机驱动详解

    SPI概述 Serial Peripheral interface 通用串行外围设备接口 是Motorola首先在其MC68HCXX系列处理器上定义的.SPI接口主要应用在 EEPROM,FLASH, ...

  4. AS5047P磁编码器ESP32驱动程序、硬件电路设计、SPI通信时序、逻辑波形分析、注意事项

    1.AS5047P硬件设计 1.1 简介.性能参数 AS5047P 是一种款高分辨率旋转位置传感器,用于在整个 360 度范围内进行高速(高达 28krpm)角度测量.这种新型位置传感器配备了革命性的 ...

  5. ESP32学习笔记(19)——SPI(主机)接口使用

    一.SPI简介 SPI(Serial Peripheral Interface) 协议是由摩托罗拉公司提出的通讯协议,即串行外围设备接口,是一种高速全双工的通信总线.它被广泛地使用在 ADC.LCD ...

  6. SPI 读取不同长度 寄存器_正点原子Linux第二十七章SPI实验

    1)资料下载:点击资料即可下载 2)对正点原子Linux感兴趣的同学可以加群讨论:935446741 3)关注正点原子公众号,获取最新资料更新 第二十七章SPI实验 同I2C一样,SPI是很常用的通信 ...

  7. STC12C5A60S2软件模式SPI读取DS1302时钟实时显示在1602

    文章目录 SPI总线的概念 什么是实时时钟 DS1302介绍 DS1302寄存器 Ds1302附加31字节静态RAM 时序图和控制指令 参考例程 SPI总线的概念 SPI接口全称"seria ...

  8. SPI 读取不同长度 寄存器_敏矽微电子Cortex-M0学习笔记10-SPI通信详解

    1.SPI简介 ME32F030支持扩展的 SPI (Serial Peripheral interface)接口,它可以支持标准的 SPI 操作,兼容 4 线的 SSI (SynchronousSe ...

  9. STM32软硬件SPI读取MAX31865 PT100温度支持shell功能

    PT100的温度读取硬件是利用TB的MAX31865现成模块,也可以自己做相应的PCB.原理图可以查看美信官方文档作为参考.传送门:https://www.maximintegrated.com/en ...

最新文章

  1. 最新消息!阿里四舍五入无限期延迟复工,字节跳动、腾讯......等企业也再次延迟!...
  2. 用Quartus II Timequest Timing Analyzer进行时序分析 :实例讲解 (三)
  3. 零基础python入门书籍推荐书目_铁粉看过来!送书啦,Python推荐书单,送书10本!...
  4. [云炬创业基础笔记] 第四章测试17
  5. 第09课:项目实战——让你的神经网络模型越来越深
  6. 多个div并排居中显示
  7. 页面中color颜色值_计算机毕业设计中实现一个简易美观的登录界面
  8. 直接从JBoss AS 7组件使用JGroups
  9. landscape 1
  10. 联想340c笔记本cpu能升级吗_联想扬天威6 2021款酷睿版怎么样?评测值得买吗?从价格和配置看就知道了...
  11. 教你如何窃取网络信息
  12. 关于Jquery中animate可以操作css样式属性总结
  13. Netty : netty 3如何解决空轮询bug
  14. HDU1205 吃糖果【水题】
  15. bzoj 3238: [Ahoi2013]差异(后缀数组+单调栈)
  16. Microsoft Visual Studio .NET 2003 编译xvidcore-1.1.3
  17. 51单片机定时器流水灯控制
  18. 阿郎恋曲(阿郎的故事)
  19. Android 手写签名 (图片合成)
  20. 一些过时的免杀技巧 仅供参考

热门文章

  1. 通过矩阵镜头实现敏捷
  2. 随着 Fancy Lazarus 组织的回归,检测到新的 DDoS 勒索攻击
  3. 原汁机和破壁机的区别是什么?
  4. Stata: 断点回归分析 (RDD) 文献和命令
  5. IPGuard客户端与应用程序冲突处理方法
  6. Ae效果控件快速参考:颜色校正
  7. 探讨蓄电池对UPS电源寿命的影响
  8. Flask-mongoengine 连接 MongoDB 数据库连接提示认证失败(认证数据库未配置)
  9. C# 对RabbitMQ使用
  10. 关系数据库SQL面试排名前100道问答题