IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 记一次SPI驱动调查 -> 正文阅读

[嵌入式]记一次SPI驱动调查

当前TBOX方案主要采用MCU+OpenCPU架构,如下图所示:

摘自《单片机与嵌入式系统应用》《MCU+OpenCPU架构的车载TBOX 开发方案》。

MCU多采用S32K144处理器,OpenCPU多采用移远EC20模块。

MCU采集CAN数据,IO状态,传感器等数据发送给SOC。MCU和SOC可以通过低速UART口、高速UART(如1Mbps或者3Mbps)或者SPI通信。UART属于异步通信,双方在通信时不需要同步。SPI需要时钟信号,时钟信号由SOC给出。当SOC有数据需要发送时,直接产生时钟并发送数据;当MCU有数据发送时,需要通过另外一个IO管脚中断通知SOC输出时钟信号,有时钟信号后MCU才能发出数据。

在实际运行过程中,MCU出现了CAN数据量不是很多情况下,无法及时采集到CAN数据,造成CAN数据丢失现象。调整SPI 发送中断和CAN接收中断优先级后(原有SPI中断优先级高于CAN接收中断优先级),CAN接收不再丢失,但是SPI数据无法及时发送出去,造成MCU SPI发送缓冲区满现象,丢失发送给SOC的数据。

MCU发送SPI数据流程为:MCU需要发送数据时,首先将数据放入到发送缓冲区中,然后拉管脚通知SOC产生时钟,开启发送中断和FIFO中断(共4个4字节FIFO,可配置FIFO小于某个值时产生中断)。因为FIFO为空,一开始便触发了中断,在中断里将SPI发送缓冲区中的数据填充到FIFO中,直到FIFO满不再触发中断。待SOC产生SPI时钟时,MCU SPI FIFO中数据自动发送给SOC,此时再产生FIFO中断,直到MCU SPI 缓冲区数据全部发送完毕。

通过数据量分析,MCU SPI数据量不应该造成CAN接收丢失。怀疑SPI发送中断影响了CAN中断数据接收。为了验证猜测,在MCU SPI发送中断内加入IO管脚电平切换,通过逻辑分析仪抓取该管脚状态,同时抓取SPI时钟及MISO(MCU输出,MCU为slave,SOC为master),MOSI管脚状态。通过CAN接收数据丢失时刻找到对应时刻的SPI状态,发现当时触发了很多SPI中断,但此时并没有SPI数据接收和发送,也没有时钟信号,至此怀疑SPI中断问题。

通过查看SPI中断函数并没有发现什么明显错误,查看该部分数据手册和对着多个波形图,最后找出原因:触发SPI FIFO中断时,SPI 发送缓冲区中没有数据造成了FIFO中断一直触发,CAN接收中断优先级低,无法运行。在正常情况下,SPI发送缓冲区中数据正好是4个FIFO个字节对齐,满足4个FIFO内容,不会出现该现象。当运行到某一刻时,SOC先发送数据,先给出了时钟,在几个时钟后,MCU SPI发送缓冲区中有数据填入到FIFO,造成了该次MCU SPI发送缓冲区中数据不能是4个FIFO字节对齐,而SPI发送中断关闭条件是FIFO中无数据(而不是SPI发送缓冲区中无数据),此时FIFO中一直有数据,但4个FIFO一直不满(SPI 发送缓冲区没有了数据),造成一直进入中断。

解决:将SPI 发送中断条件改为SPI 发送缓冲区中无数据时关闭发送中断,问题得以解决。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-12-13 12:59:30  更:2021-12-13 13:01:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/30 18:33:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码