We are planning to implement production testing for the EM35x (EM351, EM357, etc.) What would be the best process of implementing this? Also, is device calibration required and how would this be implemented? Are there any application notes and/or software examples that we can reference?
Customers interested in designing a manufacturing / production test setup for EM35x-based designs should check out the following documents (online and also available in your EmberZNet "documentation" directory tree):
Also of interest is the Manufacturing Library ("mfglib") API (documented at stack/include/mfglib.h for SoC platforms and in the "Mfglib Frames" section of the EZSP Reference Guide (UG100) for EZSP NCP platforms), which provides a set of functional RF test commands similar to that of the pre-built NodeTest application (found in app/nodetest folder of the EmberZNet installation). This mfglib API is demonstrated through a non-AppFramework-based sample project in app/mfglib (for SoC) or app/mfglib-host. In regards to leveraging this as part of a larger custom application, at the time of this writing there is not an AppBuilder GUI widget or "plugin" to add Mfglib into an SoC-based target (although that is high on the priority list for upcoming releases), so the designer would need to do this manually through the IAR EWARM project view (Project >> Add Files >> browse to appropriate build/mfglib-library-XXX/mfglib-library.a file) after project generation.
Regarding calibration, the initial calibration is performed automatically by the PHY (whether used via the EmberZNet stack or via NodeTest) for each channel the first time that channel is used (or since the last main flash block erasure, since the calibration data is stored in SimEEPROM tokens). Periodic recalibration of some parameters happens automatically in the stack as the EM35x's internal temperature sensor (managed by the stack via a dedicated, calibration-specific ADC) notices significant variations in operating temperature. (See also the API documentation for emberRadioNeedsCalibratingHandler() in stack/include/stack-info.h.) For details about what data is retained and how the calibration process works, please see the section entitled Channel Calibration Test in the aforementioned AN700 document. We recommend that, ideally, a device takes enough time during production test to select each channel that the application may expect to use, such that the calibration can be completed cleanly for those channels before the device is deployed, especially if the device's power supply stability during field installation cannot be ensured (such as for battery-powered devices), as bad initial calibration data can lead to imapired RF performance.
See also these Knowledge Base articles, which are related to the manufacturing/testing process: