SPI协议,这篇就够了!

原创 云深之无迹 2025-01-04 08:42

IIC支持热拔插吗?(附有详细CW32 IIC协议解读) 不知道你学会没有?我在这些低速实验写完以后会给出逻辑分析仪的调试步骤。

IIC写了,接下来就是SPI,是值得大写特写的东西,因为绝大多数的器件都是SPI的,简直就是ALL IN了。

我觉得大家对待协议也不需要头疼,这也是人设计的,抓住核心的观念就能举一反三。比如一个协议里面的数据,0和1究竟是如何传输的。没错就是这样简单的观念。以及知道每次传输的帧是多大,如果小于,就补0占位,大于就要分多帧。

SPI 的数据传输以帧为单位,每帧的数据位宽通常为 8 位(也可配置为 16 位或更多)。
数据从 高位 (MSB)低位 (LSB) 开始发送,这取决于设备配置。

其实SPI的特点是自由,简单和高速

引脚标准是4个,有很多的变种。

比如QSPI,就4个数据线一起来输出,一个时钟沿就4bit

SPI 通过时钟信号(SCLK)同步数据传输。

SCLK先看,然后再看稳定的采样在哪里

俩俩配对就4种

单从机通信

  • 主机将目标从机的 SS/CS 引脚拉低(有效),其他从机保持不工作状态。

  • 完成通信后,主机将 SS/CS 引脚拉高(无效)。


多从机通信

  • 每个从机分配一个独立的 SS/CS 引脚。

  • 主机通过控制对应从机的 SS/CS 引脚来选择目标从机。

  • 可以把多个SPI器件的SCK,DIN,DOUT接入外设口,CS分别接入,一旦上面拉低,主机就知道是这个器件要通讯了。


每次通信时,SPI 必须同时发送和接收数据。如果主机想读取从机数据,需要先发送占位字节(Dummy Data)发送的数据按位(Bit)在 SCLK 的有效边沿传输。数据在时钟的采样边沿被接收并存储到接收寄存器中。数据一般采用二进制编码,MSB 或 LSB 优先传输。
上面就对文章的一个总结吧!

下面内容特别棘手,先看个通俗解读。

主机是顾客,从机是厨师。
  1. 第一次交流:顾客对厨师说:“我要一个汉堡。” 厨师当时无法立刻提供汉堡,但会随口说点闲话(无意义数据)。
  2. 第二次交流:顾客再问一句“我的汉堡好了吗?”(占位数据),厨师这时已经准备好汉堡并递给顾客(返回有效数据)。

这个颜色就很能说明问题,灰色就是其实在发送

SPI通讯的核心是,同步发送。

同步

然后再来看看SPI在不同的MCU里面的体现:

NRF5280,原来你小子也叫IIC为TWI

可以看到SPI因为比IIC自由和高效,更加的被人喜欢

主机输出、从机输入(MOSI)
主机输入、从机输出(MISO)
MOSI和MISO是数据线。MOSI将数据从主机发送到从机,MISO将数据从从机发送到主机。

在SPI通信期间,数据的发送(串行移出到MOSI/SDO总线上)和接收(采样或读入总线(MISO/SDI)上的数据)同时进行。串行时钟沿同步数据的移位和采样。

每次时钟的一个边沿,两个引脚就会交换一次

在每个 Clock 周期内,SPI 设备都会发送并接收一个 bit 大小的数据(不管主设备好还是从设备),相当于该设备有一个 bit 大小的数据被交换了

假设主设备发送数据 0b1010,从设备在同时会返回数据 0b0101。

这个图是真好,说明了这个循环的过程

MicroChip的外设

旋转交换

一个 Slave 设备要想能够接收到 Master 发过来的控制信号,必须在此之前能够被 Master 设备进行访问 (Access)。

所以,Master 设备必须首先通过 SS/CS pin 对 Slave 设备进行片选, 把想要访问的 Slave 设备选上。 

在数据传输的过程中,每次接收到的数据必须在下一次数据传输之前被采样。如果之前接收到的数据没有被读取,那么这些已经接收完成的数据将有可能会被丢弃,导致 SPI 物理模块最终失效。

  1. 每个 SPI 外设(无论主从)都拥有发送和接收寄存器。
  2. 每次 SPI 时钟周期完成时,接收到的数据会存储到接收寄存器中,发送寄存器中的数据则被发送出去。

因此,在程序中一般都会在 SPI 传输完数据后,去读取 SPI 设备里的数据, 即使这些数据(Dummy Data)在我们的程序里是无用的(虽然发送后紧接着的读取是无意义的,但仍然需要从寄存器中读出来)。

每次接收数据后,程序必须从接收寄存器中读取数据,否则新的数据到来时会覆盖原有数据(丢失数据)。

这就是为什么即使程序中对某些数据不关心(例如占位数据 Dummy Data),也必须通过代码将其读取出来。

  • 写操作的同时会接收 Dummy 数据

  • 当主设备发送数据给从设备时,从设备的 MISO 引脚也会输出数据(可能是无意义的 Dummy 数据,比如 0xFF0x00)。

    如果主设备只想单纯“写数据”,需要忽略接收到的数据。


  • 读操作的同时需要发送 Dummy 数据

  • 当主设备需要从从设备读取数据时,必须通过 MOSI 发送一些无意义的占位数据(Dummy 数据,比如 0xFF0x00),以触发时钟信号驱动从设备的数据传输。

    这样,主设备的接收寄存器中才能获取到从设备的有效数据。


CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。

数据显示在MOSI和MISO线上。一发一收。

传输的开始和结束用绿色虚线表示,采样边沿用橙色虚线表示,移位边沿用蓝色虚线表示。

在SPI通信中,数据的“移出”是指数据从发送寄存器中被传输到MOSI(主输出从输入)引脚或MISO(主输入从输出)引脚,最终被对方设备接收到。

采样边沿(Sampling Edge)是获得数据
定义:采样边沿是接收设备根据时钟信号采集数据的时刻。
接收方会在指定的时钟边沿(上升沿或下降沿)读取数据线上的电平值(MOSI或MISO),并将其作为有效数据。
保证接收设备在准确的时刻读取到数据线上的稳定数据,避免因信号抖动或切换时的不稳定性导致读取错误。
接收方行为:
在时钟的采样边沿,接收方对数据线(MOSI或MISO)上的数据进行采集。
采样边沿是时钟的一侧(上升沿或下降沿),取决于SPI的工作模式。

我们在边沿的角度再看看传输过程。

移位边沿(Shifting Edge)是发送数据
定义:移位边沿是发送设备根据时钟信号将数据输出到数据线的时刻。在这个边沿,发送设备将数据从发送寄存器移出,并更新到数据线(MOSI或MISO)上。确保发送设备在正确的时钟边沿更新数据线上的值,保证数据在线上有足够的稳定时间供接收设备采样。
发送方行为:
在时钟的移位边沿,发送方将数据移出,更新到数据线上。
移位边沿与采样边沿错开,避免数据更新时影响接收方的采样。
采样边沿和移位边沿在时钟信号中是交替出现的:
  • 一个设备的采样边沿,对应另一个设备的移位边沿。
  • 比如:若采样在时钟的上升沿,则数据通常在下降沿移出。
这种错开设计的目的是给数据一个稳定的时间窗口,保证数据线上的值在采样前已经切换完毕。

再从各个部件来看:

  • SPI设备内部:

  1. SPI寄存器中存储了要发送的数据。

  2. 在时钟的下降沿时,寄存器中的数据会被移出到硬件传输逻辑,并通过硬件驱动电路输出到引脚上(MOSI或MISO)。

  • SPI总线:

    1. 数据被传输到总线上(MOSI或MISO线),随着时钟信号的变化而发送到对方设备。

    2. 同时,对方设备也会根据时钟的上升沿采样接收该数据。

  • 对方设备:

    1. 接收数据的一方通过时钟的上升沿对总线上的数据采样,将接收到的数据信号存储到其自身的接收寄存器中。


    移出的目的地:数据会从发送设备的寄存器移出,经过SPI总线,发送到接收设备的输入引脚。
    发送和接收是同步的:在SPI的全双工通信中,数据传输是双向同时进行的。当主机通过MOSI发送数据时,从机通过MISO同时将数据移出,传回主机。

    可以挂多个设备

    连接的方法有很多-MSPM0取图

    TI自己取了新名字,反正写的也是比较通俗的

    TI这个真难读,数据手册,不说人话。

    老样子,我们从CW32的参考手册看起。

    串行外设接口(SPI)是一种同步串行数据通信接口,常用于 MCU 与外部设备之间进行同步串行通信。

    CW32L010 内部集成 1 个串行外设 SPI 接口,支持双向全双工、单线半双工和单工通信模式,可配置 MCU 作为主机或从机,支持多主机通信模式。

    单工通信模式:数据只单向传输,要么主机向从机发送数据,要么从机向主机发送数据,不能双向交换。
    数据方向明确时使用,可以减少信号线数量。常用于一些只需要传感器输出数据的场景。
    1. 速度快:SPI 通信速度可达几十 Mbps,比 I²C 更高效。
    2. 全双工:支持同时发送和接收数据。
    3. 简单协议:没有复杂的握手或地址机制。


    这是特色功能

    这个框图非常简单了,就是发送和移位形成一个环,然后一个时钟和CS

    先看GPIO,时钟就是输出嘛,还是要驱动能力的,推挽

    非常的全面,CH的数据手册也有这个

    SPI 的通信时序,CS、SCK、MOSI 信号都由主机控制产生,MISO 信号是从机响应信号。

    从机选择 CS 信号由高电平变低,是 SPI 通信的起始信号,当从机检测到起始信号后,开始与主机通信。

    在每个 SCK 的时钟周期中,MOSI 和 MISO 信号线传输一位数据。CS 由低电平变高,是通信的停止信号,表示本次通信结束。

    你觉得这个话里面平平无奇是吧?

    我考考你,这个时钟是一直都有?还是就通讯的时候才有时钟?

    很明显是,主机在给时钟的情况下,数据同步的发出来

    可以继续放大看

    主机(Master):控制通信的启动和停止。
    主动生成时钟信号(SCK)。
    SCK(Serial Clock,时钟信号):
    1. 由主机生成并提供给从机。
    2. 用于同步主机和从机之间的数据传输。
    3. 数据的采样时刻由时钟信号的沿(上升沿或下降沿)决定。
    4. 从机仅被动接收时钟信号,不能主动生成时钟。


    只有通信时才启用,因为我看文章里面都不说这点。
    • 时钟信号(SCK)在通信开始时由主机激活,当通信结束时停止。
    • 在非通信状态下,SCK 保持在空闲电平(由时钟极性 CPOL 决定)。

    后边就是下降沿的是个采样点,在数据线上面是稳定的,取01.在下一个边沿的时候,红色,转换了数据。

    数据线上面有交叉就是证明在变化,不能取值,不稳定

    数据帧宽度由控制寄存器 SPI_CR1 的 WIDTH 位域配置,可设置 4 ~ 16bit 任意数据位宽。 

    这个一会儿具体看寄存器,反正就是说,一个数据帧到底是几位的,我们平时使用一个字节,8位。

    STM32里面就写了16位,8位,没有这么灵活

    MSP的是可以任意编码的

    数据的大小端由控制寄存器 SPI_CR1 的 LSBF 位域配置,可选择最高有效位在前(MSB)或最低有效位在前(LSB)。 

    主机模式帧间隔由控制寄存器 SPI_CR1 的 GAP 位域配置,可选择 0~15 个 SCK 时钟周期间隔。

    时钟极性 CPOL,指设备处于没有数据传输的空闲状态时,SCK 串行时钟线的电平状态。

    一种有四种

    先看时钟,假如说0,那工作的时候第一个边沿就是上升的,这个时候就可以采样或者下一个边沿采样,就是下降沿,非常的简单,时刻记住稳定采样的时刻。

    ADI的图很漂亮

    我喜欢ST的这个设计,就是很直观

    全双工模式

    主机通过 MOSI 发送数据,同时通过 MISO 接收数据。

    数据是以位为单位同时交换的,例如主机发送一个字节的同时,从机也返回一个字节。

    双向全双工模式:数据在主机和从机之间同步双向传输,主机和从机的发送和接收操作可以同时进行。
    适用于需要实时发送和接收数据的场景。

    设置 SPI_CR1.MSTR 为 1,SPI 工作于主机模式。主动发送时钟信号。

    主机设置 SPI_SSI.SSI 为 0,在从机选择 CS 引脚输出低电平,作为通信起始信号。 开始的标志是,CS拉低,各单位注意。

    当发送缓冲器为空时,即 SPI_ISR.TXE 标志位为 1,将待发送的一帧数据写入 SPI_DR 寄存器,数据在同步移位时钟信号的控制下,从 MOSI 引脚输出,同时将 MISO 引脚的数据接收到移位寄存器。

    主机发送现在里面什么东西也没有,这个状态标志为1.这个时候要把发送的数据写进去,接着在时钟的同步下,传输出去。同时接收缓冲区把从机的东西取回来。

    发送一个数据帧结束时, 接收缓冲器非空标志位 SPI_ISR.RXNE 由硬件置 1,表示已经接收完成一帧数据,此时可以读取 SPI_DR 寄存器。 

    设置 SPI_SSI.SSI 为 1,从机选择引脚 CS 输出高电平,结束本次通信。

    引脚拉低,一帧完事。

    我们想想?如何保证一帧数据的发送完整?

    一是CS引脚,同步标志出现

    二是时钟引脚上面的采样边沿

    CS和SCK是两个重要的信号。

    DR是写入数据,其实就是准备,你不是要发送吗?

    在MOSI之前准备好这个寄存器的内容。

    是说明缓冲区的有无内容

    同样,接收的缓存区也可以有状态,好东西

    再看一个从机收发

    设置 SPI_CR1.MSTR 为 0,SPI 工作于从机模式。 

    在从机选择 CS 信号被拉低之前,从机需要设置 SPI_ICR.FLUSH 为 0,以清空发送缓冲区和移位寄存器,并将待发送的第一帧数据写入 SPI_DR 寄存器。 

    当 CS 信号被拉低后,被写入的数据将在主机的同步移位时钟信号的控制下,从 MISO 引脚输出,同时接收 MOSI 引脚的数据到移位寄存器。 

    如果是多数据帧连续通信,用户应当不断查询 SPI_ISR.TXE 标志位,一旦标志为 1,立即将待发送的数据写入 SPI_DR 寄存器,以免出现数据漏发。 

    一旦空了,就把数据写进去。缓冲区的作用是,确定里面空了才能发

    当接收缓冲器非空时,即 SPI_ISR.RXNE 标志位为 1,表示已经接收完成一帧数据,此时可以读取 SPI_DR 寄存器。当检测到 CS 引脚变为高电平时,本次通信结束。

    单线半双工模式:数据传输通过一根数据线进行,主机和从机之间只能单向通信,发送和接收不能同时进行。
    简化硬件设计(只需要一根数据线)。
    适合数据传输方向明确的应用场景。
    单线通信模式中,MOSI 和 MISO 共用一根数据线,具体方向由配置决定。

    可以看到就一个线,双向的

    单线半双工通信时,由于主机和从机的通信方向无法保证同步切换 ,有可能会出现驱动冲突而导致器件损害,建议在主机和从机之间的数据线上串联一个电阻,以限制电流。 

    当 SPI 作为从机时,使用单线半双工模式,可以实现与一个标准的 UART 收发器进行同步模式通信,此时 SPI 必须配置为固定的电平模式:时钟极性 CPOL 为 1,时钟相位 CPHA 为 1。

    主机发送 

    设置 SPI_CR1.MSTR 为 1,SPI 工作于主机模式;设置 SPI_CR3.HDOE 为 1,主机仅发送数据。 

    1就是仅发送

    主机设置 SPI_SSI.SSI 为 0,在从机选择引脚 CS 输出低电平,作为通信起始信号。 

    这些就是搞启动信号,头大

    当发送缓冲器为空时,即 SPI_ISR.TXE 标志位为 1,将待发送的一帧数据写入 SPI_DR 寄存器,数据在同步移位 时钟信号的控制下从 MOSI 引脚输出。 

    当写入最后一帧数据后,必须等待发送缓冲器为空,即 SPI_ISR.TXE 标志位变为 1,同时 SPI_ISR.BUSY 标志位变 为 0,以确保数据发送完毕。

    然后设置 SPI_SSI.SSI 为 1,在从机选择 CS 引脚输出高电平,结束本次通信。

    没意思。。。。

    下面看看STM32C0一个片子:

    两个线就行

    两个线就可以通讯了

    可以看到ST的基本上全系都有DMA,TX是内存到外设

    SPI 控制器支持 8 个中断源,当 SPI 中断触发事件发生时,中断标志位会被硬件置位,如果设置了对应的中断使能控制位,将产生中断请求。

    呦西,有了中断

    开启了中断以后,其实就是大中断,具体是什么中断,还得看寄存器的信息。

    在用户 SPI 中断服务程序中,应查询相关 SPI 中断标志位,以进行相应的处理,在退出中断服务程序之前,要清除该中断标志位,避免重复进入中断程序。

    很简单的使用

    老规矩就是读状态,写数据。

    中断方式复杂一点,因为要清楚以及要对缓冲区做处理

    走!看看STM32的。

    中断在此

    就是要判断哪个中断

    然后写个回调函数。

    如果是双工完成:

    void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi){    if (hspi->Instance == SPI1) // 确保是 SPI1    {        // 处理接收的数据(rx_buffer 中为接收到的数据)        for (int i = 0; i < sizeof(rx_buffer); i++)        {            printf("Received Data[%d]: 0x%02X\n", i, rx_buffer[i]);        }
    // 此处可以根据需要继续进行下一次通信 }}

    仅发送数据:

    void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi){    if (hspi->Instance == SPI1)    {        printf("SPI Transmit Completed!\n");    }}

    但是需要在NVIC里面:

    void HAL_MspInit(void){    HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
    // 配置 SPI1 的中断优先级 HAL_NVIC_SetPriority(SPI1_IRQn, 0, 0); HAL_NVIC_EnableIRQ(SPI1_IRQn);}

    啊这就是这么多了。

    但是TI的单片机更好玩:

    支持 PACKEN 功能,允许将 2 个 16 位 FIFO 条目打包为一个 32 位值以提高 CPU 性能。不过,并非所有器件都支持打包。

    TI这个为了提高性能,加了不少外设,主要是FIFO来缓存和拼接。时钟源很丰富。以及有了DMA,可以发送和接收,在完成后也有提醒。

    好看

    然后我们来具体的说说例子:

    同时收发数据通常出现在主设备(Master)在向从设备(Slave)发送某些命令或数据的同时,从设备也将状态或数据返回给主设备。

    主设备(比如 MCU)需要从 SPI Flash 存储器中读取数据。
    主设备需要发送一条命令来指定要读取的内存地址,同时从设备将指定地址的数据返回给主设备
    1. 主设备发送“读取命令”(通常为一个字节,比如 0x03)。
    2. 主设备继续发送目标内存地址(通常是 3 个字节,比如 0x001234)。
    3. 同时,从设备在接收命令和地址时会返回无意义的占位数据(Dummy Data)。
    4. 地址发送完毕后,从设备会根据主设备生成的时钟信号,将存储器中指定地址的数据返回。
    在这整个过程中:主设备发送数据时,同时接收数据。
    最初接收的数据可能是无意义的占位数据,而后续接收的则是有意义的有效数据。

    假设需要读取地址 0x001234 的数据:

    主设备发送: 0x03  0x00  0x12  0x34  0xFF  0xFF  0xFF ...从设备返回: 0xXX  0xXX  0xXX  0xXX  0x45  0x67  0x89 ...
    1. 0x03 是读取命令。

    2. 0x00 0x12 0x34 是要读取的地址。

    3. 0xFF 是主设备发送的占位数据,用于驱动时钟。

    4. 0x45 0x67 0x89 是从设备返回的有效数据。注意看是从设备给的


    再看一个

    SD 卡数据传输(SPI 模式):当主设备(MCU)通过 SPI 接口与 SD 卡通信时,每次数据传输都是一个完整的数据交换。
    主设备发送读/写命令的同时,SD 卡返回状态信息。因为SD卡还不知道主机要什么
    在数据传输过程中,主设备发送占位数据,SD 卡返回存储的数据。
    1. 主设备发送读取命令(如 0x51,表示读取数据块)。
    2. 主设备发送目标数据块地址。
    3. 主设备发送若干字节的占位数据。
    4. SD 卡在接收命令和地址时会返回响应信息,并在后续时钟周期返回数据块内容。
    主设备发送: 0x51  0x00  0x00  0x01  0x00  0xFF  0xFF  0xFF ...从设备返回: 0xFF  0x00  0x00  0x00  0x00  0xFE  0x01  0x02 ...
    1. 0x51 是读取命令。
    2. 0x00 0x00 0x01 0x00 是数据块地址。
    3. 0xFF 是主设备发送的占位数据,用于产生时钟。
    4. 0xFE 是 SD 卡的数据起始标志,后续是实际数据内容(0x01 0x02 ...)。

    后面橙色的就是从机发出来的,不过主机也得胡诌点

    从机第一次传过来的数据是没用的:

    在 SPI 的第一次通信中:
    主机发送一个命令字(或其他数据),从机还不知道主机想要什么,所以从机通常会返回无意义的占位数据(Dummy Data)。
    从机接收到命令后,开始准备主机请求的数据。
    在下一次通信中,从机才会将准备好的数据返回给主机。

    第一步:主机发送读取命令 0x03,从机还不知道主机的意图,返回的是无意义的数据 0xFF。

    因为从机不知道要什么

    第二步:主机发送寄存器地址 0x10,从机依然返回无意义的数据 0xFF。
    第三步:主机发送占位数据 0xFF,从机将准备好的寄存器数据 0x7A 返回给主机。

    现在看,是不是很清晰了

    这里拿一个SPI的ADC

    标准的SPI接口

    我喜欢这个名字

    这个是时序数据

    在CLK的上沿采集

    MSB在前,8bit一个字节,帧字走的。

    然后看IN和OUT,就是循环的传输的

    32bit,4个字节才能取完一次转换的数据

    我突然顿悟数据如何发送和接收:

    当CS一拉低,从机开始准备传输,当主机的时钟一来的时候,主机内部会一位一位的判断传来的数据是0还是1,这个数据就像发牌一样传到主机的内部寄存器里面,这个寄存器有多大?就是我们提前设置的,然后一个中断发出,CPU或者DMA快速的把数据搬走放到内存,接着下一个继续,字节数据就这样被源源不断的传进去。或者传出去。

    现在是ADC的视角,主机发来的数据就是DIN,这个字节就是控制用。然后你看DOUT的数据也会发,但是没关系的。

    然后下个字节,DOUT,ADC输出数据给主机。

    就这么多了,散会。

    https://zipcpu.com/blog/2019/03/27/qflexpress.html
    https://dev.ti.com/tirex/explore/node?node=A__ARqjcycmyhag6aCy3n3F4g__MSPM0-ACADEMY-CN__Gx9d9qT__LATEST
    https://www.analog.com/cn/resources/analog-dialogue/articles/introduction-to-spi-interface.html
    https://www.ti.com/content/dam/videos/external-videos/en-us/10/3816841626001/mspm0-spi-intro.mp4/subassets/mspm0-spi-module-presentation.pdf
    https://www.whxy.com/uploads/files/20241016/CW32L010_UserManual_CN_V1.1.pdf
    https://www.wpgdadatong.com.cn/blog/detail/45539

    评论
    • 物联网(IoT)的快速发展彻底改变了从智能家居到工业自动化等各个行业。由于物联网系统需要高效、可靠且紧凑的组件来处理众多传感器、执行器和通信设备,国产固态继电器(SSR)已成为满足中国这些需求的关键解决方案。本文探讨了国产SSR如何满足物联网应用的需求,重点介绍了它们的优势、技术能力以及在现实场景中的应用。了解物联网中的固态继电器固态继电器是一种电子开关设备,它使用半导体而不是机械触点来控制负载。与传统的机械继电器不同,固态继电器具有以下优势:快速切换:确保精确快速的响应,这对于实时物联网系统至
      克里雅半导体科技 2025-01-03 16:11 164浏览
    • 本文继续介绍Linux系统查看硬件配置及常用调试命令,方便开发者快速了解开发板硬件信息及进行相关调试。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。查看系统版本信息查看操作系统版本信息root@ido:/# cat /etc/*releaseDISTRIB_ID=UbuntuDISTRIB_RELEASE=20.04DISTRIB_CODENAME=focalDIS
      Industio_触觉智能 2025-01-03 11:37 137浏览
    • 【工程师故事】+半年的经历依然忧伤,带着焦虑和绝望  对于一个企业来说,赚钱才是第一位的,对于一个人来说,赚钱也是第一位的。因为企业要活下去,因为个人也要活下去。企业打不了倒闭。个人还是要吃饭的。企业倒闭了,打不了从头再来。个人失业了,面对的不仅是房贷车贷和教育,还有找工作的焦虑。企业说,一个公司倒闭了,说明不了什么,这是正常的一个现象。个人说,一个中年男人失业了,面对的压力太大了,焦虑会摧毁你的一切。企业说,是个公司倒闭了,也不是什么大的问题,只不过是这些公司经营有问题吧。
      curton 2025-01-02 23:08 290浏览
    • 在测试XTS时会遇到修改产品属性、SElinux权限、等一些内容,修改源码再编译很费时。今天为大家介绍一个便捷的方法,让OpenHarmony通过挂载镜像来修改镜像内容!触觉智能Purple Pi OH鸿蒙开发板演示。搭载了瑞芯微RK3566四核处理器,树莓派卡片电脑设计,支持开源鸿蒙OpenHarmony3.2-5.0系统,适合鸿蒙开发入门学习。挂载镜像首先,将要修改内容的镜像传入虚拟机当中,并创建一个要挂载镜像的文件夹,如下图:之后通过挂载命令将system.img镜像挂载到sys
      Industio_触觉智能 2025-01-03 11:39 113浏览
    • 自动化已成为现代制造业的基石,而驱动隔离器作为关键组件,在提升效率、精度和可靠性方面起到了不可或缺的作用。随着工业技术不断革新,驱动隔离器正助力自动化生产设备适应新兴趋势,并推动行业未来的发展。本文将探讨自动化的核心趋势及驱动隔离器在其中的重要角色。自动化领域的新兴趋势智能工厂的崛起智能工厂已成为自动化生产的新标杆。通过结合物联网(IoT)、人工智能(AI)和机器学习(ML),智能工厂实现了实时监控和动态决策。驱动隔离器在其中至关重要,它确保了传感器、执行器和控制单元之间的信号完整性,同时提供高
      腾恩科技-彭工 2025-01-03 16:28 159浏览
    • 在快速发展的能源领域,发电厂是发电的支柱,效率和安全性至关重要。在这种背景下,国产数字隔离器已成为现代化和优化发电厂运营的重要组成部分。本文探讨了这些设备在提高性能方面的重要性,同时展示了中国在生产可靠且具有成本效益的数字隔离器方面的进步。什么是数字隔离器?数字隔离器充当屏障,在电气上将系统的不同部分隔离开来,同时允许无缝数据传输。在发电厂中,它们保护敏感的控制电路免受高压尖峰的影响,确保准确的信号处理,并在恶劣条件下保持系统完整性。中国国产数字隔离器经历了重大创新,在许多方面达到甚至超过了全球
      克里雅半导体科技 2025-01-03 16:10 119浏览
    • 影像质量应用于多个不同领域,无论是在娱乐、医疗或工业应用中,高质量的影像都是决策的关键基础。清晰的影像不仅能提升观看体验,还能保证关键细节的准确传达,例如:在医学影像中,它对诊断结果有着直接的影响!不仅如此,影像质量还影响了:▶ 压缩技术▶ 存储需求▶ 传输效率随着技术进步,影像质量的标准不断提高,对于研究与开发领域,理解并提升影像质量已成为不可忽视的重要课题。在图像处理的过程中,硬件与软件除了各自扮演着不可或缺的基础角色,有效地协作能够确保图像处理过程既高效又具有优异的质量。软硬件各扮演了什么
      百佳泰测试实验室 2025-01-03 10:39 137浏览
    • 光耦合器,也称为光隔离器,是一种利用光在两个隔离电路之间传输电信号的组件。在医疗领域,确保患者安全和设备可靠性至关重要。在众多有助于医疗设备安全性和效率的组件中,光耦合器起着至关重要的作用。这些紧凑型设备经常被忽视,但对于隔离高压和防止敏感医疗设备中的电气危害却是必不可少的。本文深入探讨了光耦合器的功能、其在医疗应用中的重要性以及其实际使用示例。什么是光耦合器?它通常由以下部分组成:LED(发光二极管):将电信号转换为光。光电探测器(例如光电晶体管):检测光并将其转换回电信号。这种布置确保输入和
      腾恩科技-彭工 2025-01-03 16:27 155浏览
    • 车身域是指负责管理和控制汽车车身相关功能的一个功能域,在汽车域控系统中起着至关重要的作用。它涵盖了车门、车窗、车灯、雨刮器等各种与车身相关的功能模块。与汽车电子电气架构升级相一致,车身域发展亦可以划分为三个阶段,功能集成愈加丰富:第一阶段为分布式架构:对应BCM车身控制模块,包含灯光、雨刮、门窗等传统车身控制功能。第二阶段为域集中架构:对应BDC/CEM域控制器,在BCM基础上集成网关、PEPS等。第三阶段为SOA理念下的中央集中架构:VIU/ZCU区域控制器,在BDC/CEM基础上集成VCU、
      北汇信息 2025-01-03 16:01 173浏览
    • Matter加持:新世代串流装置如何改变智能家居体验?随着现在智能家庭快速成长,串流装置(Streaming Device,以下简称Streaming Device)除了提供更卓越的影音体验,越来越多厂商开始推出支持Matter标准的串流产品,使其能作为智能家庭中枢,连结多种智能家电。消费者可以透过Matter的功能执行多样化功能,例如:开关灯、控制窗帘、对讲机开门,以及操作所有支持Matter的智能家电。此外,再搭配语音遥控器与语音助理,打造出一个更加智能、便捷的居家生活。支持Matter协议
      百佳泰测试实验室 2025-01-03 10:29 143浏览
    • 前言近年来,随着汽车工业的快速发展,尤其是新能源汽车与智能汽车领域的崛起,汽车安全标准和认证要求日益严格,应用范围愈加广泛。ISO 26262和ISO 21448作为两个重要的汽车安全标准,它们在“系统安全”中扮演的角色各自不同,但又有一定交集。在智能网联汽车的高级辅助驾驶系统(ADAS)应用中,理解这两个标准的区别及其相互关系,对于保障车辆的安全性至关重要。ISO 26262:汽车功能安全的基石如图2.1所示,ISO 26262对“功能安全”的定义解释为:不存在由于电子/电气系统失效引起的危害
      广电计量 2025-01-02 17:18 218浏览
    我要评论
    0
    点击右上角,分享到朋友圈 我知道啦
    请使用浏览器分享功能 我知道啦