《我的 Classic Platform AUTOSAR之路》 SPI介绍与EB配置

2023-11-11 09:20

本文主要是介绍《我的 Classic Platform AUTOSAR之路》 SPI介绍与EB配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

AUTOSAR MCAL SPI

  • AUTOSAT SPI
    • SPI物理层介绍
    • SPI 在AUTOSAR的配置主要参数
    • SPI EB配置参数

AUTOSAT SPI

以下内容基于标准AUTOSAR文档以及EB Tresos工具说明

SPI物理层介绍

SPI,Serial Peripheral interface,顾名思义就是串行外围设备接口,是Motorola首先在其MC68HCXX系列处理器上定义的。

SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,比如AT91RM9200。

SPI分为主、从两种模式,一个SPI通讯系统需要包含一个(且只能是一个)主设备,一个或多个从设备。SPI接口的读写操作,都是由主设备发起。当存在多个从设备时,通过各自的片选信号进行管理。

优点:支持全双工通信、通信简单、数据传输速率快;

缺点:没有指定的流控制,没有应答机制确认是否接收到数据,所以跟IIC总线协议比较在数据的可靠性上有一定的缺陷。

SPI物理层
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时),这四根线分别是MISO、MOSI、SCLK、CS。

备注:
常见的SPI主要是3线SPI,4线DSPI,6线QSPI,具体可百度搜索,此文主要讲4线DSPI

在这里插入图片描述
在这里插入图片描述

CS:控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(一般默认为低电位),对此芯片的操作才有效,这就允许在同一总线上连接多个SPI设备成为可能。也就是说:当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时将需要将从设备对应的片选引脚电平拉低。

在这里插入图片描述

MISO/MOSI/SCLK:通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCLK时钟线存在的原因,由SCLK提供时钟脉冲,MISO,MOSI则基于此脉冲完成数据传输。数据输出通过MOSI线,数据在时钟上升沿或下降沿时采样,同时也会有返回数据用于接受。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。下图是SPI通信的一个简单例子:

在这里插入图片描述

SPI通信模式
SPI通信有4种不同的模式,不同的从设备可能在出厂是就是配置为某种模式,这是不能改变的,但我们的通信双方必须是工作在同一模式下,所以我们可以对我们的主设备的SPI模式进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来控制我们主设备的通信模式。

时钟极性CPOL是用来配置SCLK的电平出于哪种状态时是空闲态或者有效态,时钟相位CPHA是用来配置数据采样是在第几个边沿:

CPOL=0,表示当SCLK=0时处于空闲态,所以有效状态就是SCLK处于高电平时;

CPOL=1,表示当SCLK=1时处于空闲态,所以有效状态就是SCLK处于低电平时;

CPHA=0,表示数据采样是在第1个边沿,数据发送在第2个边沿;

CPHA=1,表示数据采样是在第2个边沿,数据发送在第1个边沿。

在高电平有效状态时,第一边沿为上升沿,第二边沿为下降沿;在低电平有效状态时,第一边沿为下降沿,第二边沿为上升沿。

具体四种模式如下:

CPOL = 0,CPHA = 0

时钟高电平时为有效状态,时钟上升沿(第一个边沿)采样。
在这里插入图片描述

CPOL = 0,CPHA = 1

时钟高电平时为有效状态,时钟下降沿(第二个边沿)采样。
在这里插入图片描述

CPOL = 1,CPHA = 0

时钟低电平时为有效状态,时钟下降沿(第一个边沿)采样。
在这里插入图片描述

CPOL = 1,CPHA = 1

时钟低电平时为有效状态,时钟上升沿(第二个边沿)采样。
在这里插入图片描述

SPI内部工作机制
SPI可分为主、从两种模式,并且支持全双工模式,所以这也就导致STM32的SPI接口比较复杂。比如:配置SPI为主模式、配置SPI为从模式、配置SPI为单工通信、配置SPI为双工通信等等。下图为SPI工作框图和单从机工作模式的总线连接图:
在这里插入图片描述
在这里插入图片描述

主机和从机都有一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。串行移位寄存器通过MOSI信号线将字节传送给从机,同时从机也将自己的串行移位寄存器中的内容通过MISO信号线返回给主机。这样,两个移位寄存器中的内容就被交换。外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。

SPI是一个环形总线结构,由CS、SCLK、MISO、MOSI构成,其时序其实很简单,主要是在SCLK的控制下,数据按照从高位到低位的方式依次移出主机寄存器和从机寄存器,并且依次移入从机寄存器和主机寄存器。当寄存器中的内容全部移出时,相当于完成了两个寄存器内容的交换。

假设主机的8位寄存器装的是待发送的数据10101010,上升沿发送、下降沿接收、高位先发送。那么第一个上升沿来的时候,主机将会通过MOSI信号线传输给从机最高位1,自身寄存器变成0101010x。同时,MISO信号线会从从机处返回一个数据给主机,那么这时寄存器为0101010MISO,这样在 8个时钟脉冲以后,两个寄存器的内容互相交换一次。这样就完成里一个SPI时序。

主机和从机的发送数据是同时完成的,两者的接收数据也是同时完成的。也就是说,当上升沿主机发送数据的时候,从机也发送了数据。所以为了保证主从机正确通信,应使得它们的SPI具有相同的时钟极性和时钟相位。

SPI 在AUTOSAR的配置主要参数

  • 波特率
    SPI为主从模式,波特率需要小于从芯片的最大波特率设置

  • 极性相位
    初始状态为高电平,那么 Leading 就是它的第一个上升沿;
    初始状态为低电平,那么 Leading 就是它的第一个下降沿。在这里插入图片描述

  • CS使能电平
    数据有效是的电平状态

  • CLK Idle电平
    数据无效时的电平状态

  • 数据大小端
    MSB/LSB

  • 数据位宽
    8bit,16bit,32bit需要看从芯片支持模式

  • 数据长度
    根据所协议去设定数据长度

  • CS2CLK时间
    按datasheet设置,否是可能通信失效

  • CLK2CS时间
    按datasheet设置,否是可能通信失效

  • CS2CS时间
    按datasheet设置,否是可能通信失效

  • SPI通信模式(同步 or 异步)
    从物理层面SPI通信都是同步机制,此处设置是设置软件层面的同步和异步通信模式:同步就是软件等SPI收发完成,才能执行其他命令;异步是软件发起SPI通信请求,由硬件(可能使用DMA)去搬运收发数据,收发完成产生中断,建议数据量较大的时候使用。

  • Buffer模式(IB or EB)
    IB为SPI内部寄存器Buffer,存储数据量较小
    EB为使用SysRAM存储Buffer,所有的SPI通信都可以设置为EB模式。

SPI EB配置参数

  • SpiChannel
  • SpiExternalDevice
  • SpiJob
  • SpiSequence

通常情况下下,上面几个配置组每块芯片配置一个组就可以,在使用的使用会使用Channel和Sequence的Index去设置和调用Spi函数。

遇到一些标准的代码厂商也会在一个ExternalDevice下配置多个Channel&Sequence,如Vector 的EEPROM模块,其实就是把SPI发送从芯片的寄存器和数据分开配置,实际上和所有的配置成一一对应的没有区别。

最后:如果需要可以私信我分享代码使用示例。

这篇关于《我的 Classic Platform AUTOSAR之路》 SPI介绍与EB配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/389068

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

5 种使用Python自动化处理PDF的实用方法介绍

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务... 目录使用内置库(os、subprocess)调用外部工具使用 PyPDF2 进行基本 PDF 操作使用

JDK8(Java Development kit)的安装与配置全过程

《JDK8(JavaDevelopmentkit)的安装与配置全过程》文章简要介绍了Java的核心特点(如跨平台、JVM机制)及JDK/JRE的区别,重点讲解了如何通过配置环境变量(PATH和JA... 目录Java特点JDKJREJDK的下载,安装配置环境变量总结Java特点说起 Java,大家肯定都

linux配置podman阿里云容器镜像加速器详解

《linux配置podman阿里云容器镜像加速器详解》本文指导如何配置Podman使用阿里云容器镜像加速器:登录阿里云获取专属加速地址,修改Podman配置文件并移除https://前缀,最后拉取镜像... 目录1.下载podman2.获取阿里云个人容器镜像加速器地址3.更改podman配置文件4.使用po

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定