as3993 ST25RU3993 Firmware
as3993 ST25RU3993 Firmware Documentation

Hardware

Calf----UHF RFID Module Based on AS3993/ST25RU3993 platform. Manufacturer:WuXi Silicontrol Electronic Technology Co., Ltd.

Layering

This software is layered as follows:

application code Upper layer in which the application run. In reference implementation it is appl_commands.c which handles communication with PC. All commands available are detailed in there.
gen2 iso6b as3993_public Protocol layer in which the protocol handling is performed
ST25RU3993 AS3993 Device specific procedures of UHF Reader
platform Platform layer for communication with UHF Reader, handling CPU specifics, ...

The files gen2.h and iso6b.h contain the interface provided to the user for the two supported protocols. They rely on the interface provide by as3993.h. This in turn relies on the actual hardware communication interface provided by platform.h, spi_driver.h, timer.h, ...

Application: ST25RU3993 Communication protocol and instruction

The application layer in this reference implementation is implemented as a dispatcher which waits for commands from the host (either via USB or UART) and processes commands accordingly. Documentation of the protocol is available in appl_commands.c.

Configuration

Configuration of this software is done in as3993_config.h and by defines in the build environment. The currently supported defines in the build environment are:

A detailed explanation of the build environment is included in HowtoBuild.txt.

Using

Before using any other functions the AS3993/ST25RU3993 needs to be initialized using as3993Initialize(). If initialization of ST25RU3993/AS3993 fails the return value of as3993Initialize() is not zero.
After successful initialization functions from gen2.h and iso6b.h can be called.

Porting

The developer which needs to port this firmware to another hardware will need to change platform.c, spi_driver.c, timer.c + related .h files and adapt the host-communication related files (UART/USB). Additionally he should also provide a proper interrupt service routine (currently as3993Isr() in as3993.c).