ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

PSI5 协议传感器使用

PSI5 协议传感器使用 如何使用MCU来控制读取PSI5类型传感器设备的数据。关于PSI5请参考这位大佬的文章 PSI5协议详解 里面有详细的写PSI5 协议的定义。这对于我们第一次用到PSI5协议类型的传感器有非常大的帮助。我最近做的项目用到这个类型的传感器协议类型是 P20CRC-500/3H.所以就是P: 同步并行总线模式20传感器与ECU之间的数据长度为20bitCRC表示传感器使用CRC进行数据校验500数据与数据之间的周期为500us Note: 这里意味着MCU应该每500us向PSI5传感器发一次脉冲这里巨坑3每个周期之间的有3个时间槽H数据传输速率为189kpbs一般清晰下我的理解是很少有MCU和PSI5传感器直接连接的。一般是MCU-PSI5控制器-PSI5传感器。我们选择elmos的 E521.41。E521.41有4个通道可以接4个PSI5传感器。MCU -- SPI -- E521.41 ---- PSI5传感器所以我们要做的操作是每500us控制elmos的这个传感器来发一个脉冲然后再读取数据。以下是elmos芯片的发脉冲命令至于是发短脉冲还是长脉冲请根据你自己的传感器手册来我用的这个是发短脉冲。发了脉冲后就可以读传感器的数据了。elmos支持读16bit, 24bit, 32bit 和48bit.16bit帧格式里有效数据是11bit24bit帧格式有效数据是19bit32bit帧格式有效数据是27bit以下是我用的传感器的协议Start BitFrame ControlstatusSensorData(16bit)CRCS1S2F0F1F2E0A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14A15C2C1C0我们可以数出来有效数据是25bit.我们选用读32bit来读这个传感器. 19 25 27问了elmos的人员芯片收集数据的时候会把起始位2bit去掉。其实是填了23bit所以32bit读帧格式如下Fid 3位Err 2位27 Bit 数据Fid2Fid1Fid0Err1Err0D26D25D24D23D22D21D20D19D18D17D16D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0elmos填充位CRC传感器数据帧控制和状态C0C1C2A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0E0F2F1F0以上就是包括帧的格式。同时这个传感器是再slot2和slot3才读数据。所以也要对emols配置下。那这里就有个问题了slot1要不要配置呢肯定是需要的。ASIC_CNFG_1 0x0002ASIC_CNFG_2 0x02F0ASIC_CNFG_3 0x006F(4路都打开我4路都用了)CH1_CFG1 0x0005Bit[15] IDAC_CNT_MODE 0 // 不改Bit[14:13] IDAC_CNT_INC2 00 // 不改Bit[12:11] IDAC_CNT_INC1 00 // 不改Bit[10] EN_ER_CHK 0 // ⚠️ 禁用校验 (无传感器)Bit[9] T1_CRC 0 // 无所谓Bit[8:4] TS1_FLEN 00000 // ⚠️ 帧长0 (不期望接收数据)Bit[3:0] T1_LEN 0101 // 时隙长度5×32μs160μs (占位)每个slot 160us 3个就快500usCH1_CFG2 0x2EF5Bit[15] 0Bit[14:13] IDAC_CNT_DEC2 01 // 保持默认Bit[12:11] IDAC_CNT_DEC1 01 // 保持默认Bit[10] EN_ER_CHK 1 // ✅ 使能CRC校验Bit[9] T2_CRC 1 // ✅ CRC模式Bit[8:4] TS2_FLEN 01111 // ✅ 帧长25bit (FLEN25-1015)Bit[3:0] T2_LEN 0101 // 时隙长度160μsCH1_CFG3 0x7EF5Bit[15:11] 00000Bit[10] EN_ER_CHK 1 // ✅ 使能CRC校验Bit[9] T3_CRC 1 // ✅ CRC模式Bit[8:4] TS3_FLEN 01111 // ✅ 帧长25bitBit[3:0] T3_LEN 0101 // 时隙长度160μsCH1_CFG4 0x0000 禁用CH1_CFG5 0x0000 禁用CH1_CFG6 0x0000 禁用CH1_CFG7 0x0400SPI_BUFFER_CNFG 01 // 32bit/bufferSYNC_DLY 0最后的最后提醒一个点。ASIC_CNFG_3需要最后写也就是开启放到最后。
返回列表