General remarks

Communication with the Pozyx device is performed by reading from and writing to certain register addresses. This can be performed through the I2C bus or wirelessly with ultra-wideband. In total 256 register addresses are available, denoted by their hexadecimal value. We can subdivide the address space in a number of logical groups.

Register addressesDescription
0x00 - 0x0FStatus data
0x10 - 0x2FConfiguration data
0x30 - 0x9FSensor data
0xA0 - 0xFFFFunction addresses

The first three groups, i.e., status, configuration and sensor data, are directly pointed to memory. Each address is pointed to a single byte of data. This memory can be accessed by reading or writing to it. All data is internally stored using the little-endian representation. For example, the x-position is a 32bit integer (4 bytes) and is stored at register addresses 0x30 till 0x33. Because we use the little-endian representation the least significant byte of the 32bit integer is stored at address 0x30, the second least significant byte is stored at the address 0x31, and so on. Note that multiple subsequent registers can be read from or written to in one sequence.

 The last logical group, the function addresses, are not related to memory bytes. Rather, by accessing these registers a function on the Pozyx device is triggered. This typically involves writing data (i.e. the function parameters) to that memory address and reading the return value of the function. All data is again represented using the little-endian representation. Note that, unlike the data registers, it is not possible to call multiple subsequent addresses in one call.  

Register map

Register
address
Num bytesTypeNameVariable
type
Short description


Status registers
0x01R POZYX_WHO_AM_Iuint8_tReturns the constant value 0x43.
0x11R POZYX_FIRMWARE_VERuint8_tReturns the POZYX firmware version.
0x21R POZYX_HARDWARE_VERuint8_tReturns the POZYX hardware version.
0x31R POZYX_ST_RESULTuint8_tReturns the self-test result
0x41R POZYX_ERRORCODEuint8_tDescribes a possibly system error.
0x51R POZYX_INT_STATUSuint8_tIndicates the source of the interrupt.
0x61R POZYX_CALIB_STATUSuint8_tReturns the calibration status.


Configuration registers
0x101R/W POZYX_INT_MASKuint8_tIndicates which interrupts are enabled.
0x111R/W POZYX_INT_CONFIGuint8_tConfigure the interrupt pin
0x141R/W POZYX_POS_FILTERuint8_tnew – Configure any additional positioning filter
0x151R/W POZYX_CONFIG_LEDSuint8_tConfigure the LEDs
0x161R/W POZYX_POS_ALGuint8_tAlgorithm used for positioning
0x171R/W POZYX_POS_NUM_ANCHORSuint8_tConfigure the number of anchors and selection procedure
0x182R/W POZYX_POS_INTERVALuint16_tDefines the update interval in ms in continuous positioning.
0x1A2R/W POZYX_NETWORK_IDuint16_tThe network id.
0x1C1R/W POZYX_UWB_CHANNELuint8_tUWB channel number.
0x1D1R/W POZYX_UWB_RATESuint8_tConfigure the UWB datarate and pulse repetition frequency (PRF)
0x1E1R/W POZYX_UWB_PLENuint8_tConfigure the UWB preamble length.
0x1F1R/W POZYX_UWB_GAINint8_tConfigure the power gain for the UWB transmitter
0x201R/W POZYX_UWB_XTALTRIMuint8_tTrimming value for the uwb crystal.
0x211R/W POZYX_RANGE_PROTOCOLuint8_tnew – The ranging protocol
0x221R/W POZYX_OPERATION_MODEuint8_tConfigure the mode of operation of the pozyx device
0x231R/W POZYX_SENSORS_MODEuint8_tConfigure the mode of operation of the sensors
0x271R/W POZYX_CONFIG_GPIO1uint8_tConfigure GPIO pin 1.
0x281R/W POZYX_CONFIG_GPIO2uint8_tConfigure GPIO pin 2.
0x291R/W POZYX_CONFIG_GPIO3uint8_tConfigure GPIO pin 3.
0x2A1R/W POZYX_CONFIG_GPIO4uint8_tConfigure GPIO pin 4.


Positioning data
0x304R/W POZYX_POS_Xint32_tx-coordinate of the device in mm.
0x344R/WPOZYX_POS_Yint32_ty-coordinate of the device in mm.
0x384R/WPOZYX_POS_Zint32_tz-coordinate of the device in mm.
0x3C2RPOZYX_POS_ERR_Xint16_testimated error covariance of x
0x3E2RPOZYX_POS_ERR_Yint16_testimated error covariance of y
0x402RPOZYX_POS_ERR_Zint16_testimated error covariance of z
0x422RPOZYX_POS_ERR_XYint16_testimated covariance of xy
0x442RPOZYX_POS_ERR_XZint16_testimated covariance of xz
0x462RPOZYX_POS_ERR_YZint16_testimated covariance of yz


Sensor data
0x4E2R POZYX_MAX_LIN_ACCuint16_tnew – Maximum linear acceleration
0x504R POZYX_PRESSUREuint32_tPressure data
0x542R POZYX_ACCEL_Xint16_tAccelerometer data (in mg)
0x562R POZYX_ACCEL_Yint16_t
0x582R POZYX_ACCEL_Zint16_t
0x5A2R POZYX_MAGN_Xint16_tMagnemtometer data
0x5C2R POZYX_MAGN_Yint16_t
0x5E2R POZYX_MAGN_Zint16_t
0x602R POZYX_GYRO_Xint16_tGyroscope data
0x622R POZYX_GYRO_Yint16_t
0x642R POZYX_GYRO_Zint16_t
0x662R POZYX_EUL_HEADINGint16_tEuler angles heading (or yaw)
0x682R POZYX_EUL_ROLLint16_tEuler angles roll
0x6A2R POZYX_EUL_PITCHint16_tEuler angles pitch
0x6C2R POZYX_QUAT_Wint16_tWeight of quaternion.
0x6E2R POZYX_QUAT_Xint16_tx of quaternion
0x702R POZYX_QUAT_Yint16_ty of quaternion
0x722R POZYX_QUAT_Zint16_tz of quaternion
0x742R POZYX_LIA_Xint16_tLinear acceleration in x-direction
0x762R POZYX_LIA_Yint16_t
0x782R POZYX_LIA_Zint16_t
0x7A2R POZYX_GRAV_Xint16_tx-component of gravity vector
0x7C2R POZYX_GRAV_Yint16_ty-component of gravity vector
0x7E2R POZYX_GRAV_Zint16_tz-component of gravity vector
0x801R POZYX_TEMPERATUREint8_tTemperature


General data
0x811R POZYX_DEVICE_LIST_SIZEuint8_tReturns the number of devices stored internally
0x822R POZYX_RX_NETWORK_IDuint16_tThe network id of the latest received message
0x841R POZYX_RX_DATA_LENuint8_tThe length of the latest received message
0x851R/W POZYX_GPIO1uint8_tValue of the GPIO pin 1
0x861R/W POZYX_GPIO2uint8_tValue of the GPIO pin 2
0x871R/W POZYX_GPIO3uint8_tValue of the GPIO pin 3
0x881R/W POZYX_GPIO4uint8_tValue of the GPIO pin 4

Register Functions

Register
address
Param bytesReturn bytesNameShort description
0xB001 POZYX_RESET_SYSReset the Pozyx device
0xB111 POZYX_LED_CTRLControl LEDS 1 to 4 on the board
0xB22-1001 POZYX_TX_DATAWrite data in the UWB transmit (TX) buffer
0xB331 POZYX_TX_SENDTransmit the TX buffer to some other pozyx device
0xB40<=100 POZYX_RX_DATARead data from the UWB receive (RX) buffer
0xB521 POZYX_DO_RANGINGInitiate ranging measurement
0xB601 POZYX_DO_POSITIONINGInitiate the positioning process.
0xB7321 POZYX_POS_SET_ANCHOR_IDSSet the list of anchor ID”s used for positioning.
0xB8033 POZYX_POS_GET_ANCHOR_IDSRead the list of anchor ID”s used for positioning.
0xB901 POZYX_FLASH_RESETReset a portion of the configuration in flash memory
0xBA>=11 POZYX_FLASH_SAVEStore a portion of the configuration in flash memory
0xBB121 POZYX_FLASH_DETAILSReturn information on what is stored in flash


Device list functions
0xC0<=2<=41 POZYX_DEVICES_GETIDSGet all the network IDs”s of devices in the device list.
0xC131 POZYX_DEVICES_DISCOVERObtain the network ID”s of all pozyx devices within range.
0xC211 POZYX_DEVICES_CALIBRATEObtain the coordinates of the pozyx (anchor) devices within range.
0xC301 POZYX_DEVICES_CLEARClear the list of all pozyx devices.
0xC4151 POZYX_DEVICE_ADDAdd a pozyx device to the devices list
0xC5224 POZYX_DEVICE_GETINFOGet the stored device information for a given pozyx device
0xC6212 POZYX_DEVICE_GETCOORDSGet the stored coordinates of a given pozyx device
0xC729 POZYX_DEVICE_GETRANGEINFOGet the stored range inforamation of a given pozyx device
0xC83<=40 POZYX_CIR_DATAGet the channel impulse response (CIR) coefficients
[related_post post_id=""]