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 addresses Description
0x00 - 0x0F Status data
0x10 - 0x2F Configuration data
0x30 - 0x9F Sensor data
0xA0 - 0xFFF Function 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 bytes Type Name Variable
type
Short description


Status registers
0x0 1 R POZYX_WHO_AM_I uint8_t Returns the constant value 0x43.
0x1 1 R POZYX_FIRMWARE_VER uint8_t Returns the POZYX firmware version.
0x2 1 R POZYX_HARDWARE_VER uint8_t Returns the POZYX hardware version.
0x3 1 R POZYX_ST_RESULT uint8_t Returns the self-test result
0x4 1 R POZYX_ERRORCODE uint8_t Describes a possibly system error.
0x5 1 R POZYX_INT_STATUS uint8_t Indicates the source of the interrupt.
0x6 1 R POZYX_CALIB_STATUS uint8_t Returns the calibration status.


Configuration registers
0x10 1 R/W POZYX_INT_MASK uint8_t Indicates which interrupts are enabled.
0x11 1 R/W POZYX_INT_CONFIG uint8_t Configure the interrupt pin
0x14 1 R/W POZYX_POS_FILTER uint8_t new - Configure any additional positioning filter
0x15 1 R/W POZYX_CONFIG_LEDS uint8_t Configure the LEDs
0x16 1 R/W POZYX_POS_ALG uint8_t Algorithm used for positioning
0x17 1 R/W POZYX_POS_NUM_ANCHORS uint8_t Configure the number of anchors and selection procedure
0x18 2 R/W POZYX_POS_INTERVAL uint16_t Defines the update interval in ms in continuous positioning.
0x1A 2 R/W POZYX_NETWORK_ID uint16_t The network id.
0x1C 1 R/W POZYX_UWB_CHANNEL uint8_t UWB channel number.
0x1D 1 R/W POZYX_UWB_RATES uint8_t Configure the UWB datarate and pulse repetition frequency (PRF)
0x1E 1 R/W POZYX_UWB_PLEN uint8_t Configure the UWB preamble length.
0x1F 1 R/W POZYX_UWB_GAIN int8_t Configure the power gain for the UWB transmitter
0x20 1 R/W POZYX_UWB_XTALTRIM uint8_t Trimming value for the uwb crystal.
0x21 1 R/W POZYX_RANGE_PROTOCOL uint8_t new - The ranging protocol
0x22 1 R/W POZYX_OPERATION_MODE uint8_t Configure the mode of operation of the pozyx device
0x23 1 R/W POZYX_SENSORS_MODE uint8_t Configure the mode of operation of the sensors
0x27 1 R/W POZYX_CONFIG_GPIO1 uint8_t Configure GPIO pin 1.
0x28 1 R/W POZYX_CONFIG_GPIO2 uint8_t Configure GPIO pin 2.
0x29 1 R/W POZYX_CONFIG_GPIO3 uint8_t Configure GPIO pin 3.
0x2A 1 R/W POZYX_CONFIG_GPIO4 uint8_t Configure GPIO pin 4.


Positioning data
0x30 4 R/W POZYX_POS_X int32_t x-coordinate of the device in mm.
0x34 4 R/W POZYX_POS_Y int32_t y-coordinate of the device in mm.
0x38 4 R/W POZYX_POS_Z int32_t z-coordinate of the device in mm.
0x3C 2 R POZYX_POS_ERR_X int16_t estimated error covariance of x
0x3E 2 R POZYX_POS_ERR_Y int16_t estimated error covariance of y
0x40 2 R POZYX_POS_ERR_Z int16_t estimated error covariance of z
0x42 2 R POZYX_POS_ERR_XY int16_t estimated covariance of xy
0x44 2 R POZYX_POS_ERR_XZ int16_t estimated covariance of xz
0x46 2 R POZYX_POS_ERR_YZ int16_t estimated covariance of yz


Sensor data
0x4E 2 R POZYX_MAX_LIN_ACC uint16_t new - Maximum linear acceleration
0x50 4 R POZYX_PRESSURE uint32_t Pressure data
0x54 2 R POZYX_ACCEL_X int16_t Accelerometer data (in mg)
0x56 2 R POZYX_ACCEL_Y int16_t
0x58 2 R POZYX_ACCEL_Z int16_t
0x5A 2 R POZYX_MAGN_X int16_t Magnemtometer data
0x5C 2 R POZYX_MAGN_Y int16_t
0x5E 2 R POZYX_MAGN_Z int16_t
0x60 2 R POZYX_GYRO_X int16_t Gyroscope data
0x62 2 R POZYX_GYRO_Y int16_t
0x64 2 R POZYX_GYRO_Z int16_t
0x66 2 R POZYX_EUL_HEADING int16_t Euler angles heading (or yaw)
0x68 2 R POZYX_EUL_ROLL int16_t Euler angles roll
0x6A 2 R POZYX_EUL_PITCH int16_t Euler angles pitch
0x6C 2 R POZYX_QUAT_W int16_t Weight of quaternion.
0x6E 2 R POZYX_QUAT_X int16_t x of quaternion
0x70 2 R POZYX_QUAT_Y int16_t y of quaternion
0x72 2 R POZYX_QUAT_Z int16_t z of quaternion
0x74 2 R POZYX_LIA_X int16_t Linear acceleration in x-direction
0x76 2 R POZYX_LIA_Y int16_t
0x78 2 R POZYX_LIA_Z int16_t
0x7A 2 R POZYX_GRAV_X int16_t x-component of gravity vector
0x7C 2 R POZYX_GRAV_Y int16_t y-component of gravity vector
0x7E 2 R POZYX_GRAV_Z int16_t z-component of gravity vector
0x80 1 R POZYX_TEMPERATURE int8_t Temperature


General data
0x81 1 R POZYX_DEVICE_LIST_SIZE uint8_t Returns the number of devices stored internally
0x82 2 R POZYX_RX_NETWORK_ID uint16_t The network id of the latest received message
0x84 1 R POZYX_RX_DATA_LEN uint8_t The length of the latest received message
0x85 1 R/W POZYX_GPIO1 uint8_t Value of the GPIO pin 1
0x86 1 R/W POZYX_GPIO2 uint8_t Value of the GPIO pin 2
0x87 1 R/W POZYX_GPIO3 uint8_t Value of the GPIO pin 3
0x88 1 R/W POZYX_GPIO4 uint8_t Value of the GPIO pin 4

Register Functions

Register
address
Param bytes Return bytes Name Short description
0xB0 0 1 POZYX_RESET_SYS Reset the Pozyx device
0xB1 1 1 POZYX_LED_CTRL Control LEDS 1 to 4 on the board
0xB2 2-100 1 POZYX_TX_DATA Write data in the UWB transmit (TX) buffer
0xB3 3 1 POZYX_TX_SEND Transmit the TX buffer to some other pozyx device
0xB4 0 <=100 POZYX_RX_DATA Read data from the UWB receive (RX) buffer
0xB5 2 1 POZYX_DO_RANGING Initiate ranging measurement
0xB6 0 1 POZYX_DO_POSITIONING Initiate the positioning process.
0xB7 32 1 POZYX_POS_SET_ANCHOR_IDS Set the list of anchor ID"s used for positioning.
0xB8 0 33 POZYX_POS_GET_ANCHOR_IDS Read the list of anchor ID"s used for positioning.
0xB9 0 1 POZYX_FLASH_RESET Reset a portion of the configuration in flash memory
0xBA >=1 1 POZYX_FLASH_SAVE Store a portion of the configuration in flash memory
0xBB 1 21 POZYX_FLASH_DETAILS Return information on what is stored in flash


Device list functions
0xC0 <=2 <=41 POZYX_DEVICES_GETIDS Get all the network IDs"s of devices in the device list.
0xC1 3 1 POZYX_DEVICES_DISCOVER Obtain the network ID"s of all pozyx devices within range.
0xC2 1 1 POZYX_DEVICES_CALIBRATE Obtain the coordinates of the pozyx (anchor) devices within range.
0xC3 0 1 POZYX_DEVICES_CLEAR Clear the list of all pozyx devices.
0xC4 15 1 POZYX_DEVICE_ADD Add a pozyx device to the devices list
0xC5 2 24 POZYX_DEVICE_GETINFO Get the stored device information for a given pozyx device
0xC6 2 12 POZYX_DEVICE_GETCOORDS Get the stored coordinates of a given pozyx device
0xC7 2 9 POZYX_DEVICE_GETRANGEINFO Get the stored range inforamation of a given pozyx device
0xC8 3 <=40 POZYX_CIR_DATA Get the channel impulse response (CIR) coefficients