浅析SPI与CAN通信

简介: SPI是一种常用的MCU与外设的通信方式,英文全称Serial Peripheral Interface。与之前介绍过的UART不同,SPI是串行,全双工,同步通信方式。SPI通常有4根物理连接线,分别是CS片选,SCK时钟,MOSI主机输出从机输入和MISO主机输入从机输出。CS片选是从机选择信号线,低电平有效。当CS为低电平时认为主机目前选中的本从机。SCK是串行时钟线,同步通信需要主从机时钟同步,主机利用SCK线与从机实现时钟同步。时钟由主机产生,决定了通讯的速率。


🎀 文章作者:二土电子
🐸 期待大家一起学习交流!


本文是写在即将参加某公司嵌入式C岗位面试的前一天,简单整理一下还算熟悉的SPI和听说过的,在单片机中常用的CAN通信的相关知识,也算是一种梳理和学习。

PS,由于博主不甚了解CAN通信相关知识,所以本文在介绍CAN通信时引用了一些大佬的文章,均已说明出处。

1 什么是SPI和CAN

1.1 什么是SPI

SPI是一种常用的MCU与外设的通信方式,英文全称Serial Peripheral Interface。与之前介绍过的UART不同,SPI是串行,全双工,同步通信方式。

SPI通常有4根物理连接线,分别是CS片选,SCK时钟,MOSI主机输出从机输入和MISO主机输入从机输出。

  • CS片选是从机选择信号线,低电平有效。当CS为低电平时认为主机目前选中的本从机。
  • SCK是串行时钟线,同步通信需要主从机时钟同步,主机利用SCK线与从机实现时钟同步。时钟由主机产生,决定了通讯的速率。
  • MOSI(Master Output Slave Input)主机输出从机输入。主机的信号通过这条线发送给从机。
  • MISO(Master Input Slave Output)主机输入从机输出。主机通过这条线接收从机发来的信息。

冲浪了一下,也参考了一下之前看过的时序图,SPI的数据收发时钟通常是上升沿发送下降沿接收,高位先发。这里附上一个之前看过的时序图

48e7834665924af706670e62071c300f_4b9caabd38cd456297818f6f3353f099.png

首先CS片选被拉低,代表主机与该从机进行通讯。当SCK上升沿时D7(高位数据被发送),依次发送直到最后一位D0发送完成。

1.2 什么是CAN

CAN全称是Controller Area Network,控制器局域网络,是ISO国际标准化的串行通信协议。由于本人对于CAN总线不甚了解,这里参考了一篇大佬的博客,大家可以自行去详细了解一下,博主这里基于原作者的描述做一下简单的总结和理解。博主原文CAN总线(一)——CAN总线是什么,在哪用,怎么用?

CAN总线采用差分信号传输,CAN控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,收发双方通过检测总线电平来实现消息传递。

  • 2.0V---------逻辑0------显性电平
  • 0V-----------逻辑1------隐性电平

CAN总线遵从“线与”机制,显性电平可以覆盖隐性电平。这就导致只有所有节点都发送隐形电平时总线才处于隐性状态。这也就是CAN总线的显性有限特点。

以发送数据为例,发送数据时CAN控制器把要发送的二进制编码通过CAN_Tx发送给CAN收发器,然后收发器将普通的逻辑电平信号转化成差分信号,通过差分薪CAN_High和CAN_Low传输到CAN总线网络。因此,CAN通信只需要两根线即可。

d5d29637a8147f521365b5e257240b5c_ed0574b3b6c34b8a97275b0bed17ffad.png

CAN总线是广播类型的总线,也就是说每一个节点都可以监控总线上所有的报文信息。但是CAN硬件能够提供本地的过滤功能,让每个节点对报文有选择性地做出相应。

2 SPI与CAN的优缺点

2.1 SPI的优缺点

SPI通信优点

  • 支持全双工通信
  • 通信简单
  • 数据传输速率快

SPI通信的缺点

  • 没有应答机制,在可靠性方面有一定缺陷

总而言之,SPI通信是一种告诉全双工同步通信。信号是非差分式,没有应答机制,可靠性方面存在缺陷。

2.2 CAN通信的优缺点

这里参考了另一篇博主的文章,这里也贴一下CAN通信详解(全)
CAN通信的优点

  • 多主控制。在总线空闲时所有单元都可以发送消息。当两个以上单元发送消息时,会根据标识符决定发送的优先级。
  • 通信速率快,距离远
  • 具有故障检测,错误通知和错误恢复功能。所有单元都可以检测错误,检测出错误的单元会立即同时通知其他所有单元,正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止。
  • 故障封闭功能。CAN可以判断出错误的类型是总线上暂时的数据错误还是持续的数据错误。当总线上持续出现数据错误时,可以将引起故障的单元从总线上隔离出去。

CAN通信最大的一个特点时废除了传统的地址编码,报文不包含源地址或目标地址,而是根据标识符来指示功能和优先级。

CAN通信的缺点

  • 不一致性
    CAN发送器校验的范围可以覆盖到帧结束,如果发现错误,就会按照优先权和状态规定重发。CAN接收器校验错误的范围覆盖到帧结束的前一位。这就会导致,如果由于空间干扰或者电源波动等原因,导致帧的倒数第一位发生错误。此时一部分节点由于直检查到帧的倒数第二位,认为帧没有错误,另一部分认为帧有错误。认为帧错误的节点会通知发送器重发,同时丢弃接收到的帧。而此时认为帧正确的节点会收到重复帧。这就容易造成两个节点收到的信息不同,认为正确的节点收到了两帧信息,认为错误的节点收到了一帧信息,这种情况在转向和制动系统中可能会导致严重的后果。
  • 不可预测性
    个人简单理解为,每个节点的状态不容易确定。
  • 信道出错堵塞
    节点可能受干扰或其他因素导致暂时或永久性失效。出错的主机会命令CAN收发器不断发送消息。由于该信息的格式等均合法,而且CAN通信会根据优先权发送帧,就会导致比它优先权低的信息被暂停或者永久堵塞。
相关文章
|
存储
[simulink] --- simulink模块(三)
[simulink] --- simulink模块(三)
2443 0
|
8月前
|
人工智能 专有云 索引
Qwen3-Pro重磅发布!基于阿里云APG服务器的专属优化模型,性能翻倍
近日,阿里云专有云团队联合通义实验室推出针对阿里云APG服务器的专属优化模型Qwen3-Pro:对比Qwen3-VL-235B(开源版)模型效果持平、性能翻倍
940 0
|
2月前
|
测试技术 API iOS开发
WorkBuddy 接入 DeepSeek :Windows/macOS 安装、模型配置与文件自动化
WorkBuddy 是一款桌面级AI Agent工作台,告别简单复制粘贴式AI使用。它能理解任务、规划步骤、读写本地文件、调用工具,自动生成文档/代码/图表等交付物。本文详解Windows/macOS安装差异、DeepSeek API接入、Ask/Plan/Craft三模式实战及IT场景应用,强调安全边界与可验证执行流程。
|
9月前
|
人工智能 自然语言处理 文字识别
Qwen3-Omni新升级:声形意合,令出智随!
Qwen3-Omni-Flash-2025-12-01是全新升级的全模态大模型,支持文本、图像、音频、视频输入,实现自然语音与文本同步输出。全面优化音视频理解与生成,支持多轮流畅对话、自定义人设与系统指令,提升多语言及跨模态交互准确性,语音更拟人,图像视频理解更深入,打造“声形意合”的智能交互体验。(239字)
1083 0
|
2月前
|
弹性计算 运维 Linux
阿里云国际站代理商:ECS SSH连接失败解决方法 Linux远程登录故障排查全流程
很多用户从购买阿里云ECS到第一次尝试远程登录,就卡在SSH环节——命令行敲完回车后光标一直闪烁,或者直接提示“Connection refused”。这类问题并不复杂,但排查方向如果跑偏,会浪费大量时间。我们梳理了一套从现象反推根因的「阿里云ECS SSH连接失败解决方法」,把故障归为连接超时、连接被拒绝、认证失败三种类型,对应着网络可达性、服务可用性和凭证正确性三层关卡。
671 0
|
2月前
|
人工智能 定位技术 知识图谱
知识图谱和本体语义建模,到底有什么不一样?
本体语义建模定义逻辑框架,知识图谱记录具体事实,二者是先后关系而非替代关系。
|
8月前
|
IDE 自动驾驶 Linux
深度解析 CAN 总线:从底层物理层到 SocketCAN 编程实战
CAN总线是工业通信的关键技术,以其高可靠性和实时性广泛应用于自动驾驶、轨道交通等领域。其核心技术包括差分信号传输(物理层)和非破坏性逐位仲裁机制(数据链路层),确保在极端环境下稳定工作。CAN协议支持标准帧(11位ID)和扩展帧(29位ID),并通过严密的错误检测(5种机制)和节点健康管理(TEC/REC计数器)实现自我修复。进阶的CAN FD技术提升了数据传输能力(64字节负载,5Mbps速率)。Linux环境下可通过SocketCAN实现CAN通信模拟。
2037 8
|
Linux Docker Windows
Docker Compose
Docker Compose
1935 29
|
人工智能 自然语言处理 搜索推荐
提示词工程师到底是干什么的?
从小张想让AI助手帮他写代码却总是得到奇怪答案说起,揭开提示词工程师这个神秘职业的面纱。这个被称为'AI翻译官'的工作到底有多香?是时候考虑转行了吗?
1021 4
CH340外围电路
CH340外围电路介绍