【通信协议专题3——以BD8LA700EFV-CE2 芯片为例介绍SPI通信】
文章目录一、 核心硬件接线框架二、 驱动方式 1DIR 模式直接并行控制三、 驱动方式 2SPI 模式串行总线控制—— 推荐SPI通信与i2c通信的差异SPI工作原理spi设备芯片内部SPI 存在“寄存器地址”或“内存地址”CS_B信号的价值启动与开启SPI通信 (SPI Enable)芯片使能控制串行数据输出SO引脚的状态防总线冲突高阻态控制触发内部故障诊断状态的锁存 (Diagnostic Data Latching)状态抓取决定新开关命令的生效时机 (Command Execution)命令暂存四、SPI协议讲解SPI的四种模式CPOL CPHASPI菊花链连接BD8LA700EFV-CE2 是由日本罗姆半导体ROHM Semiconductor生产的一款车载级 8 通道智能低端开关芯片8ch Low-Side Switch IC。它属于智能功率器件IPD将控制电路CMOS和功率 MOSFET 集成在单个芯片上常用于替代传统的机械继电器或普通三极管驱动。驱动 BD8LA700EFV-CE2 芯片主要有两种方式。这款芯片设计了双重控制模式通过控制 DIR 引脚 的电平来切换DIR 模式直接并行控制 和 SPI 模式串行总线控制。在讲解驱动方法前首先需要明确其硬件接线的基本架构。一、 核心硬件接线框架由于它是低端开关Low-Side Switch其内部的 MOSFET 漏极Drain连接到输出引脚 OUTx源极Source连接到系统地GND。电源供电VDD数字电源接 3.0V ~ 5.5V通常接单片机的 3.3V 或 5V。VDDA模拟电源接 4.0V ~ 5.5V通常接 5V。GND接系统参考地。负载连接关键负载如继电器线圈、电磁阀、LED的一端接外部电源如高压蓄电池V B A T V_{BAT}VBAT、12V 或 24V 工业电源。负载的另一端接芯片的 OUT1 ~ OUT8 输出引脚。工作逻辑 当通道导通时OUTx 内部接地电流流过负载负载工作。二、 驱动方式 1DIR 模式直接并行控制如果不希望编写复杂的 SPI 通信代码或者只需要简单的开关控制可以使用这种模式。触发条件将 DIR 引脚直接拉高接 VDD。控制逻辑此时芯片的复用引脚将切换为 IN1 到 IN8 的独立输入控制引脚。输入高电平High 对应通道的 MOSFET 导通OUTx 输出低电平负载开启。输入低电平Low 对应通道的 MOSFET 截止OUTx 高阻态负载关闭。优缺点优点 驱动极其简单单片机直接使用普通的 GPIO 输出高低电平即可控制。缺点 需要占用单片机 8 个 GPIO 引脚无法通过 SPI 读取详细的过流、过热、开路等诊断故障信息。三、 驱动方式 2SPI 模式串行总线控制—— 推荐汽车级和高可靠性工业应用通常采用此模式因为它可以节省单片机引脚并能实时监测负载状态。触发条件与引脚连接将 DIR 引脚拉低接 GND。此时引脚定义切换为标准 16 位 SPI 接口针对此款芯片的SPI 通信配置通信长度固定的 16 位16-bit 数据帧。时钟极性/相位使用SPI Mode 1具体参考芯片手册的时序图t S U t_{SU}tSU和t H D t_{HD}tHD。看极性 (CPOL 0)从波形图可以看出在 CS_B 变低之前时钟线 SCLK 的电平是一直压在低电平的这表明时钟空闲时为低 。看相位 (CPHA 1)手册明确写道“SI is taken in register at falling edge of SCLK”SI 输入数据在 SCLK 的下降沿被写入寄存器 。 因为空闲时是低电平所以 SCLK 启动后的第一个边沿是上升沿此时芯片用于改变/输出 SO 数据 而第二个边沿才是下降沿 。 既然在第二个边沿下降沿采样按照标准定义它对应的就是 CPHA 1数据帧传输机制当你向 SI 写入 16 位控制数据的同时SO 会同步传回当前的 16 位诊断状态数据。1 同步传回机制向 SI 写入的同时SO 传回当前最新的状态**spi全双工**。因为当片选信号 CS_B 发生下降沿的一瞬间芯片会立刻把当前的内部状态过热、过流、断线锁存到移位寄存器中并随着时钟同步发回给 MCU 。2 控制指令MCU → SI“2位控1路”这颗芯片由于功能丰富8个通道完全瓜分了整个 16 位数据每个通道独占 2 个比特位2 bits 。它不是简单的 0 或 1而是看组合 00关闭通道禁用保护 。10开启通道使能过流/过热保护 。11关闭通道但开启断线开路检测 。01转为硬件引脚IN1~IN4直接控制上一页法雷奥图纸中没有用这种模式 。例如你想把 8 个通道全部打开你下发的 16 位控制字必须是二进制的 10101010 10101010即 0xAAAA 。3 诊断反馈SO → MCU通过解析这些位可以知道是哪个通道发生了过热TSD或过流OCP。传回的 16 位数据中偶数位Bit 14, 12 … 0叫做 Dn 位 。如果某个通道的 Dn 1代表该通道触发了过流OCD或者过热TSD软件上它们共享一个报警灯 。传回的奇数位Bit 15, 13 … 1叫做 OLn 位 。如果 OLn 1代表该通道外部的电机或者负载断线了开路异常 。SPI通信与i2c通信的差异寻找设备SPI 靠的是“点名硬件片选”而不是“喊名字地址”I2C 像是在一个喧闹的教室里老师大喊一声“主叫 0x50 同学请回答”所有同学从机都听到了但只有名字对得上的才回应。这就是软件寻址。而 SPI 则是最原始、最直接的“点名”。它不需要在数据包里加上设备地址而是通过一根专门的硬件信号线——CSChip Select片选线或 SSSlave Select从机选择线来决定由谁接收数据。SPI工作原理主设备MCU想和哪个从机芯片通信就把连接该芯片的 CS 引脚拉低Low。此时该芯片的硬件电路就会被激活开始监听时钟信号SCLK并接收数据。其他 CS 引脚保持高电平的芯片则会完全无视总线上的任何信号其 MISO 引脚也会变成高阻态相当于断开连接。优缺点优点不需要传输设备地址没有任何协议开销速度极快数据一发即中。缺点太费引脚。如果总线上要挂 5 个 SPI 从机主设备就必须准备 5 根独立的 CS 信号线。spi设备芯片内部SPI 存在“寄存器地址”或“内存地址”虽然 SPI 在总线上不需要“设备地址”但是当 CS 线拉低、主设备成功连上某一个具体芯片后在应用层通常是存在“地址”概念的。这时候的地址指的是芯片内部的存储单元地址寄存器地址、Flash 扇区地址等。场景 A读写传感器如加速度计、陀螺仪当你选通了传感器后你发出的第一个字节通常就是内部寄存器地址。比如你想读取加速度数据你可能会先发送 0x3B假设这是加速度 X 轴高位寄存器的地址传感器收到后就会把该寄存器里的数据通过 MISO 线传回给 MCU。场景 B读写存储器如 SPI Flash当你选通了 Flash 芯片你发送了“读数据”的命令字如 0x03之后紧接着必须发送 3 个字节或 4 个字节的内存地址如 0x001000告诉 Flash 你要从哪一个具体的存储位置开始读取数据。CS_B信号的价值启动与开启SPI通信 (SPI Enable)芯片使能当 DIR L 时该引脚作为SPI的使能输入端 。只有将 CS_B 拉低芯片才会响应微控制器MCU发送的串行时钟SCLK和数据SI 。多芯片并联寻址 当在电路中并联使用多个BD8LA700EFV-C芯片时所有芯片可以共用 SCLK、SI、SO 线路但每个芯片必须连接独立的 CS_B 信号 。MCU 通过拉低某一个特定芯片的 CS_B来决定当前与哪一个芯片进行通信 。控制串行数据输出SO引脚的状态防总线冲突高阻态控制当 CS_B H高电平未选中状态时芯片的 SOSerial Output引脚会强制进入高阻抗状态Hi-Z 。这样可以确保多芯片共用一条SO总线时未选中的芯片不会干扰当前正在通信的芯片。激活输出 只有当 CS_B L 时SO 引脚才会变为有驱动能力的输出状态允许向 MCU 回传故障诊断数据 。触发内部故障诊断状态的锁存 (Diagnostic Data Latching)状态抓取在 CS_B 信号的下降沿Falling Edge芯片内部的诊断逻辑会瞬间抓取并锁存当前的保护状态包括过温TSD、过流OCP和开路检测OLD等故障信息 。确保数据一致性 随后在 CS_B L 的通信期间MCU 通过 SCLK 读出的就是下降沿时刻锁存的故障状态这确保了读取到的一帧数据在时间点上是完全一致和可靠的 。决定新开关命令的生效时机 (Command Execution)命令暂存在 CS_B 为低电平期间MCU 通过 SI 引脚发送进来的 16 位控制数据只是被依次移入芯片内的移位寄存器此时并不会改变 8 个输出通道OUT1~8的实际开关状态 。上升沿更新输出 只有当数据传送完毕、CS_B 发生上升沿Rising Edge跳变的瞬间移位寄存器中的新指令才会真正加载并控制对应的通道实现各输出口开关状态的同步更新四、SPI协议讲解SPI的四种模式CPOL CPHA这是 SPI 配置中最容易让人头晕、也是最关键的步骤。它由两个参数决定时钟极性CPOL和时钟相位CPHA。它们组合成了 4 种工作模式。CPOLClock Polarity时钟极性 决定空闲时时钟线是高电平还是低电平。0空闲时为低电平Low1空闲时为高电平HighCPHAClock Phase时钟相位 决定在时钟的第几个边沿进行数据采样。0在时钟的第一个边沿进行数据采样捕获1在时钟的第二个边沿进行数据采样捕获⚠️ 避坑指南主设备MCU和从设备传感器/闪存的模式必须保持绝对一致 如果你发现读出来的数据全是 0xFF 或错位了 1 个位bit往往就是模式配错了。通常需要查阅从设备的数据手册Datasheet来确定它支持哪种模式。SPI菊花链连接
