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

【AS32系列MCU调试教程】SPI调试的常见问题解析

简介

AS32X601内置的I2C模块提供了支持全双工的同步串行通信。该接口可配置为主机或从机模式,配置为主机模式时,它可为外部从器件提供通信时钟(SCK),6个SPI每个都支持8个从机。

SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC、 LCD 等设备与 MCU 中,要求通讯速率较高的场合。

1.信号线:SPI具有SCK,MOSI,MISO ,CS线

2.寻址方式:SPI是通过CS片选信号来选择从机

3.通信速率:SPI速率较快(可达fPCLK/2),一般用于高速设备之间通信。AN32X601上SPI速率最快可达45MHz。

硬件设计

SPI通信使用 3 条总线及片选线,3条总线分别为SCK、MOSI、 MISO,片选线为CS0。

SPI时序

CS0、SCK、MOSI信号都由主机控制产生,而 MISO的信号由 从机产生,主机通过该信号线读取从机的数据。MOSI 与 MISO的信号 只在 NSS为低电平 的时候才有效,在 SCK的 每个时钟周期,MOSI 和 MISO 传输一位数据。

① 处 NSS信号由高变低,是SPI通信的起始信号。NSS是 每个从机各自独占的信号线,当从机在自己的 NSS线检测到起始信号后,就知道自己被主机选中,开始准备与主机通信。⑥ 处 NSS信号由低变高,是SPI通信的停止信号,表示本次通信结束,从机的选中状态被取消。

软件编程

配置SPIx需要的GPIO为复用功能。

通过配置ISPI_INITSTRUCT初始化I2Cx,包括时钟分频,主机或从机模式,相位模式等等。

按需求配置中断,并配置IRQ_HANDLER;

调用收发接口,并处理数据

SPI常见问题解析

Q1主从通信时,先开从机,然后再给主机上电,通信正常,但是同时上电,即便是给主机加了延时都通信异常。

A:首先应排查硬件上的问题,如芯片间的去耦电容是否正常,电源是否稳定,如果确定了硬件没有问题,就使用硬件片选试试,非常稳定,主从同时上电即使主机不加延时也不会引起通信异常。

Q2:使用的DMA收发,单独测试一切正常,但是只要跟其他DMA同时使用就死机

A: 尝试增大堆栈,MCU死机很大一部分原因是堆栈溢出(DMA是要用到堆栈的)

SPI稳定性优化

1,通信速率:主机的通信速率尽量不要超过从机SPI的最大速率

2,CRC校验:如果工作环境较为恶劣,有较大的噪声干扰,推荐开启CRC校验

3,硬件片选:虽然从理论上讲,只有主机和从机片选开不开无所谓,但是经过向多名开发者验证和我的多次测试,开启硬件片选可以大大提升SPI通信稳定性。

http://www.lqws.cn/news/542017.html

相关文章:

  • 【AI助手】释放双手,基于Cursor Agent与Playwright MCP的浏览器自动化实战
  • Windows家庭版安装docker
  • 【Pandas】pandas DataFrame last_valid_index
  • 校企协同育人,智慧养老实训基地助力人才就业无忧
  • 【中文核心期刊推荐】《计算机工程与科学 》
  • MST56XXB/MST5650B/MST5033B 是一款耐高压的LDO芯片,针对中控设备,给MCU供电,60V的耐压,150mA
  • elastic-ai.creator开源程序是设计、训练和生成专门针对 FPGA 优化的神经网络
  • react-sequence-diagram时序图组件
  • 飞算科技依托 JavaAI 核心技术,打造企业级智能开发全场景方案
  • 【数据结构】B树的介绍及其实现C++
  • 带标签的 Docker 镜像打包为 tar 文件
  • React Native 如何实现拉起App
  • PHP在做爬虫时的解决方案
  • Franka 机器人在配置空间距离场实验中的突破性应用:从算法优化到动态场景适配
  • 无人机防护装置技术解析
  • 基于 Spring Boot + Vue 3的现代化社区团购系统
  • element-plus table合并列、合计行、表格填报添加验证
  • redisTemplate简单实现幂等性校验
  • fishbot随身系统安装nvidia显卡驱动
  • Rust交互式编程环境Jupyter Lab搭建
  • 【unitrix】 4.10 数字类型的按位异或运算实现(bitxor.rs)
  • 同样是synthesis(综合) HLS和Vivado里面是有什么区别
  • 【git学习】学习目标及课程安排
  • Java 大视界 -- Java 大数据在智能教育学习社群知识共享与协同学习促进中的应用(326)
  • 【HTML】
  • 中国科技术语杂志中国科技术语杂志社中国科技术语编辑部2025年第3期目录
  • 算法第55天|冗余连接、冗余连接II
  • C++ 第三阶段 并发与异步 - 第二节:异步任务(std::async)
  • 在docker容器中安装docker服务,基于fuse-overlayfs进行overlay挂载,而不是vfs
  • HarmonyOS NEXT仓颉开发语言实现画板案例