The MIPI RFFE API for PXIe-657x Digital Pattern Instrument is a lightweight abstraction of the MIPI RFFE v2.0 protocol geared toward flexiblity and programmatic control of RFFE register reads and writes in LabVIEW. The API is not optimized for test time performance, but geared towards characterization, lab, and debug, where the flexibility of creating dynamic RFFE commands on the fly is ideal.
NOTE: This API is open source and is not fully tested. Users of the API are liable to make corrections or edits to the API for any and all issues identified. Feel free to post a comment with a description of the issue found, and it will be reviewed and potentially updated on this page.
The below block diagram indicates the digital subsystem that is being implemented by the API. The digital clock, data, and power supply are all controlled via digital lines in the project.
For voltage levels, all default levels are 0V to 1.8V with a 0.9V threshold for reading high/low digital logic.
For timing, 1 MHz is the default vector rate for RFFE communication, and is stable for both reads and writes. There are more details which may be used to help ensure you have accurate and successful RFFE reads and writes:
The LabVIEW project is organized in the following manner:
In the Examples folder, you will find the following front panels. Below is a description of their functionality and intended use.
MIPI RFFE Command Panel.vi
This example uses a while loop with event structure to loop indefinitely until the user stops the program. The program is intended to execute one RFFE command call at a time based upon the user selecting "Execute Command". The RFFE command and Register Data controls can be modified dynamically and bursted at any time the program is running.
MIPI RFFE Multi-Command Panel.vi
This example shows one example of creating a VI from the API to create a new function that allows for multiple register reads or writes to occur programmatically. This example simply allows multiple extended register writes and/or multiple extended register reads. Note: A future example can be added if there is a desire to have various RFFE commands to execute in a sequence through an API call.
A summary of the API can be found below, along with recommendations on using the API:
To initialize the API, the NI-Digital driver is used along with a digital pattern instrument project (.digiproj). The VI's are organized to make corresponding functions logical to the end user.
An optional step in the command panel block diagram is to enable a code subset which allows a user to define a pattern to burst before the command panel begins. This is useful when working with DUTs that require a specific sequence of register writes before it is operational.
To select your command programmatically, there is a Burst RFFE Command VI that allows you to do so.
Finally, for programmatically bursting a sequence of register commands, there is a Multi-Command VI that allows you to perform multiple extended register reads or writes. This can be modified if the types of commands need to change in the sequence. Note: please leave a comment for feedback on the types of register sequence burst commands needed and it can be considered for addition in future API revisions.
LabVIEW 17.0 and NI-Digital 17.0 or greater
PXIe-657x (6570, 6571) or equivalent product
MIPI RF Front-End Interface (RFFE) from mipi.org