SPI 协议的解析

        

目录

1、SPI 的硬件层

1.1、SPI接口的信号线

1.2、SPI通信常见的连接方式

2、SPI的通信协议

2.1、起始信号

2.2、停止信号

2.3、数据有效性

2.4、时钟的同步

3、SPI的四种工作模式


        SPI协议是由摩托罗拉公司提出的一种串行外围设备通信接口,是一种高速全双工的通信总线。它被广泛地使用在ADC、LCD、存储器等设备中,包括一些需要与MCU之间有较高通讯速率要求的场合中。

1、SPI 的硬件层

        SPI是采用主从模式的一种通信方式,它支持一主一从、一主多从,但是不支持多主机模式。

常见的一主多从的连接方式如下:

1.1、SPI接口的信号线

        SPI接口共有四根信号线,它们分别如下:

        SCLK:时钟信号线。由主机产生并控制。

        MOSI:主机数据输出,从机数据输入。(主出从入)

        MISO:主机数据输入,从机数据输出。(主入从出)

        NSS:从机片选使能信号线。该信号由主机进行控制。在一主对多从的模式下,每一个从机都需要一个NSS,用于主机选择和那个从机进行通信(一般为低电平有效)。当一个SPI设备需要发送广播数据,它必须拉低NSS信号,以通知所有其它的设备它是主设备。

1.2、SPI通信常见的连接方式

(1)SPI通信配置为全双工的连接方式:

        这种连接方式允许主从机之间互相进行通信,时钟均由主机产生。

(2)单工模式 —— 主机接收,从机发送

        这种模式下由主机产生时钟SCK,主机只能收到从机上报的数据,不能向从机下发数据。

(3)单工模式 —— 主机发送,从机接收

        这种模式下由主机产生时钟SCK,主机只能向从机下发数据,不能接收从机上报的数据。常见的应用有带SPI接口的LCD显示屏。

(4)双向通信的连接方式

2、SPI的通信协议

        SPI的协议定义了通信的起始信号、停止信号、数据有效性、时钟同步等。它的通讯时序如下:

图:SPI通信时序图

        这是一个主机的通信时序,信号线 NSS、SCK、MOSI 都是由主机控制,MISO 是由从机进行控制。其中 MOSI 和 MISO 上的数据仅在 NSS 为低时才有效,并且每个SCK 时钟周期只交换一位数据。

2.1、起始信号

        SPI通信时序图中的①为通信的起始信号,由主机控制NSS从高电平到低电平,从而选择要进行通信的从机,再通过主机产生时钟信号SCK,启动一次数据的传输。

2.2、停止信号

        SPI通信时序图中的⑥为通信的起始信号,由主机控制NSS从低电平到高电平,从而结束一次数据的传输。

2.3、数据有效性

        SPI 在 SCK 时钟的同步下进行数据的准备和采样,如通信时序图的②③④⑤所示。在 NSS 为低的情况时,在 SCK 的上升沿时 MISO 和 MOSI 进行数据准备,SCK 的下降沿时读取 MISO 和 MOSI 上的数据。在 NSS 为高时,MISO 和MOSI 上的数据无效。

2.4、时钟的同步

        SPI 的数据传输是需要 SCK 时钟信号严格同步的,每一个 SCK 周期只传输一位数据,这一个周期里要完成数据的准备和采样,且数据的输入和输出是同时进行的。

        SPI中数据是MSB 先行或 LSB先行,在协议中是没有硬性规定,只需通信双方保持统一即可。

        SPI 一次数据传输可以是 8 位或 16 位为单位,每次传输的单位数不受限制。

3、SPI的四种工作模式

        SPI 一共有四种工作模式。它们的区别是:

        1)总线空闲时 SCK 的电平状态

        2)数据开始采样的时刻。

        这四种模式是通过 “时钟极性 CPOL” 和 “时钟相位 CPHA” 的电平来实现和区分的。如下:

        1)CPOL=0 时,SCK 引脚在空闲状态保持低电平;

        2)CPOL=1 时,SCK 引脚在空闲状态保持高电平;

        3)CPHA=0 时,SCK 时钟的第一个边沿进行采样;

        4)CPHA =1 时,SCK 时钟的第二个边沿进行采样。

        时钟相位CPHA =1 ,数据在SCK 时钟的第二个边沿采样的时序图如下:

        时钟相位CPHA =0 ,数据在SCK 时钟的第一个边沿采样的时序图如下:

        对嵌入式开发感兴趣的话,欢迎关注微信公众号“嵌入式之入坑笔记”,一块学习交流吧!

 

英飞凌MCAL(Microcontroller Abstraction Layer)是一种软件层,用于配置和管理英飞凌SPC5系列微控制器的外设和功能。MCAL提供了与硬件无关的API(应用程序接口),使开发人员可以简化系统的开发和集成。MCAL还提供了多个模块,包括时钟,GPIO(通用输入输出),CAN(控制器局域网),底层驱动程序等,以支持各种外设的配置和操作。 MCAL配置可以通过MCAL Configurator工具进行完成。该工具提供了一个用户界面,通过可视化界面和选项来配置和生成MCAL软件包。在MCAL Configurator中,用户可以选择需要的外设模块,如CAN,LIN(局域网),USART(通用同步/异步收发器)等,并进行相应的设置和配置。用户可以选择外设的参数设置,例如波特率,数据位和校验位等。此外,用户还可以通过MCAL Configurator设置中断和事件触发条件。 一旦完成MCAL的配置,生成的MCAL软件包可以被导入到集成开发环境(IDE)中,进一步用于应用程序的开发和编译。MCAL提供了一些API函数,可以在应用程序中调用来访问和操作各种外设。开发人员可以使用这些API函数来发送和接收CAN消息,读写GPIO引脚,进行串口通信等。 通过使用英飞凌MCAL,开发人员可以实现系统外设和功能的快速配置和集成,大大简化了系统开发的复杂性。MCAL的设计和功能使得开发人员能够更好地利用英飞凌SPC5微控制器的各种功能和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式之入坑笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值