首页 > 其他分享 >SPI多个从设备问题排查

SPI多个从设备问题排查

时间:2024-02-07 15:44:42浏览次数:26  
标签:多个 排查 S2 S1 问题 SPI 信号 隔离器

记SPI问题排查

 

SPI电路挂载了2个从设备,S1和S2,其中S2前加了一个隔离器g,电路结构如下图:

 

 

问题发现:

其它同事已经开发了S2驱动,我在开发S1驱动时发现S1无响应。

 

排查是软件问题还是硬件问题:

检查代码SPI初始化(时钟等)片选信号的处理(多从设备做冲突处理)没有问题后S1还是无响应。所以初步判断是硬件问题。

 

硬件问题排查:

首先确认S1供电是否正常,使用万用表测量供电,都是正常,初步确认是SPI传输出了问题。

 

先在软件屏蔽了S2,单独循环驱动S1,使用示波器测量:

1.首先检查片选和时钟信号,看起来是可用的,波形如下图:

 

 

2.然后测量MOSI引脚,查看mcu有没有成功输出信号,测量成功输出了信号,波形也没有问题:

 

 

这个波形显示SPI以模式0输出信号。

 

3.然后测量S1响应信号miso;发现miso脚上没有信号;

问题排查:按照SPI协议挂多个从设备是可行的,只要片选控制好即可,但电路中多了一个隔离器,怀疑是隔离器的影响。

 

4.在硬件上把隔离器断开后(s2也断开了)观察,S1果然可以正常通信了。确认是隔离器拉低了S1 MISO信号(选择带片选的隔离器可以避免这个问题)。

问题解决方案:

在S1 MISO和隔离器间加一个电阻。

先是加了一个10k电阻,发现S1正常但S2的MISO信号被弄的畸形了:

 

 

多次调试后将电阻更换到750欧后S1和S2波形都比较完美,解决了问题。

 

后续问题:

后续过认证,发现S2 SPI信号在升温到40度以上的情况下容易出问题,导致读取到的信息错误。通过将SPI波特率调整到原来的一半(波特率低的相对于高的有更高的稳定性)后解决(15M->7.5M).

 

 

 

 

 

 

  1. 1
  2. 1
  3. 1
  4. 1
  5. 1
  6. 1
  7. 1
  8. 1
  9. 1
  10. 1

标签:多个,排查,S2,S1,问题,SPI,信号,隔离器
From: https://www.cnblogs.com/bianwenxue/p/18010983

相关文章

  • 将一列包含列表的数据拆分成多个列
    在Pandas中,如果你想要将一列包含列表的数据拆分成多个列,可以使用.str.split()方法。这个方法可以在字符串的列(系列)上运行,并返回列表(系列)。以下是一个简单的例子:importpandasaspd#创建一个DataFramedf=pd.DataFrame({'AB':['A1-B1','A2-B2']})#使用split方法分......
  • kubernetes集群故障排查的几种方法
    1.kubectldescribe查看资源的详细信息,根据事件信息获取当前资源的状态,从而给出解决方案。[root@master231pod]#kubectlgetpodsNAMEREADYSTATUSRESTARTSAGEimage-resources-stress-040/1Pending02m13s[root@mas......
  • 全国产T3+FPGA的SPI与I2C通信方案分享
    近年来,随着中国新基建、中国制造2025规划的持续推进,单ARM处理器越来越难胜任工业现场的功能要求,特别是如今能源电力、工业控制、智慧医疗等行业,往往更需要ARM+FPGA架构的处理器平台来实现例如多路/高速AD采集、多路网口、多路串口、多路/高速并行DI/DO、高速数据并行处理等特定......
  • 一个微服务有多个控制器怎么配?
    4.1配置文件内容我们希望达到的效果(productapi这个名称是给微服务器的一个有意义的名称,方便清楚的知道调用的是哪个微服务):http://localhost:7135/productapi/controllername1/actonnamehttp://localhost:7135/productapi/controllername2/actonnamehttp://localhost:7135/pr......
  • kubelet 组件内存高排查方法
    1、查看服务进程,并跟踪程序系统调用pgrep kubelet#查看资源占用情况top-p 95786strace-cp95786#显示时间戳strace-tt-p95786 2、用pprof性能分析工具排查#安装go环境#启动代理kubectlproxy--port=8001--address=0.0.0.0curl-sK-vhttp://127.0.0.1:8001/......
  • 问题:垂直结构件是焊接连接的多个节段
    问题:垂直结构件是焊接连接的多个节段A、正确B、错误参考答案如图所示......
  • 将一个本地仓库连接到多个远程仓库
    #添加仓库地址gitremoteadd<远程仓库名称><远程仓库URL>示例:gitremoteaddnamehttps://github.com/username/repository.git#查看本地已经有的远程地址来检查是否添加仓库成功gitremote-v#本地代码更新到新添加的仓库地址 ......
  • prometheus监控告警多个es集群
    exporter安装   分别在两个集群中的任一节点安装elasticsearch_exporter   节点1安装     nohup./elasticsearch_exporter--es.all--es.indices--es.cluster_settings--es.indices_settings--es.shards--es.snapshots--es.timeout=10s--web.list......
  • spingsecurity使用和说明
     1、引入spingsecurity依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency>启动项目访问http://localhost:8080/login 账号:user密码:控制台系统生成的2、配置自定义......
  • Spingboot替换掉jar包里面的@Bean
    问题如下图,我们需要替换掉JsoncCfg配置类里面的YCloudObjectMapper这个Bean。这个Bean是在依赖的第三方jar包中的,因为用了@Bean而不是像@Component这种组件扫描添加的,所以不能使用@ComponentScan注解进行排除。现在不能修改jar包里的代码,不能在我们的项目中重新定义那个bean(Be......