跳转至

SafeSPI (Serial Peripheral Interface for Automotive Safety)

SafeSPI 把「用 SPI 传输车用传感器数据」这件事标准化。一般 SPI 只定义电气与时钟关系,对内容完全不作规范——没有地址、没有校验、没有状态——SafeSPI 因此在同样四条线之上叠一层逻辑层:固定 32 或 48 位的帧、命令带目标地址而响应带源地址、每个帧都有 CRC、传感器状态位,以及总线的时序上下限。实现依据 Rev 2.0;Rev 2.0 向下兼容 Rev 1.0——CRC 定义与测试向量完全相同,48 位帧是 v2.0 新增的——因此不需要版本选项。

Decode Settings

Decode Settings

Decode Settings
  • Data Line:选择波形区显示哪一条线,MOSI (Command) 或 MISO (Response)。无论选哪一条,两条线一律都会解码——SafeSPI 是全双工,而且两条线的字段边界不对齐,一条波形带容纳不了两者。要同时看到两条波形带,请再加入一次本解码并设为另一条线。报表没有这个限制,见下方 Report both directions。默认:MOSI (Command)。
  • Frame Length:选择 Auto、32 Bit 或 48 Bit。Auto 的判断方式是:数 CS 拉低这段期间有几个 SCK 周期,32 个就当 32 位、48 个就当 48 位,再用 CRC 验证猜得对不对。这是规范本身建议的做法。判断结果会写在报表的设置行,例如 32oof (Auto)。默认:Auto。
  • Mode:选择 Out-of-Frame (Mode 0)、In-Frame (Mode 1) 或 Auto。out-of-frame 在 SCK 上升沿采样,从机的响应出现在下一个帧;in-frame 在下降沿采样,响应就在同一个帧内。Auto 的判断方式是:上升沿与下降沿各采样一份数据,看哪一份的 CRC 过得了,就是哪一种模式。Frame Length 选 48 Bit 时这一项会变灰,因为 48 位没有 in-frame。默认:Auto。
  • Frame Format:选择 FlexFrame 或 FixedSensorFrame。这一项没办法自动判断,只能由你指定。两者占用的位完全一样、CRC 也都会通过,差别只在「那些位算不算字段」:FlexFrame 当成保留位不解读,FixedSensorFrame 则把它们解读成 RW、CAP、DATAI。如果总线其实是 Flex 却选了 Fixed,那些字段的值是从保留位凑出来的,看起来很合理但完全不存在。默认选 Flex 就是为了避免这种假数据。默认:FlexFrame。
  • Slave Address:选择目标地址与源地址如何切分成从机地址与从机内部地址:SelSlaveByCS(每个从机一条片选)、Sel2SlaveByAdrPin、Sel2SlaveByAdrNVM、Sel4SlaveByAdrPin 或 Sel4SlaveByAdrNVM。默认:SelSlaveByCS。
  • CS active high:SafeSPI 的片选是低电平有效。若采集是经由反相探头取得、或器件使用相反极性,请勾选。默认:不勾选。
  • SCK idle high (CPOL = 1):SafeSPI 的时钟空闲为低电平。若总线空闲为高电平请勾选,采样沿会随之调整。默认:不勾选。
  • Verify CRC:校验每个帧的 CRC。SafeSPI 有四种 CRC 变体——32 位 out-of-frame、32 位 in-frame 命令、32 位 in-frame 响应、48 位——覆盖范围各不相同,解码会为每个帧挑选正确的那一个。校验通过时 CRC 单元格为绿色,不通过为红色。默认:勾选。
  • All-zero MISO frame = no response:若某个响应帧的位全是 0,就当作从机根本没响应,报表直接标示「没有响应」,不去把那串 0 解读成数据(否则会解出一笔看起来正常、实际不存在的响应)。这条规则是推论出来的、规范没有明文规定——它的前提是 Rev 2.0 要求 MISO 外接下拉,线路空着时会被拉成 0;Rev 1.0 没有这个要求,前提就不成立。因此默认关闭,等你的实际采集确认过再开。开启后 Information 列会标上 Assumed Hi-Z,说明这是推论而非测量。默认:不勾选。
  • Decode FrTyp bit:把 FrTyp 这个位解读成「下一个帧是 32 还是 48 位」。只有支持 32/48 混用、且用地址决定宽度的器件才有这个意义;其他器件的这一位是自由使用,不代表任何事。不管有没有勾,FrTyp 字段本身都会显示它的值——这个选项只决定要不要在 Information 列多写一句解读。默认:不勾选。
  • Report both directions:在同一份报表中列出命令与响应,每个帧占两行,并以 Dir 列标明是哪一边。波形区仍然只显示 Data Line 选定的那一条。若想要与波形区一致的单方向报表,请取消勾选。默认:勾选。
  • Check bus timing:依规范的时序表测量总线——SCK 高低电平宽度、片选的前后沿间隔、连续传输间隔,以及两条数据线的 setup、hold 与有效时间。有违规的话会列在报表最前面,格式是「规范条号 + 测到的最差值 + 规范极限 + 违规次数 + 发生时间」,可以直接对照规范查。另外,规范的极限值小到 5 ns,若你的采样率不够细(例如 200 MS/s 时一格就是 5 ns),那一项会被跳过不判定,避免给出没有意义的结论。默认:勾选。

Result

开启 Report both directions 时,报表每个帧显示两行。Dir 标明该行是命令还是响应, 共用的列会依方向放不同的东西:Addr 在 MOSI 行是目标地址、在 MISO 行是源地址, Data 放 DATAI 或 DATAO;Flags 在命令行放 CAP 与 FrTyp,在响应行放 IDS、CE 与 DCnt。 D 与 Status 只适用于响应。

Pairs 把命令与响应成对显示,这个关系光看行的顺序是看不出来的: out-of-frame 的响应晚一个帧才出现,所以同一个帧的那两行并不是一对。 在命令行,这一格是回过来的那个响应的源地址;在响应行,则是被回答的那个命令的目标地址。 空白代表没有观察到对应的一方——采集尾端,或第一个命令之前——红色的短划线则代表 确实观察到该命令没有得到响应。

报表第一行一定是从采集本身测到的 SCK 频率,接着是本次解码所使用的设置。 CRC 校验通过时该单元格为绿色,不通过为红色。不属于故障的信息,例如传感器处于初始化状态, 会放在 Information 列而不是 Error 列。