Host Protocols SpringProx Legacy Protocol
April 13, 2023 at 2:39 AMSpringProx Legacy Protocol
Early SpringCard devices in the SpringProx family used to communicate with their host over a serial line, using a proprietary protocol.
Some of the devices in the SpringCore family do implement a subset of this protocol, which helps the implementers do a seamless migration.
Disclaimer
SpringCard does not recommend using the Legacy Protocol with the SpringCore devices. This protocol will eventually be dropped-out in the future.
The SpringCore devices has strong differences with the SpringProx devices which leads to different behavior, different timings, and the availability of a limited subset of the protocol only. Paragraph Differences with the original SpringProx devices below lists the most obvious differences, but this list is not exhaustive.
Reference manual
The documentation of the Legacy Protocol is to be found in PMDE501-DD : SpringProx couplers Developer’s Guide.
Configuring the SpringCore device for the Legacy Protocol
Set the Profile configuration register to 01
“CDC (serial emulation), SpringProx Legacy mode only”.
If you intend to operate the device through its serial line, set bit 7 “Disable USB” in the USB options configuration register. Otherwise the device will not boot until connected to a USB host.
Differences with the original SpringProx devices
Warning: This list is not exhaustive. Existing applications shall be carefully validated again other the SpringCore device.
Features missing from the SpringCore implementation
- All commands that gives a direct access to the Micore interface (Read RC Register
AB
, Write RC RegisterAB ..
) are not supported and have no equivalent. - All commands that gives access to the non-volatile memory (Read Configuration Register
58 0E
, Write Configuration Register58 0D
). - All commands that gives access to the User interface (Set LEDs
58 1E
, Set Buzzer58 1C
) or to the devices GPIOs (Set USER58 1F ..
, Get USER58 1F
, Get MODE58 1D
) are not supported. - LPCD (low power card detection) is not implemented in any SpringCore device.
- The Mifare Classic cards are not supported by the SpringCore device over the Legacy protocol.
- The ICODE1 labels are not supported by any SpringCore device.
Features partially available
- The device’s capabilities field (command
50
) are fixed to01006303
(console, dual buffers, binary protocol, ASCII protocol, 115200bps capable, ISO 15693, ISO 14443). The USB interface is not announced in the capabilities field even if it is present, neither the non-volatile memory. - The Select RF protocol command (
58 0C ..
) supports only ISO protocols (ISO/IEC 14443 A and B, ISO/IEC 15693). The application shall use the Find command (60
) to look for a card or tag over any other protocol. - Only 2 baudrates are supported: 38400bps (default) and 115200bps.
Features implemented differently
- All Control commands (
58 ..
) are redirected to the CONTROL class in the Direct protocol. The list of commands and the return codes are therefore different. - The Product ID is fixed to “K518” for devices without USB and without network, “H518” for devices with USB and without network, and to “E518” for devices with network.
- The firmware version exposed by SpringProx API functions (command
4F
) is a constant value: “2.99, build 255”. This is of course not the actual version of the SpringCore firmware, but the SpringProx API needs this value to run correctly.
Differences in performances and behaviour
- Even if the SpringCore devices are intrinsically faster than the SpringProx devices, the added overhead of running the Legacy protocol on top of the other logical protocols increases the overall transaction time in most situations.
- The SpringCore devices feature an internal timer to monitor host activity. To prevent wasting energy, the device will shut down the RF field if the host does not send any command after 3 seconds, where in the same situation a SpringProx device would keep the RF field active forever.