SPI简介

特点:

    并行通信------数据各位同时发送
    串行通信------数据一位一位发送    (SPI)

    SPI的四根线:1.MISO (主设备数据输入,从设备输出)
                2.MOSI(主设备输出,从设备输入)
                3.SCLK   (时钟信号)
                4.CS/SS(片选信号)------选择哪一个从机

连接:


    SPI是一个主机多个从机的,已经知道SPI有四根线,那么他们的连接方式就是点对点的,唯一有一个要注意的就是片选信号(CS/SS)他是要选择
的,不然不知道是哪一个从机。

原理:


    1.SPI是没有起始信号,应答信号,校验位的。
    2.SPI总线采用同步方式,在时钟线的第一个或者第二个跳变沿采集数据(主机侧读数据),然后在紧接着的下一个跳变沿发送数据。8个时钟周期即可完成一个字节的数据传输。

        想象一下,你和你的朋友站在一条直线上,你们之间需要传递一些小纸条(数据)。但是,你们不能随便扔纸条,而是要等到老师(时钟信        号)吹哨子(跳变沿)的时候才能传递。

        同步方式:就像你们在老师的哨声指挥下行动一样,SPI总线上的所有设备都是在时钟信号的控制下同时进行数据传输的。这意味着,没有        时钟信号,就不会有数据的移动。

        时钟线的第一个或第二个跳变沿采集数据:这就好比老师第一次或第二次吹哨时,你开始读取手中纸条上的信息(主机读取从机发送的数        据)。这里的“跳变沿”指的是时钟信号从低到高或从高到低的变化时刻。
        紧接着的下一个跳变沿发送数据:在老师下一次吹哨时,你将自己准备好的纸条(数据)传递给下一个朋友(主机向从机发送数据)。

        8个时钟周期完成一个字节的数据传输:一个字节由8位组成,所以在SPI总线中,通过8次哨声(时钟周期),就能完成一个字节的信息传        递。这意味着,每次哨声响起,都会有一位数据被传输。
        简单来说,SPI总线就像一个有组织的游戏,大家按照统一的规则(时钟信号)和步骤(跳变沿)来传递信息,确保了数据传输的准确性和高效性。

极性和相位:


    1.SPI有四种模式:
            1.低电平触发
            2.高电平触发
            3.上升沿触发
            4.下降沿触发
    (美女老师说过)如果在SPI是配置里面没有主机和从机进行相关的模式配置,那么SPI是没有办法通信的。也会通信失败。

    2.极性和相位是和SPI的时钟信号关连起来的,它们决定了数据是如何在时钟信号的控制下被采样和传输的。理解这两个概念对于正确配置和使用       SPI接口至关重要。(可以理解为上面的纸条传输,要听哨声。那么这个东西主要是看从机的,然后再去配置主机)


SPI子系统主要由以下组件构成:
            1.spi_master:代表SPI总线的控制器,负责管理SPI总线的时钟信号和其他控制信号。
            2.spi_device:表示连接到SPI总线上的一个具体设备,包含了设备的地址、配置参数等信息。
            3.spi_board_info:在板级支持文件中定义,包含了SPI设备的硬件信息,用于注册SPI设备到系统中。
    在使用SPI子系统时,开发者通常需要:
            定义spi_board_info结构体,包含设备的标识符、引脚配置、中断信息等。
            注册spi_board_info到内核,这样SPI子系统就可以识别并初始化这个设备。
            编写驱动程序,实现spi_driver结构体,包含设备的探测、移除和数据传输函数。
            使用SPI子系统提供的API,如spi_write()、spi_read()和spi_transfer(),来与SPI设备进行数据交换。    

    SPI子系统就像是这条高速公路的交通管理中心
    1. 设备管理
    想象交通管理中心:它负责登记所有的小镇(SPI设备),知道哪些小镇在哪个位置,以及它们的特殊需求,比如有的小镇需要更快的车速(更高的时钟频率),有的小镇可能只允许特定类型的车辆进入(数据格式要求)。

    2. 抽象层
    就像路线指示牌:交通管理中心为司机(应用程序或驱动程序)提供清晰的指示牌,告诉他们如何到达目的地,而不需要了解公路的具体构造和维护细节。这样,无论是新手司机还是老司机,都能轻松找到路。

    3. 配置和控制
    想象红绿灯和速度限制:交通管理中心可以控制红绿灯(时钟信号)和速度限制(时钟频率),确保交通流畅,避免拥堵和事故。同时,它还可以决定哪些小镇现在可以通行(片选信号)。

    4. 驱动程序支持
    就像GPS导航系统:为司机提供路线规划和实时路况信息,司机只需要关注他们的目的地和驾驶,而不需要关心道路的具体设计和维护。

    使用SPI子系统的过程
            定义小镇的位置和需求:在板级支持文件中,定义每个小镇(SPI设备)的位置和特殊需求,比如是否需要快速通道(高时钟频率)。


            注册小镇:将小镇的信息提交给交通管理中心(SPI子系统),这样管理中心就知道了小镇的存在。


            编写小镇的访问指南:为每个小镇编写访问指南(驱动程序),告诉司机(应用程序)如何到达那里,以及小镇的特色服务(数据读写)。


            使用访问指南旅行:司机(应用程序)根据访问指南,通过高速公路(SPI总线)到达小镇(SPI设备),享受小镇的服务(读写数据)。
    
    总之,SPI子系统就像是一个智能的交通管理中心,它简化了城市与小镇之间的通信,让数据的传输变得更加高效和容易。开发者只需要关注他们想要实现的功能,而不需要深入了解SPI总线的底层细节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值