On Si4467/Si4468 A2A devices there exists an API command called OFFLINE_RECAL. The description of this API is rather confusing so I am trying to make things clear here.
The purpose of the API function is to allow the application to perform certain calibrations at its earliest convenience (rather than the FW doing it regardless of application state, i.e., doing a calibration while a message is being received ruining so the reception.)
Note that all calibrations are performed at POWER_UP. The OFFLINE_RECAL command repeats some of these calibrations if a temperature change makes this necessary.
There are two parameters to the API command:
OFFLINE_CAL: This bit tells the FW the type of calibration it must perform. There are two types of calibrations: OFFLINE_CAL and OFFLINE2_CAL. Which one the application needs to perform shall be read back from GET_CHIP_STATUS: INFO_FLAGS: CAL_TYPE.
TEMP: This bit tells the FW which temperature range the calibrations should be performed to. Use LOW_TEMP (0) if the application operates in the -40 to 85C range and use HIGH_TEMP if the application operates in the -40 to 135C temperature range.
Note that this field is missing from the public API. The public API should look like this:
The FW notifies the application when to run the offline calibrations. When a pending interrupt shows up in GET_CHIP_STATUS: CHIP_STATUS: CAL the application shall run the offline calibration type defined in GET_CHIP_STATUS: INFO_FLAGS: CAL_TYPE at its earliest convenience. The OFFLINE_RECAL command is recommended to be invoked in READY state. If it’s not invoked in READY state it will go back to READY state regardless which may interrupt Tx/Rx operations.
Note that a calibration notification for the 32k oscillator also shows up in GET_CHIP_STATUS: CHIP_STATUS: CAL. This means that if the 32k oscillator calibration and offline re-calibrations are used together the notification will not distinguish between the two rendering it not so useful. Note that the 32k oscillator calibrations will be run automatically at the next SLEEP transition without any application interaction so this is truly just a notification in this case. (More on the 32k oscillator calibration you can read at API properties GLOBA_WUT_CONFIG and GLOBAL_WUT_CAL in the API documentation.)
If you are in the unlucky situation of running the 32k clock calibration as well as the offline calibrations in one application, you can do one of the followings:
In the Si4x6x chips there is a timeout after POR built-in to make sure if there is no host activity (SPI comms), the chip would go back to inactive state saving energy. Inactive state is the state the chip is sitting in after POR.
Because of this time-out, some refinement is necessary on the recommended startup sequence of AN633, as follows:
This first SPI transaction has to take less than 4ms (NSEL LOW time). If it cannot be guaranteed, send a shorter command (e.g. NOP) first, check CTS, then send POWER_UP or patch.
How can I make the frequency bandwidth of PCB antennas wider?
In some cases/applications the BW of printed antennas might not be sufficient. This article summarizes some design tricks on how to make a printed antenna wider bandwidth.
- Increase the board size (e.g. GND plane in the case of monopole-type antennas). Avoid using RF modules that have smaller size than quater-wavelength. Small modules generally have poor antenna gain and narrow bandwidth (due to the high Q factor).
- Increase the board thickness. Of course, it's typically limited by design.
- Decrease the dielectric constant of the PCB. Select PCB material with low epsilon value.
- Use wider and/or tapered traces in the PCB antenna structure.
- Do some tricks in the external antenna matching network. I.e. use more components to do the match; create resonators in the matching network. Also, see Bode-Fano, Youla matching techniques.
A number of antenna types can inherently be matched to the desired input impedance (typically, 50-ohm single-ended) without using any external tuning component (e.g. printed inverted-F antenna). However, board size, plastic enclosures, metal shielding, and components in close proximity to the antenna can affect antenna performance. For best performance, the antenna might require tuning that can be realized by two ways:
It is typically a preferred solution when layout modification is not required on a custom design. To accomplish this, Silicon Labs generally recommends to ensure SMD placeholders for external antenna tuning components, where the suggested external antenna matching structure is a 3-element PI network. You can achieve a good match using as a maximum of two elements (with one series and one shunt component) of the PI network. Any unknown passive impedance can get matched to 50 ohms on this PI network, since all L, C, L-C, C-L combinations can be realized on it and therefore any de-tuning effect can be compensated out.
Note that every implementation of an antenna design might require different combinations of inductors and capacitors.
Recommended 3-element PI network for external antenna matching purposes:
The PART and ROMID replay fields of the PART_INFO command are sufficient to identify EZRadio/PRO part number and revision according to the following table.
|Part number||PART||ROM_ID||Revision||Top marking|