命令、寄存器与定义
SPI commands
下表列出了可用的 SPI commands。Command names 和 binary values 必须按定义使用。
| Command | Binary Value | Description |
| WRITE_REG | 01AAAAAA | 写入 register value。AAAAAA 是 6 bit register address。 |
| READ_REG | 00AAAAAA | 读取 register value。AAAAAA 是 6 bit register address。 |
| READ_DMX | 10000001 | 读取最新 DMX frame。Vision Controller 内部必须 double-buffer frame,避免读取过程中出现 tearing。当 DMX settings 发生变化时,不应继续使用旧 frame,并且可能需要读取更多 bytes。[当 source 为 Vision protocol / App Control 时必须读取] |
| READ_RDM | 10000011 | 读取最新 RDM frame。Message bytes 传输完成后,后续 bytes 都视为 invalid。使用 RDM frame 的 Message Length field 判断 packet size。[必须始终读取] |
| READ_DFU | 10000111 | 读取 DFU packet。每个 packet 都有唯一 ID number。长度可变,最大 200 Byte。Development app 使用 128 Byte。packetNr 使用 Big Endian,不是 Little Endian。 |
| WRITE_DMX | 10010001 | 写入 DMX frame。当 CS 变为 high 时,frame 完成。[仅当 source 不是 Vision protocol / App Control 时使用] |
| WRITE_RDM | 10010011 | 写入 RDM frame。当 CS 变为 high 时,frame 完成。 |
| WRITE_DFU | 10010111 | 在 Start、Packet 或 Stop 后写入 DFU response。 |
| NOP | 11111111 | No-operation。 |
WRITE_REG
该 function 用于写入指定 register。
READ_REG
该 function 用于读取指定 register。
READ_DMX
当选择 Vision protocol / App Control 作为 input source 时,必须使用该 function 读取输入值。Data stream 定义如下:
| data[0] | data[1] | data[2] | data[3] | ... | data[512] |
|---|---|---|---|---|---|
| iQ.dmxMode | dmx[1] | dmx[2] | dmx[3] | ... | dmx[512] |
data[0] 是 Vision Control Behavior,用于解释当前 Vision DMX frame。后续 bytes 是 DMX data。
READ_RDM
Raw RDM byte stream。Message bytes 全部传输完成后,后续 bytes 都视为 invalid。使用 RDM frame 的 Message Length field 判断 packet size。
READ_DFU
用于读取 firmware packets 的 function。
| data[0] | data[1] | data[2] | data[3] | ... | data[202] |
|---|---|---|---|---|---|
| packetNr | packetNr | data[0] | dmx[1] | ... | dmx[200] |
每个 packet 都有唯一的 16 bit ID number。长度可变,最大 200 Byte。Development app 使用 128 Byte。packetNr 使用 Big Endian,不是 Little Endian。(Legacy Mode)
WRITE_DMX
用于将灯具的 DMX input 写入该接口。该 command 可用于诊断灯具 DMX input,或通过 Vision protocol 传输 DMX frame。最大 refresh rate 建议到 20 ms。[仅当 source 不是 Vision protocol / App Control 时使用]
SPI register map
| REGISTER MAP | |||||
| Address | Register Name | Bit | Type | Reset Value | Description |
| 0x02 | SYSTEM STATE | 0 - 8 | R/W | 触发不同 system states。(SYSTEM STATE) | |
| 0x04 | CUSTOM COMMAND | 0 - var | W | Custom command | |
| Command | 0 - 7 | W | *internal | ||
| Data | var | W | - | *internal | |
| 0x05 | START_DFU_IQ_CONTROLLER | 0 - 7 | 触发 Vision Controller 的 DFU mode | ||
| Vision Controller goes into DFU Mode | 0 | W | - | 写入 1 触发 Module DFU Mode | |
| 0x06 | STATUS | 0 - 7 | R/W | Status Flags | |
| IQ_LINKED | 0 | R/W | 0 | 灯具是否已经 linked 到指定 network。0 - not linked,1 - linked。写入 1 可从 network unlink。 | |
| RF_LINK | 1 | R | - | Active Radio Transmission | |
| IQ_STATE | 8-15 | R | Detailed IQ.State(IQ_STATE) | ||
| 0x07 | IRQ_MASK | 0 - 6 | Interrupt Pin Mask | ||
| EN_RX_DMX_IRQ | 0 | R/W | 1 | 当 RX_DMX_IRQ 变为 high 时,使能 interrupt pin output | |
| EN_RX_RDM_IRQ | 1 | R/W | 1 | 当 RX_RDM_IRQ 变为 high 时,使能 interrupt pin output | |
| EN_NFC_WAKEUP | 2 | R/W | 1 | 当 NFC_WakeUp_IRQ 变为 high 时,使能 interrupt pin output | |
| EN_RF_LINK_IRQ | 3 | R/W | 1 | 当 RF_LINK_IRQ 变为 high 时,使能 interrupt pin output | |
| EN_DFU_START_IRQ | 4 | R/W | 1 | 当 DFU_START_IRQ 变为 high 时,使能 interrupt pin output | |
| EN_DFU_PACKET_IRQ | 5 | R/W | 1 | 当 DFU_PACKET_IRQ 变为 high 时,使能 interrupt pin output | |
| EN_DFU_STOP_IRQ | 6 | R/W | 1 | 当 DFU_STOP_IRQ 变为 high 时,使能 interrupt pin output | |
| 0x08 | IRQ_FLAGS | 0 - 7 | R/W | 0 | Interrupt Flags |
| SYS_RESTARTED | 0 | R/W | 0 | System startup 或 restart from error / DFU。若使用 optional config,必须重新设置 config | |
| RX_DMX_IRQ | 1 | R/W | 0 | 收到不同的 DMX frame | |
| RX_RDM_IRQ | 2 | R/W | 0 | 收到完整 RDM frame | |
| NFC_WAKEUP | 3 | R/W | 通过 NFC wake up | ||
| RF_LINK_IRQ | 4 | R/W | 0 | RF link status changed | |
| DFU_START_IRQ | 5 | R/W | 0 | 请求 DFU update。需要 DFU response。(Write DFU) | |
| DFU_PACKET_IRQ | 6 | R/W | 0 | 收到 DFU packet,必须读取(Read DFU)。ERROR: DFU Response | |
| DFU_STOP_IRQ | 7 | R/W | 0 | DFU 完成。需要 DFU response。(Write DFU) | |
| 0x0A | RDM_ID | Device 的 RDM ID | |||
| RDM ID | 0 - 47 | R/W | |||
| 0x0D | INFORMATION | ||||
| UUID | 0 -15 | R | 0 | Actual UUID(uint16_t) | |
| DEVICE_COUNT | 16 - 31 | R | 0 | Actual Fixture count(uint16_t) | |
| MODE | 32 - 39 | R | 0 | Actual Network Mode | |
| QUALITY | 40 - 47 | R | 0 | Actual Network Signal Quality。0 - 100 表示 quality percentage | |
| CID | 48 - 55 | R | 0 | Actual Custom application ID | |
| NAME | 56 -151 | R | 0 | Actual Network Name(char[]) | |
| IDENTIFIER | 152-175 | R | 0 | Actual Network Identifier(uint8_t[]) | |
| 0x0E | IQ_CONTROLLER_VERSION | ||||
| FW_MAJOR | 0 - 7 | R | |||
| FW_MINOR | 8 - 15 | R | |||
| FW_PATCH | 16 - 23 | R | |||
| FW_RELEASE | 24 - 31 | R | |||
| BL_MAJOR | 32 - 39 | R | |||
| BL_MINOR | 40 - 47 | R | |||
| BL_PATCH | 48 - 55 | R | |||
| BL_RELEASE | 56 - 63 | R | |||
| HW_VERSION | 64 - 95 | R | Part Variant、Hardware version 和 Production configuration,以 ASCII 编码 | ||
| 0x0F | RTC | ||||
| UTC_VALUE | 0 - 63 | R/W | 以 UTC format 读写 RTC value | ||
| 0x10 | ACCELERATION_SENSOR | 仅当 motion sensor available 时使用 | |||
| X_AXIS | 0 - 15 | R | signed short(Little Endian) | ||
| Y_AXIS | 16 - 31 | R | signed short(Little Endian) | ||
| Z_AXIS | 32 - 47 | R | signed short(Little Endian) | ||
| SENSOR_AVAILABLE | 48 - 55 | R | 0: not available,1: available | ||
| 0x11 | IQ_CONTROLLER_CPUID | 0 - 63 | R | Vision Controller 的 unique CPU ID | |
定义
以下 definitions 用于 register values:
| Register | Value | Name | Description |
|---|---|---|---|
| SYSTEM STATE | |||
| 0 | SYS_STATE_INVALID | Not configured | |
| 2 | SYS_STATE_NORMAL | Normal Operation | |
| 3 | SYS_STATE_OPEN | Trigger Open Operation with Timeout | |
| 4 | SYS_STATE_PROTECTED | Interface disabled | |
| IQ_STATE | |||
| 0 | IQ_STATE_UNLINKED | Unlinked | |
| 1 | IQ_STATE_LINKED | Linked | |
| 2 | IQ_STATE_ACTIVE | Linked and active | |
| 3 | IQ_STATE_MASTER | Linked and Master | |
| 4 | IQ_STATE_INACTIVE | Linked and Inactive |