ZWP500
™
Z-Wave Production Programmer & Tester
www.ExpressControls.com
February 2018
Bringing
the Internet of Things (IoT) to Life
18
of the programming cable are dedicated to the SPI bus used for programming the DUT and accessing the external NVM.
Pins 2, 5, 11 and 12 however are generally available for use and can be used to sense or drive test points on the DUT. If
more than 4 pins are needed, an I2C bus GPIO expander can be placed on the DUT test board. Digital to analog
converters, ADCs, temperature sensors and any I2C device can be placed on the DUT test board and pins 2 and 5 can be
used to communicate with those devices. See the I2CSend and I2CGet commands for more details. Be aware that the
DUT has to be powered for the GPIO pins to be driven to the proper voltage. The programming cable pins are powered
with the VIO power supply. Use the GPIOGet command to verify the pin is set to the desired level.
Example: Set pin 2 to tristate
GPIOSet 2Z<cr>
Returns:
*<cr>
?<cr> is returned if an invalid pin number or value is sent
Help
The Help command returns a brief description of the most commonly used commands. The firmware version is returned
as part of the data. A ? will also return the list of commands.
I2CGet AA LL
Send an I2C read command to I2C slave address AA (bits [7:1]) and read LL bytes of data. LL must be greater than 0. If
the command completes properly, the data is returned as !<cr>I2CGet= 01 02 03 …<cr>. If the address or length fields
are not hexadecimal then a ? is returned. If the slave NAKs the address byte then a ! is returned. An I2C STOP condition
is always performed at the end of the command.
Example:
I2CGet 21 03
Returns:
!<cr>
I2CGet= 01 02 03
This example sends an I2C read command to slave address 0x21 (the first byte of the command is 0x43). If the slave
ACKs the write, then the three data bytes are read from the device and returned. All values are hexadecimal.
I2CProbe
Configures pins 2 and 5 of the Z-Wave programming cable for I2C and then tests all 127 I2C addresses [1-127] and
returns the address of any I2C devices that acknowledge the address byte. This command is used to find the I2C
addresses of devices on the DUT test board. The address returned are bits [7:1] of the I2C address byte. If no I2C
devices acknowledge, then a NAK (!) is returned. If one of the I2C pins is stuck either high or low a NAK is returned along
with a message indicating which pin is stuck.
Example:
I2CProbe<cr>
Returns:
*<cr>
ACK@ 21 22<cr>
If there is an I2C device at 0x21 (0100_001Rb) and 0x22 (0100_010Rb).
Address 0x21 maps to a slave address write byte of 0x42. The address is in bits [7:1] and bit 0 is the READ/WRITE bit.
I2CSend
AA DD…[p]
Send an I2C write command to I2C slave address AA (bits [7:1]) with the data DD and optionally NOT send an I2C STOP
if the character ‘p’ is at the end of the command. All values are in hexadecimal. The data is optional and may contain up to
32 bytes of data. If the I2C bus is in the idle state, then the command is initiated with an I2C START. If the previous
command was not completed with an I2C STOP, then an I2C ReSTART initiates this co
mmand. The character ‘p’ at the
end of the command allows commands to be linked together. Typically this is used to set the address pointer within the