STMicroelectronics STEVAL-IHP007V1 User Manual
広告
広告
UM1818
User manual
Street lighting power line modem evaluation board based on
ST7580 PLM and STM32 microcontroller
Introduction
This document explains how to use and set up the firmware and the software designed for the STEVAL-IHP007V1 board and all the necessary setup for using the hardware.
The system is based to the ST7580 data link protocol firmware, data link protocol described in the application note AN4018. ST7580 data link protocol firmware is organized in a layer structure. A dedicated layer allows the user to design its own application interfacing to the evaluation board features with very simple and easy to use APIs.
Dedicated software graphic user interface (GUI) allows the user to use all the embedded features interfacing the PLM evaluation board with the PC via an RS232 communication port.
This firmware is developed using STM32F10x standard peripherals library Rel.3.5.0 and
IAR Embedded Workbench
®
IDE for STM32 microcontrollers Rel. 6.50x
The STEVAL-IHP007V1 hardware evaluation board embeds an ARM 32-bit Cortex™-M3 core-based STM32F103xB and an ST7580 PSK multi mode power line networking systemon-chip.
Figure 1. STEVAL-IHP007V1 evaluation board
December 2016 DocID026935 Rev 3 1/47
www.st.com
47
Contents
Contents
UM1818
Remote firmware update (RFU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Communication frames types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Appendix B Schematic diagrams and bill of material . . . . . . . . . . . . . . . . . . . . . 35
2/47 DocID026935 Rev 3
UM1818
1 Features
Features
•
Configurable PSK power line modem interface with an embedded firmware stack for a complete power line communication management
•
8 user configurable general purpose input/output pins
•
USART communication channel for evaluation board interfacing
•
Internal configurable RTC evaluation board with lithium backup battery
•
Programmable user data and PLM parameters Flash memory area
•
Remote firmware update
•
Embedded AES 128 encryption evaluation board with programmable AES Key
DocID026935 Rev 3 3/47
47
Description
2 Description
UM1818
The STEVAL-IHP007V1 block diagram is shown in
line modem evaluation board is based on an ST7580 x-PSK power line modem device and an ARM 32-bit Cortex™-M3 core based STM32F103xB microcontroller. The PLM evaluation board is a fully functional communication evaluation board, with 8 programmable
I/Os, a real time clock and a Flash memory area for modem parameters and user data storage. The firmware structure is made up of several layers, each dealing with a different feature. The application layer engine is the general interface between the user program and all the parts of the evaluation board. It manages the communication ports, the evaluation board peripherals such as SCI, RTC, I/Os, LEDs and timing management. It is also the interface between the PLM communication protocol and the user application layer. The PLM communication protocol, itself made up of several layers, implements and manages the power line communication, manages the conflicts, timing and repetitions, the addressing, and so on. Please refer to AN4018 for details on the ST7580 communication protocol features and application services provided. Some features are managed directly by the application engine, and are transparent to the user, such as the RTC management or the board parameter update, as well as the board programming and configuration, which is done by particular programming or service commands managed and acknowledged directly by the application engine. Even the remote firmware update is managed by the application engine and allows the firmware being update remotely by power line modem.
The STEVAL-IHP007V1 is powered by a dual regulated DC power source, +12VDC (pin 1) and +3.3 VDC (pin 2) from the power supply connector (J2). The pin 3 is the ground.
The communication is done via power line, which is applied to the board using the J1 connector, where the pin 1 must be connected to the neutral wire while the pin 3 to the phase wires (refer to the
).
Figure 2. STEVAL-IHP007V1 block diagram
4/47
It is possible to connect the evaluation board in a three phase line (in case of communication modules are connected in all three phases), in this case an external
DocID026935 Rev 3
UM1818 Description
capacitor of 220 nF X1 must be connected to any additional phase, and then the other side of capacitors together with the common pin 5 of the J2 connector, following the schematic
, and the 0 Ω resistor R1 must be mounted.
Figure 3. Three phase connection
The GP PLM module is provided of a user interface (J3) shown in
connected the SPI interface pins (MOSI, MISO, SCK and NSS), the RS232 interface pins
(Tx and Rx), the USB interface pins (D+ and D-) and the user programmable general purpose I/O pins. Remark that those pins are directly connected to the microcontroller, so be careful to provide the correct insulation and protection depending on the use those pins are addressed.
It is possible to power the PLM using the +3.3 VDC (pin 19), +12 VDC (pin 20 or 22) and
GND (pins 17, 23, 20 and 24) of this connector instead of the connector J2, using only a single connector for power supply and control signals.
A lithium backup battery mounted on the board and 32 kHz quartz allows the use of the full functionality of the internal RTC of the microcontroller, allowing precise time-based operations.
DocID026935 Rev 3 5/47
47
Description UM1818
Figure 4. User interface connector
PLM_GPIO7
PLM_GPIO6
PLM_GPIO5
PLM_GPIO4
PLM_GPIO3
PLM_GPIO2
PLM_GPIO1
PLM_GPIO0
VCC
J3
14
16
18
20
22
24
2
4
6
8
10
12
13
15
17
19
21
23
9
11
5
7
1
3
TSW-112-08-L- D- RA
SPI_ MOSI
SPI_ MISO
SPI_S CK
SPI_ NSS
USART_RX
USART_TX
USB_ DP
USB_ DM
BOOT0
VDDIO
GSPG23072015DI1045
A two color LED allows the signaling the board operations, data transmission and reception.
Finally, a programming connector allows the firmware download and debug, even if it is possible to use the remote firmware update feature to remotely update the firmware using the PLM, as described further in this user manual. If the IAR - JLINK/JTRACE is used for the firmware downloading, a simple JTAG adapter is necessary. The
adapter schematics.
Figure 5. Programming connector JTAG adapter
6/47 DocID026935 Rev 3
UM1818
3 Hardware installation
Hardware installation
Connect a regulated dual DC power supply to the power source pins of the connector J3 as described previously and power the board.
In order to download the firmware, plug the programmer adapter (
programming connector J1 and the IAR J-Link programmer in the JTAG connector of the adapter.
Refer to the chapter firmware description (paragraph 6.3 for the firmware download procedure). As soon as the application is launched, the LEDs should quickly switch on indicating that the board has to be configured.
DocID026935 Rev 3 7/47
47
Firmware description
4 Firmware description
4.1
UM1818
Introduction
The firmware structure is constituted of several layers each of it taking care of a different feature. The application layer engine is the general interface between the user program and all the parts of the module. It takes care of the communication ports, the board peripherals as RTC and I/Os, and timing management. It is also the interface between the PLM communication protocol and the user program. The PLM communication protocol, itself constituted by several layers, implements and manages the power line communication, manages the conflicts, timing and repetitions, the addressing and so on.
Some features are managed directly by the application engine, and are transparent to the user, as well as the board programming and configuration, which is done by particular programming or service commands managed and acknowledged directly by the application engine, the RTC management, the board parameter or the firmware update.
The user application can be interfaced to the application engine by simples APIs used for the data transfer and the evaluation board interface. The
structure.
Figure 6. Firmware structure
4.2
The file user.c/h and application.c/h are the owner of application management, this manage the data flow from/to the PLM physical and from/to the UART side.
Remote firmware update (RFU)
The remote firmware update (RFU) uses the power line modem as external communication channel for receiving a new firmware dump. The firmware dump is placed in the internal
Flash memory of the microcontroller. Hence, the total memory size of the microcontroller must be at least the double of the estimated maximum size of the firmware application (in this application is set to 60 kbytes), plus 4 Kb of additional memory for a bootloader. The
shows the microcontroller memory organization.
The bootloader is loaded at the startup and checks the active segment containing the actual firmware. The implemented mechanism uses three partitions of the microcontroller’s Flash
8/47 DocID026935 Rev 3
UM1818 Firmware description
memory, one containing the bootloader and two containing the actual running firmware
(active image) and the new firmware as soon as a RFU is needed.
As soon as the firmware transfer is completed, a “swap” command sent from the remote
PLM causes the target PLM to check first the integrity of the firmware dump (actually a checksum is calculated and compared with the one sent by the remote PLM), and after the reset vector address of the new firmware is written in a dedicated Flash segment of the bootloader. Last the microcontroller is self reset, and the new firmware executed.
Figure 7. Memory organization
The RFU protocol manages the RFU “start”, “get new firmware segment” (with the segment address) and “swap” commands. The protocol is not embedded in the bootloader, hence it can be updated with the new firmware, bust the user must be careful in the modifications as any bugs can compromise the RFU mechanism.
As soon as a new firmware segment is received, the RFU manager checks if the address is within the firmware interrupt vector table. If it is the case, an offset depending on the free firmware image (1 or 2) allocation is added to each interrupt vector before being written in the free image Flash area.
In the
is shown the RFU flowchart.
DocID026935 Rev 3 9/47
47
Firmware description
Figure 8. RFU flowchart (1of 2)
UM1818
Figure 9. RFU flowchart (2 of 2)
4.3
10/47
Firmware download
In the setup directory there are different workspaces stored in different directories. In order to implement the remote firmware update feature it is necessary to download the project located in the workspace “Firmware - Application and Bootloader”. This workspace contains two different projects, one is the bootloader and the other one is the application itself. If the board has never been programmed, this workspace must be downloaded before.
Open the IAR Embedded Workbench
®
IDE for STM32 microcontrollers Rel. 6.50 (or a more recent release). Click File\Open\Workspace and load the following workspace placed in the directory selected during the setup file installation: “Firmware - Application and
Bootloader\EWARM\Project.eww”. Verify that the application project is the active project
(the project name must be in bold), otherwise select the active project in the list below the
DocID026935 Rev 3
UM1818
Figure 10. Active project selection
Firmware description
4.4
Click "Project - Batch Build" or press the key F8 in order to compile at the mean time the bootloader and the application.
After the compiling is completed, press "Project - Download and Debug" or press the keys
CTRL+D. The both firmware download starts. As soon as the download is completed, press
F5 in order to run the application (or exit from the debug mode pressing the keys
CTRL+SHIFT+D and unplug the programmer).
If the procedure is done correctly, the orange LED should be on, indicating the board has never been set up before. If it is not the case, try first to erase the memory by clicking
Project\Download\Erase Memory and download again the firmware as described before.
Use the GUI interface in order to setup the board and connect it to the power line as described in the dedicated paragraph.
As soon as bootloader has been installed in the evaluation board is possible to remotely (via power line) update the firmware using the RFU feature. Each new firmware version has to be programmed using the workspace “Firmware - Application standalone\EWARM\Project.eww”. The bin file produced by this workspace that is located in the folder “Firmware - Application standalone\ EWARM\PLM_HID_STANDALONE.bin” can be directly loaded using the GUI interface. The difference of this application with the one contained in the workspace with the bootloader is mainly in the stm32f10x_flash.icf linker file and some workspace parameters that are not used in the application without the bootloader
(as multiple build, simultaneous debug mode, etc.).
The setup folder contains also the Firmware - Bootloader folder, where inside there is the bootloader firmware; and the folder Firmware - Sniffer which contains the sniffer workspace to download in a PLM module useful if the data sniffing feature of the interface is used. In this case the PLM module will work only as a sniffer.
Firmware architecture
The structure of the workspace is divided in different sections as shown in the
DocID026935 Rev 3 11/47
47
Firmware description
Figure 11. Workspace structure
UM1818
12/47
At this level, all the communication APIs and all the APIs for the application engine interface are available. In the main file, the following code is implemented for running the state machine engines: while(1){
DL_FSM();//PLM Main Loop
APP_StackUpdate();// USART State machine
USER_Program();// PLM State machine
#ifdef USE_WDG //STM32 Window Watchdog
IWDG_ReloadCounter();
#endif
#ifdef KEEP_ALIVE //PLM Keep Alive systems
Check_KA_Timeout();
#endif
}
After the initialization the infinite loop calls three main functions: the DL_FSM(),
USER_Program() and the APP_StackUpdate() routine.
DocID026935 Rev 3
UM1818 Firmware description
The DL_FSM() is the PLM stack main loop, this manage the PLM low level communication.
The application engine “APP_StackUpdate()” is the state machine which runs inside the
PLM application state machine; this uses the data link service provided from DL_Service layer.
The user program implemented in this user manual realizes a bridge between the power line communication and the COM port: all data arriving from the COM port addressed to another
PLM module is sent via PLM, and in turn all data received from PLM is sent back to the
COM port. It is necessary that the user program does not stop the core operations (looping instructions) without calling the application engine.
All the hardware configurations are contained in the board support package file, and the file
DL_SimpleNodeConf contains the data link configuration parameters and the PLM modem configuration value (frequency, modulation zero crossing delay, etc.).
The next paragraph lists all the data types and the APIs used in the application engine that can be modified by the user if different needs arise.
4.5 Firmware data types
The data type found in the wrapper.h module, are listed hereafter:
/* USER FRAME STRUCTURE */ typedef struct
{
APP_ftype_t type;
bool broadcast;
u8 address[6];
u8 len;
u8 data[USER_PAYLOAD_SIZE]; /* MAX PAYLOAD SIZE: 100 bytes */
bool EnableTX
}APP_frame_t;
/* APPLICATION FRAME TYPE */ typedef enum
{
APP_DATA_FRAME = 0x00,
APP_SERVICE_FRAME = 0x01,
APP_PING_FRAME = 0x02,
APP_ERROR_FRAME = 0x03,
APP_PROGRAMMING_FRAME = 0x04,
APP_ACK_FRAME = 0x05,
APP_MIB_FRAME = 0x06
}APP_ftype_t;
DocID026935 Rev 3 13/47
47
Firmware description UM1818
/* APPLICATION ERRORS */ typedef enum
{
APP_ERROR_NONE = 0x00, // No error
APP_ERROR_GENERIC = 0x01, // Generic communication error
APP_ERROR_COMM_TIMEOUT = 0x02, // Communication timeout error
APP_ERROR_SERVICE_GRP_UNKNOWN = 0x03, // Service group unknown error
APP_ERROR_SERVICE_CMD_ERROR = 0x04, // Service command error
APP_ERROR_COMMUNICATION = 0x05, // Communication error
APP_ERROR_ISOLATED_NODE = 0x06, // Node unreachable error
APP_ERROR_HARDWARE = 0x07, // Hardware error
APP_ERROR_WRONG_PROG_COMMAND = 0x08, // Wrong programming command error
APP_ERROR_WRONG_PROG_GROUP = 0x09, // Wrong programming group error
APP_ERROR_DEVICE_BLANK = 0x0a, // Device blank
APP_ERROR_RTC_ERROR = 0x0b, // Error setting the system time
APP_ERROR_WATCHDOG_DISABLED = 0x0c, // Hardware reset impossible
APP_ERROR_NODE_INIT_FAILED = 0x0d, // Node initialization failure
APP_ERROR_RTC_DISABLED = 0x0e // Internal RTC disabled
}APP_ERROR_t;
14/47
/* PROGRAMMING GROUPS */ typedef enum
{
PROG_GRP_DEVICE_DATA = 0x00, // Device Data
PROG_GRP_LL_STACK_PARAM = 0x01, // Link layer stack parameters
PROG_GRP_USER_DATA = 0x02 // User program
}APP_PROG_GROUP_t;
/* SERVICE COMMANDS */ typedef enum
{
/* NATIVE SERVICE COMMANDS */
SERVICE_SOFTWARE_RESET = 0x00,// Reset internal state machines
SERVICE_HARDWARE_RESET = 0x01,// Module hardware reset
SERVICE_PARAM_SET = 0x02,// Set service parameters
SERVICE_PARAM_GET = 0x03,// Get service parameters
SERVICE_INPUTS_GET = 0x04,// Get general purpose inputs pin status
SERVICE_OUTPUTS_SET = 0x05,// Set general purpose outputs pins value
SERVICE_FW_REL_GET = 0x06,// Get the stack and the module firmware release
SERVICE_PLM_CLOCK_SET = 0x07,// Set the internal time clock value
DocID026935 Rev 3
UM1818 Firmware description
SERVICE_PLM_CLOCK_GET = 0x08,// Get the internal time clock value
SERVICE_IO_CONFIG_SET = 0x09,// Set the general purpose input and output pins
SERVICE_IO_CONFIG_GET = 0x0a,// Get the general purpose input and output pins
SERVICE_NET_DISCOVER_REQ = 0x0b,
SERVICE_RFU_SET_IMG_HEADER = 0x0c,
SERVICE_RFU_SET_IMG_DATA = 0x0d,
SERVICE_RFU_SWAP_IMG = 0x0e,
SERVICE_SN_SET = 0x0f,
SERVICE_SN_GET = 0x10
/* USER DEFINED SERVICE COMANDS */
// SERVICE_USER_CMD_xx = 0x.., // User defined service commands
(0x0b to 0x7f)
}APP_SER_CMD_t;
4.6
4.6.1
Firmware frame types
This paragraph describes all the frame types that are implemented in this firmware. In each field there is also the description.
Communication frames types
Frames exchanged between two PLM modules or between a PLM module and an external device connected to the COMM interface.
From the COMM interface module (USART) buffer[0] = n + 10; buffer[1] = DATA_FRAME_TYPE | BROADCAST_FLAG; buffer[2,..7] = target_module.address; buffer[8,..8+n-1] = user_data[n]; buffer[8+n,8+n+1] = CRC16;
// Data frame payload length (n + 10)
// Data frame type
// Target device address (6 bytes)
// User data (n bytes, at least 1)
// CRC-16
/* BROADCAST_FLAG = 0x80 -> data sent in broadcast - BROADCAST_FLAG = 0x00
-> data sent in unicast */
From / to communication interface (PLM, USART) frame.type = DATA_FRAME_TYPE; frame.len = n; frame.broadcast = TRUE / FALSE; frame.address = target_module.address; frame.data[n] = service_data[n];
// Data frame type
// Data frame payload length
// TRUE = broadcast, FALSE = unicast
// Target device address (6 bytes)
// User data (n bytes)
DocID026935 Rev 3 15/47
47
Firmware description UM1818
4.6.2 Ping frames
This particular frame is used to ping a remote (via PLM interface) or a local (via COMM interface) module. When the ping frame is received, this is managed directly at the data link layer and is not notified at the application and consequently the user levels.
From the COMM interface module (USART).
buffer[0] = 10; buffer[1] = APP_PING_FRAME; buffer[2,..7] = target_module.address; buffer[8,9] = CRC16;
// Ping frame payload length
// Ping frame type
// Target device address (6 bytes)
// CRC-16
From / to communication interface (PLM, USART) buffer[0] = 12; buffer[1] = APP_ACK_FRAME; buffer[2,..7] = target_module.address; buffer[8]= APP_PING_FRAME; buffer[9]= command_echo; buffer[10,11] = CRC16;
// Frame payload length
// ACK frame type
// Target device address (6 bytes)
// Ping frame type
// Echo
// CRC-16
4.6.3 Error frames
Can be considered as data frames; they are user error frames from user application level addressed to a target PLM module.
From / to communication interface (PLM, USART) buffer[0] = 12; buffer[1] APP_ERROR_FRAME; buffer[2,..7] = target_module.address; buffer[8,9]= user_error_code; buffer[10,11] = CRC16;
// Error frame payload length
// Target device address (6 bytes)
// Ping frame type
// Echo
// CRC-16
Error code list
0x0000 = APP_ERROR_NONE
0x0001 = APP_ERROR_GENERIC
0x0002 = APP_ERROR_COMM_TIMEOUT
0x0003 = APP_ERROR_SERVICE_GRP_UNKNOWN
0x0004 = APP_ERROR_SERVICE_CMD_ERROR
0x0005 = APP_ERROR_COMMUNICATION
0x0006 = APP_ERROR_ISOLATED_NODE
0x0007 = APP_ERROR_HARDWARE
0x0008 = APP_ERROR_WRONG_PROG_COMMAND
0x0009 = APP_ERROR_WRONG_PROG_GROUP
0x000a = APP_ERROR_DEVICE_BLANK
0x000b = APP_ERROR_RTC_ERROR
0x000c = APP_ERROR_WATCHDOG_DISABLED
0x000d = APP_ERROR_NODE_INIT_FAILED
0x000e = APP_ERROR_RTC_DISABLED
16/47 DocID026935 Rev 3
UM1818 Firmware description
user_error_code = (APP_ERROR_t)(buffer[8]<<8)| buffer[9]);
4.6.4 Service frames
Frames containing service commands concerning both some native module features
(internal clock, general purpose inputs and outputs, etc.) and user defined service frames.
Native frames are managed directly by the application engine.
From the COMM interface module (USART) buffer[0] = n + 11; // Service frame payload length (n + 11) buffer[1] = APP_SERVICE_FRAME | BROADCAST_FLAG; // Service frame type buffer[2,..7] = target_module.address; buffer[8] = (APP_SER_CMD_t)command; buffer[9,..9+n-1] = service_data[n]; buffer[9+n, 9+n+1] = CRC16;
// Target device address (6 bytes)
// Service command
// Service data
// CRC-16
/* BROADCAST_FLAG = 0x80 -> data sent in broadcast - BROADCAST_FLAG = 0x00
-> data sent in unicast */
From / to communication interface (PLM, USART) buffer[0] = n + 11; buffer[1] = DATA_FRAME_TYPE;
// length
// Service or ACK frame type buffer[2,..7] = target_module.address; buffer[9,..n] = service_data[n]/Command_Echo; buffer[n+1,n+2] = CRC16;
// Target device address (6 bytes) buffer[8] = (APP_SER_CMD_t)command/APP_ACK_FRAME; // Service command/ACK
// Service data or Command echo(n=1)
DocID026935 Rev 3 17/47
47
Firmware description UM1818
Service command list
/* NATIVE SERVICE COMMANDS */
SERVICE_SOFTWARE_RESET = 0x00,
SERVICE_HARDWARE_RESET = 0x01,
SERVICE_PARAM_SET = 0x02,
SERVICE_PARAM_GET = 0x03,
SERVICE_INPUTS_GET = 0x04,
SERVICE_OUTPUTS_SET = 0x05,
SERVICE_FW_REL_GET = 0x06,
SERVICE_PLM_CLOCK_SET = 0x07,
SERVICE_PLM_CLOCK_GET = 0x08,
SERVICE_IO_CONFIG_SET = 0x09,
SERVICE_IO_CONFIG_GET = 0x0a,
SERVICE_NET_DISCOVER_REQ = 0x0b,
SERVICE_RFU_SET_IMG_HEADER = 0x0c,
SERVICE_RFU_SET_IMG_DATA = 0x0d,
SERVICE_RFU_SWAP_IMG = 0x0e,
SERVICE_SN_SET = 0x0f,
SERVICE_SN_GET = 0x10
/* USER DEFINED SERVICE COMANDS */
0x.. = SERVICE_USER_CMD_xx
// Reset internal state machines
// Module hardware reset
// Set service parameters
// Get service parameters
// Get general purpose inputs pin status
// Set general purpose outputs pins value
// Get the stack and the module firmware release
// Set the internal time clock value
// Get the internal time clock value
// Set the general purpose input and output pins
// Get the general purpose input and output pins
PLM reset: software, hardware
From the COMM interface (USART) buffer[0] = 11; buffer[1] = APP_SERVICE_FRAME;
// Service frame payload length
// Service frame type buffer[2,..7] = target_module.address; // Target device address (6 bytes)
/* FOR SOFTWARE RESET */ buffer[8] = SERVICE_SOFTWARE_RESET;
/* FOR HARDWARE RESET */ buffer[8] = SERVICE_HARDWARE_RESET; buffer[9,10] = CRC16; // CRC-16
Note: Any response from PLM module
18/47 DocID026935 Rev 3
UM1818 Firmware description
Set module parameters: programming user parameters
From the COMM interface (USART) buffer[0] = 44 // Service frame payload length buffer[1] = APP_SERVICE_FRAME | BROADCAST_FLAG; // Service frame type buffer[2,..7] = target_module.address; buffer[8] = SERVICE_PARAM_SET; buffer[9] = PROG_GRP_USER_DATA; buffer[10 -> 41] = *user_data_buffer; buffer[42,43] = CRC16;
// Target device address (6 bytes)
// Service command
// Type command
// Program data
// CRC-16
From / to communication interface (PLM, USART) buffer[0] = 12; buffer[1] = APP_ACK_FRAME; buffer[2,..7] = target_module.address; buffer[8]= APP_SERVICE_FRAME; buffer[9]= command_echo; buffer[10,11] = CRC16;
// Service frame payload length
// ACK frame type
// Target device address (6 bytes)
// Service frame type
// Echo
// CRC-16
Get module parameters: programming user parameters
From the COMM interface (USART) buffer[0] = 12; buffer[1] = APP_SERVICE_FRAME; buffer[2,..7] = target_module.address; buffer[8] = SERVICE_PARAM_GET; buffer[9] = PROG_GRP_USER_DATA; buffer[10,11] = CRC16;
// Service frame payload length
// Service frame type
// Target device address (6 bytes)
// Service command
// Type command
// CRC-16
From / to communication interface (PLM, USART) buffer[0] = 44; buffer[1] = APP_SERVICE_FRAME; buffer[2,..7] = target_module.address; buffer[8] = SERVICE_PARAM_GET; buffer[9] = PROG_GRP_USER_DATA; buffer[10 -> 41] = *user_data_buffer; buffer[42,43] = CRC16;
// Service frame payload length
// Service frame type
// Target device address (6 bytes)
// Service command
// Type command
// Program Data
// CRC-16
DocID026935 Rev 3 19/47
47
Firmware description UM1818
Get module general purpose inputs/outputs configuration
From the COMM interface (USART) buffer[0] = 11; buffer[1] = APP_SERVICE_FRAME; buffer[2,..7] = target_module.address; buffer[8] = SERVICE_IO_CONFIG_GET; buffer[9,10] = CRC16;
// Service frame payload length
// Service frame type
// Target device address (6 bytes)
// Service Command
// CRC-16
From / to communication interface (PLM, USART) buffer[0] = 12; buffer[1] = APP_SERVICE_FRAME; buffer[2,..7] = target_module.address; buffer[8] =SERVICE_IO_CONFIG_GET; buffer[9] = *sender.configuration_value; buffer[10,11] = CRC16;
// Service frame payload length
// Service frame type
// Target device address (6 bytes)
// Service command
// input/output configuration
// CRC-16
Set module general purpose inputs/outputs configuration
From the COMM interface (USART) buffer[0] = 12; buffer[1] = APP_SERVICE_FRAME; buffer[2,..7] = target_module.address; buffer[8] = SERVICE_IO_CONFIG_SET; buffer[9] = target.configuration_value; buffer[10,11] = CRC16;
// Service frame payload length
// Service frame type
// Target device address (6 bytes)
// Service command
// bit x = 1 -> IOx = output, bit x = 0
-> IOx = input
// CRC-16
From / to communication interface (PLM, USART) buffer[0] = 12; buffer[1] = APP_ACK_FRAME; buffer[2,..7] = target_module.address
buffer[8]= APP_SERVICE_FRAME; buffer[9]= command_echo; buffer[10,11] = CRC16;
// Service frame payload length
// ACK frame type
// Target device address (6 bytes)
// Service frame type
// Echo
// CRC-16
Get module general purpose inputs value
From the COMM interface (USART) buffer[0] = 11; buffer[1] = APP_SERVICE_FRAME; buffer[2,..7] = target_module.address; buffer[8] = SERVICE_INPUTS_GET; buffer[9,10] = CRC16;
// Service frame payload length
// Service frame type
// Target device address (6 bytes)
// Service command
// CRC-16
20/47 DocID026935 Rev 3
UM1818 Firmware description
From / to communication interface (PLM, USART) buffer[0] = 12; buffer[1] = APP_SERVICE_FRAME; buffer[2,..7] = target_module.address; buffer[8] =SERVICE_INPUTS_GET; buffer[9] = *sender.inputs_value; buffer[10,11] = CRC16;
// Service frame payload length
// Service frame type
// Target device address (6 bytes)
// Service command
// Read GPIO Input value
// CRC-16
Set module general purpose outputs value
From the COMM interface (USART) buffer[0] = 12; buffer[1] = APP_SERVICE_FRAME; buffer[2,..7] = target_module.address; buffer[8] = SERVICE_OUTPUTS_SET; buffer[9] = target.outputs_value; buffer[10,11] = CRC16;
// Service frame payload length
// Service frame type
// Target device address (6 bytes)
// Service command
// Set GPIO output value
// CRC-16
From / to communication interface (PLM, USART) buffer[0] = 12; buffer[1] = APP_ACK_FRAME; buffer[2,..7] = target_module.address; buffer[8]= APP_SERVICE_FRAME; buffer[9]= command_echo; buffer[10,11] = CRC16;
// Service frame payload length
// ACK frame type
// Target device address (6 bytes)
// Service frame type
// Echo
// CRC-16
Get module firmware release
From the COMM interface (USART) buffer[0] = 11; buffer[1] = APP_SERVICE_FRAME; buffer[2,..7] = target_module.address; buffer[8] = SERVICE_FW_REL_GET; buffer[9,10] = CRC16;
// Service frame payload length
// Service frame type
// Target device address (6 bytes)
// Service command
// CRC-16
DocID026935 Rev 3 21/47
47
Firmware description UM1818
From / to communication interface (PLM, USART) buffer[0] = 15; buffer[1] = APP_SERVICE_FRAME; buffer[2,..7] = target_module.address; buffer[8] = SERVICE_FW_REL_GET;
// Service frame payload length
// Service frame type
// Target device address (6 bytes)
// Service command buffer[9,10] = target_module.firmware_release; // Module firmware release (x.y) buffer[11,12] = target_module.stack_release; buffer[13,14] = CRC16;
// Stack firmware release (x.y)
// CRC-16
Get module time clock value
From the COMM interface (USART) buffer[0] = 11; buffer[1] = APP_SERVICE_FRAME; buffer[2,..7] = target_module.address; buffer[8] = SERVICE_PLM_CLOCK_GET; buffer[9,10] = CRC16;
// Service frame payload length
// Service frame type
// Target device address (6 bytes)
// Service command
// CRC-16
From / to communication interface (PLM, USART) buffer[0] = 14; buffer[1] = APP_SERVICE_FRAME; buffer[2,..7] = target_module.address; buffer[8] = SERVICE_PLM_CLOCK_GET; buffer[9] = target_module.hours; buffer[10] = target_module.minutes; buffer[11] = target_module.seconds; buffer[12,13] = CRC16;
// Service frame payload length
// Service frame type
// Target device address (6 bytes)
// Service command
// Hours
// Minutes
// Seconds
// CRC-16
Set module time clock value
From the COMM interface (USART) buffer[0] = 14; // Service frame payload length buffer[1] = APP_SERVICE_FRAME | BROADCAST_FLAG; // Service frame type buffer[2,..7] = target_module.address; buffer[8] = SERVICE_PLM_CLOCK_SET; buffer[9] = target_module.new_hours; buffer[10] = target_module.new_minutes; buffer[11] = target_module.new_seconds; buffer[12,13] = CRC16;
// Target device address (6 bytes)
// Service command
// Hours
// Minutes
// Seconds
// CRC-16
22/47 DocID026935 Rev 3
UM1818 Firmware description
From / to communication interface (PLM, USART) buffer[0] = 12; buffer[1] = APP_ACK_FRAME; buffer[2,..7] = target_module.address; buffer[8]= APP_SERVICE_FRAME; buffer[9]= command_echo; buffer[10,11] = CRC16;
// Service frame payload length
// Service frame type
// Target device address (6 bytes)
// Service frame type
// Echo
// CRC-16
GET PLM Module SNR ratio
From the COMM interface (USART) buffer[0] = 11; buffer[1] = APP_SERVICE_FRAME; buffer[2,..7] = target_module.address; buffer[8] = SERVICE_SN_GET; buffer[9,10] = CRC16;
// Service frame payload length
// Service frame type
// Target device address (6 bytes)
// Service command
// CRC-16
From / to communication interface (PLM, USART) buffer[0] = 12; buffer[1] = APP_SERVICE_FRAME; buffer[2,..7] = target_module.address; buffer[8] = SERVICE_SN_GET; buffer[9] = *sender.sn_value; buffer[10,11] = CRC16;
// Service frame payload length
// Service frame type
// Target device address (6 bytes)
// Service command
// SNR Ratio from 0 to 31
// CRC-16
Set PLM Module SNR ratio
From the COMM interface (USART) buffer[0] = 12; buffer[1] = APP_SERVICE_FRAME; buffer[2,..7] = target_module.address; buffer[8] = SERVICE_SN_SET; buffer[9] = target.sn_value; buffer[10,11] = CRC16;
// Service frame payload length
// Service frame type
// Target device address (6 bytes)
// Service command
// SNR Ratio from 0 to 31
// CRC-16
From / to communication interface (PLM, USART) buffer[0] = 12; buffer[1] = APP_ACK_FRAME; buffer[2,..7] = target_module.address
buffer[8]= APP_SERVICE_FRAME; buffer[9]= command_echo; buffer[10,11] = CRC16;
// Service frame payload length
// ACK frame type
// Target device address (6 bytes)
// Service frame type
// Echo
// CRC-16
DocID026935 Rev 3 23/47
47
HID commands
Appendix A HID commands
UM1818
HID frames are data frames where the payload is customized for the HID ballast application.
From the COMM interface (USART) buffer[0] = n + 10; buffer[1] = APP_DATA_FRAME | BROADCAST_FLAG; buffer[2,..7] = target_module.address; buffer[8,..8+n-1] = user_data[n]; buffer[8+n,8+n+1] = CRC16;
// Data frame payload length (n + 10)
// Data frame type
// Target device address (6 bytes)
// User data (n bytes, at least 1)
// CRC-16
/* BROADCAST_FLAG = 0x80 -> data sent in broadcast - BROADCAST_FLAG = 0x00
-> data sent in unicast */
From / to communication interface (PLM, USART) buffer[0] = n + 10; buffer[1] = APP_DATA_FRAME; buffer[2,..7] = target_module.address; buffer[8,..n] = HID_DATA; buffer[n+1,n+2] = CRC16;
// Data frame payload length (n + 10)
// Data frame type
// Target device address (6 bytes)
// HID data
// CRC-16
HID board reset
From the COMM interface (USART) buffer[0] = 13; buffer[1] = APP_DATA_FRAME;
// Data frame payload length
// Data frame type buffer[2,..7] = target_module.address; // Target device address (6 bytes) buffer[8] = 0x73; buffer[9] = 0x00; buffer[10] = reset_type; buffer[11,12] = CRC16;
// command set char 's'
// HID board command identify "reset"
// Software reset = 0xaa, Hardware reset = 0x0c
// CRC-16
From / to communication interface (PLM, USART)
Case hardware reset, the PLM set the reset GPIO pin to reset the HID ballast (GPIO Port A
Pin 6) buffer[0] = 12; buffer[1] = APP_ACK_FRAME; buffer[2,..7] = target_module.address; buffer[8]= APP_DATA_FRAME; buffer[9]= command_echo; buffer[10,11] = CRC16;
// Data frame payload length
// ACK frame type
// Target device address (6 bytes)
// Data frame type
// Echo
// CRC-16
24/47 DocID026935 Rev 3
UM1818 HID commands
Case Software reset buffer[0] = 12; buffer[1] = APP_ACK_FRAME; buffer[2,..7] = target_module.address; buffer[8]= APP_DATA_FRAME; buffer[9]= 0x73; buffer[10,11] = CRC16;
// Data frame payload length
// ACK frame type
// Target device address (6 bytes)
// Data frame type
// Command char 's'
// CRC-16
Lamp dimming
From the COMM interface (USART- Source “Concentrator”) and To the COMM interface
(USART- Destination “HID ballast”) buffer[0] = 13; // Data frame payload length buffer[1] = APP_DATA_FRAME | BROADCAST_FLAG; // Data frame type buffer[2,..7] = target_module.address; buffer[8] = 0x73; buffer[9] = 0x01; buffer[10] = dimming_value; buffer[11,12] = CRC16;
// Target device address (6 bytes)
// command set char 's'
// HID board command identify "Dimming"
// Dimming value 0 - 100 (0% - 100%)
// CRC-16
From the COMM interface (USART- Destination “HID ballast”) buffer[0] = 2; buffer[1] = APP_DATA_FRAME; buffer[2] = 0x73;
// Data frame payload length
// Data frame type
// Char 's'
To the COMM interface (USART- Source “Concentrator”) buffer[0] = 12; buffer[1] = APP_ACK_FRAME; buffer[2,..7] = target_module.address; buffer[8]= APP_DATA_FRAME; buffer[9]= 0x73; buffer[10,11] = CRC16;
// Data frame payload length
// ACK frame type
// Target device address (6 bytes)
// Data frame type
// Command char 's'
// CRC-16
DocID026935 Rev 3 25/47
47
HID commands UM1818
Get HID parameter
From the COMM interface (USART- Source “Concentrator”) and To the COMM interface
(USART- Destination “HID ballast”) buffer[0] = 12; buffer[1] = APP_DATA_FRAME; buffer[2,..7] = target_module.address; buffer[8] = 0x67; buffer[9] = param_to_get; buffer[10,11] = CRC16;
// Data frame payload length
// Data frame type
// Target device address (6 bytes)
// command set char 'g'
// HID Param Value
// CRC-16
/* param_to_get value */
0x00 = HARDWARE VERSION
0x01 = BUS VOLTAGE
0x02 = LAMP VOLTAGE
0x03 = HARDWARE STATUS
0x04 = LAMP POWER
0x05 = LAST FAILURE
0x06 = POWER SUPPLY VOLTAGE
0x07 = BOARD TEMPERATURE (°C)
0x08 = N° OF POWER ON
0x09 = LAMP LIFETIME (Hours)
0x0a = GET ALL PARAMETERS
From the COMM interface (USART- Destination “HID Ballast”)
/* GET HARDWARE VERSION */ buffer[0] = 5; buffer[1] = 0x67; buffer[2] = 0x00; buffer[3] = hardware_release_xx;
// Data frame payload length
// Get command 'g' ascii value
// HARDWARE VERSION
// Hardware release xx.yy (xx, yy = bcd format) buffer[4] = hardware_release_yy; // Hardware release xx.yy (xx, yy = bcd format)
26/47 DocID026935 Rev 3
UM1818
/* GET BUS VOLTAGE */ buffer[0] = 5; buffer[1] = 0x67; buffer[2] = 0x01; buffer[3] = bus_voltage_h; buffer[4] = bus_voltage_l;
// Data frame payload length
// Get command 'g' ascii value
// BUS VOLTAGE
// High byte of bus voltage
// Low byte of bus voltage
/* GET LAMP VOLTAGE */ buffer[0] = 5; buffer[1] = 0x67; buffer[2] = 0x02; buffer[3] = lamp_voltage_h; buffer[4] = lamp_voltage_l;
// Data frame payload length
// Get command 'g' ascii value
// LAMP VOLTAGE
// High byte of lamp voltage
// Low byte of lamp voltage
/* GET HARDWARE STATUS */ buffer[0] = 5; buffer[1] = 0x67; buffer[2] = 0x03; buffer[3] = hardware_status_h; buffer[4] = hardware_status_l;
// Data frame payload length
// Get command 'g' ascii value
// HARDWARE STATUS
// High byte of hardware status
// Low byte of hardware status
/* hardware_status value */
0x00 = IDLE
0x01,0x02,0x03 = STARTUP
0x04,0x05 = WARMUP
0x06 = RUN
0x07 = WAIT
0x08 = FAILURE
HID commands
DocID026935 Rev 3 27/47
47
HID commands
/* GET LAMP POWER */ buffer[0] = 5; buffer[1] = 0x67; buffer[2] = 0x04; buffer[3] = lamp_power_h; buffer[4] = lamp_power_l;
// Data frame payload length
// Get command 'g' ascii value
// LAMP POWER
// High byte of lamp power
// Low byte of lamp power
UM1818
/* GET LAST FAILURE */ buffer[0] = 9; buffer[1] = 0x67; buffer[2] = 0x05; buffer[3] = hardware_status_h; buffer[4] = hardware_status_l; buffer[5] = bus_voltage_h; buffer[6] = bus_voltage_l; buffer[7] = lamp_voltage_h; buffer[8] = lamp_voltage_l;
// Data frame payload length
// Get command 'g' ascii value
// LAST FAILURE
// High byte of hardware status before the failure
// Low byte of hardware status before the failure
// High byte of bus voltage before the failure
// Low byte of bus voltage before the failure
// High byte of lamp voltage before the failure
// Low byte of lamp voltage before the failure
/* GET POWER SUPPLY VOLTAGE */ buffer[0] = 5; buffer[1] = 0x67; buffer[2] = 0x07; buffer[3] = board_temperature_h;
// Data frame payload length
// Get command 'g' ascii value
// BOARD TEMPERATURE
// High byte of board temperature (°C) buffer[4] = board_temperature_l; // Low byte of board temperature (°C)
/* GET BOARD TEMPERATURE (°C) */ buffer[0] = 5; buffer[1] = 0x67; buffer[2] = 0x07; buffer[3] = board_temperature_h;
// Data frame payload length
// Get command 'g' ascii value
// BOARD TEMPERATURE
// High byte of board temperature (°C) buffer[4] = board_temperature_l; // Low byte of board temperature (°C)
28/47 DocID026935 Rev 3
UM1818 HID commands
/* GET N° OF POWER ON */ buffer[0] = 5; buffer[1] = 0x67; buffer[2] = 0x08; buffer[3] = power_on_n_h; buffer[4] = power_on_n_l;
/* GET LAMP LIFETIME (Hours) */
// Data frame payload length
// Get command 'g' ascii value
// N. OF POWER ON
// High byte of number of lamp power on
// Low byte of number of lamp power on buffer[0] = 5; buffer[1] = 0x67; buffer[2] = 0x09; buffer[3] = lamp_lifetime_h; buffer[4] = lamp_lifetime_l;
/* GET ALL PARAMETERS */
// Data frame payload length
// Get command 'g' ascii value
// LAMP LIFETIME (hours)
// High byte of lamp lifetime (hours)
// Low byte of lamp lifetime (hours) buffer[0] = 5; buffer[1] = 0x67; buffer[2] = 0x0a; buffer[3] = hardware_release_xx; buffer[4] = hardware_release_yy; buffer[5] = bus_voltage_h; buffer[6] = bus_voltage_l; buffer[7] = lamp_voltage_h;
// Data frame payload length
// Get command 'g' ascii value
// GET ALL PARAMETERS
// Hardware release xx.yy (xx, yy = bcd format)
// Hardware release xx.yy (xx, yy = bcd format)
// High byte of bus voltage before the failure
// Low byte of bus voltage before the failure
// High byte of lamp voltage before the failure buffer[8] = lamp_voltage_l; buffer[9] = hardware_status_h; buffer[10] = hardware_status_l; buffer[11] = lamp_power_h;
// Low byte of lamp voltage before the failure
// High byte of hardware status before the failure
// Low byte of hardware status before the failure
// High byte of lamp power buffer[12] = lamp_power_l; // Low byte of lamp power buffer[13] = last_hardware_status_h; // High byte of hardware status before the failure buffer[14] = last_hardware_status_l; // Low byte of hardware status before the failure buffer[15] = last_bus_voltage_h; buffer[15] = last_bus_voltage_l;
// High byte of bus voltage before the failure
// Low byte of bus voltage before the failure buffer[17] = last_lamp_voltage_h; buffer[18] = last_lamp_voltage_l; buffer[19] = input_voltage_h; buffer[20] = input_voltage_l;
// High byte of lamp voltage before the failure
// Low byte of lamp voltage before the failure
// High byte of power supply voltage
// Low byte of power supply voltage
DocID026935 Rev 3 29/47
47
HID commands UM1818
buffer[21] = board_temperature_h; buffer[22] = board_temperature_l; buffer[23] = power_on_n_h; buffer[24] = power_on_n_l; buffer[25] = lamp_lifetime_h; buffer[26] = lamp_lifetime_l;
// High byte of board temperature (°C)
// Low byte of board temperature (°C)
// High byte of number of lamp power on
// Low byte of number of lamp power on
// High byte of lamp lifetime (hours)
// Low byte of lamp lifetime (hours)
To the COMM interface (USART- source “concentrator”)
/* GET HARDWARE VERSION */ buffer[0] = 14; buffer[1] = APP_DATA_FRAME;
// Data frame payload length
// Data frame type buffer[2,..7] = source_module.address; // Source device address (6 bytes) buffer[8] = 0x67; buffer[9] = 0x00; buffer[10] = hardware_release_xx; buffer[11] = hardware_release_yy; buffer[12,13] = CRC16;
// Get command 'g' ascii value
// Response to g0 command
// Hardware release xx.yy (xx, yy = bcd format)
// Hardware release xx.yy (xx, yy = bcd format)
// CRC-16
/* GET BUS VOLTAGE */ buffer[0] = 14; buffer[1] = APP_DATA_FRAME;
// Data frame payload length
// Data frame type buffer[2,..7] = source_module.address; // Source device address (6 bytes) buffer[8] = 0x67; buffer[9] = 0x02; buffer[10] = lamp_voltage_h; buffer[11] = lamp_voltage_l; buffer[12,13] = CRC16;
// Get command 'g' ascii value
// Response to g2 command
// High byte of lamp voltage
// Low byte of lamp voltage
// CRC-16
/* GET HARDWARE STATUS */ buffer[0] = 14; buffer[1] = APP_DATA_FRAME;
// Data frame payload length
// Data frame type buffer[2,..7] = source_module.address; // Source device address (6 bytes) buffer[8] = 0x67; buffer[9] = 0x03; buffer[10] = hardware_status_h; buffer[11] = hardware_status_l; buffer[12,13] = CRC16;
// Get command 'g' ascii value
// Response to g3 command
// High byte of hardware status
// Low byte of hardware status
// CRC-16
30/47 DocID026935 Rev 3
UM1818
/* hardware_status value */
0x00 = IDLE
0x01,0x02,0x03
0x04,0x05
= STARTUP
= WARMUP
0x06
0x07
0x08
= RUN
= WAIT
= FAILURE
HID commands
/* GET LAMP POWER */ buffer[0] = 14; buffer[1] = APP_DATA_FRAME;
// Data frame payload length
// Data frame type buffer[2,..7] = source_module.address; // Source device address (6 bytes) buffer[8] = 0x67; buffer[9] = 0x04; buffer[10] = lamp_power_h; buffer[11] = lamp_power_l; buffer[12,13] = CRC16;
// Get command 'g' ascii value
// Response to g4 command
// High byte of lamp power
// Low byte of lamp power
// CRC-16
/* GET LAST FAILURE */ buffer[0] = 18; buffer[1] = APP_DATA_FRAME;
// Data frame payload length
// Data frame type buffer[2,..7] = source_module.address; // Source device address (6 bytes) buffer[8] = 0x67; buffer[9] = 0x05; buffer[10] = hardware_status_h; buffer[11] = hardware_status_l;
// Get command 'g' ascii value
// Response to g5 command
// High byte of hardware status before the failure
// Low byte of hardware status before the failure buffer[12] = bus_voltage_h; buffer[13] = bus_voltage_l; buffer[14] = lamp_voltage_h; buffer[15] = lamp_voltage_l; buffer[16,17] = CRC16;
// High byte of bus voltage before the failure
// Low byte of bus voltage before the failure
// High byte of lamp voltage before the failure
// Low byte of lamp voltage before the failure
// CRC-16
DocID026935 Rev 3 31/47
47
HID commands
/* GET POWER SUPPLY VOLTAGE */ buffer[0] = 14; buffer[1] = APP_DATA_FRAME;
// Data frame payload length
// Data frame type buffer[2,..7] = source_module.address; // Source device address (6 bytes) buffer[8] = 0x67; buffer[9] = 0x06; buffer[10] = input_voltage_h; buffer[11] = input_voltage_l; buffer[12,13] = CRC16;
// Get command 'g' ascii value
// Response to g6 command
// High byte of power supply voltage
// Low byte of power supply voltage
// CRC-16
/* GET BOARD TEMPERATURE (°C) */ buffer[0] = 14; buffer[1] = APP_DATA_FRAME; buffer[1] = APP_DATA_FRAME; buffer[8] = 0x67; buffer[9] = 0x07; buffer[10] = board_temperature_h; buffer[11] = board_temperature_l; buffer[12,13] = CRC16;
// Data frame payload length
// Data frame type
// Source device address (6 bytes)
// Get command 'g' ascii value
// Response to g7 command
// High byte of board temperature (°C)
// Low byte of board temperature (°C)
// CRC-16
/* GET N° OF POWER ON */ buffer[0] = 14; buffer[1] = APP_DATA_FRAME;
// Data frame payload length
// Data frame type buffer[2,..7] = source_module.address; // Source device address (6 bytes) buffer[8] = 0x67; buffer[9] = 0x08; buffer[10] = power_on_n_h; buffer[11] = power_on_n_l; buffer[12,13] = CRC16;
// Get command 'g' ascii value
// Response to g8 command
// High byte of number of lamp power on
// Low byte of number of lamp power on
// CRC-16
UM1818
32/47 DocID026935 Rev 3
UM1818 HID commands
/* GET LAMP LIFETIME (Hours) */ buffer[0] = 14; buffer[1] = APP_DATA_FRAME;
// Data frame payload length
// Data frame type buffer[2,..7] = source_module.address; // Source device address (6 bytes) buffer[8] = 0x67; buffer[9] = 0x09; buffer[10] = lamp_lifetime_h; buffer[11] = lamp_lifetime_l; buffer[12,13] = CRC16;
// Get command 'g' ascii value
// Response to g9 command
// High byte of lamp lifetime (hours)
// Low byte of lamp lifetime (hours)
// CRC-16
/* GET ALL PARAMETERS */ buffer[0] = 36; buffer[1] = APP_DATA_FRAME;
// Data frame payload length
// Data frame type buffer[2,..7] = source_module.address; // Source device address (6 bytes) buffer[8] = 0x67; buffer[9] = 0x0a; buffer[10] = hardware_release_xx; buffer[11] = hardware_release_yy;
// Get command 'g' ascii value
// Response to g10 command
// Hardware release xx.yy (xx, yy = bcd format)
// Hardware release xx.yy (xx, yy = bcd format) buffer[12] = bus_voltage_h; buffer[13] = bus_voltage_l; buffer[14] = lamp_voltage_h; buffer[15] = lamp_voltage_l; buffer[16] = hardware_status_h; buffer[17] = hardware_status_l; buffer[18] = lamp_power_h; buffer[19] = lamp_power_l; buffer[20] = last_hardware_status_h; buffer[21] = last_hardware_status_l;
// High byte of bus voltage before the failure
// Low byte of bus voltage before the failure
// High byte of lamp voltage before the failure
// Low byte of lamp voltage before the failure
// High byte of hardware status before the failure
// Low byte of hardware status before the failure
// High byte of lamp power
// Low byte of lamp power
// High byte of hardware status before the failure
// Low byte of hardware status before the failure
DocID026935 Rev 3 33/47
47
HID commands UM1818
buffer[22] = last_bus_voltage_h; buffer[23] = last_bus_voltage_l; buffer[24] = last_lamp_voltage_h; buffer[25] = last_lamp_voltage_l; buffer[26] = input_voltage_h; buffer[27] = input_voltage_l; buffer[28] = board_temperature_h; buffer[29] = board_temperature_l; buffer[30] = power_on_n_h; buffer[31] = power_on_n_l; buffer[32] = lamp_lifetime_h; buffer[33] = lamp_lifetime_l; buffer[34,35] = CRC16;
// High byte of bus voltage before the failure
// Low byte of bus voltage before the failure
// High byte of lamp voltage before the failure
// Low byte of lamp voltage before the failure
// High byte of power supply voltage
// Low byte of power supply voltage
// High byte of board temperature (°C)
// Low byte of board temperature (°C)
// High byte of number of lamp power on
// Low byte of number of lamp power on
// High byte of lamp lifetime (hours)
// Low byte of lamp lifetime (hours)
// CRC-16
If an error occurs from the HID board or from the network, the following frame throughout the COMM will be sent:
/* ERROR FRAME RESPONSE */ buffer[0] = 12; buffer[1] = APP_ERROR_FRAME;
// Error frame payload length
// Error frame type buffer[4,5,6,7] = target_module.address; // Target device address (6 bytes) buffer[8,9] = HID_error_code; buffer[10,11] = CRC16;
// HID board error code (2 bytes)
// CRC-16
/* HID_error_code value */
0x10 = HID response error
0x11 = HID command unknown
0x12 = HID board response timeout
0x13 = HID packet delivery impossible
34/47 DocID026935 Rev 3
UM1818 Schematic diagrams and bill of material
Appendix B Schematic diagrams and bill of material
B.1 Schematic diagrams
VDDIO
Figure 12. Schematic diagram (1 of 5)
VDDIO VDDIO
VDDIO VDDIO
R8
10K
0402
R38
10K
0402
R2
10K
0402
RP2
4 x 10K
CAT16-J4
C1
100n 16V
0402
R9
10K
0402
VDDIO
R10
10K
0402
VDDIO
C4
100n 16V
0402
PLC_RESETN
VDD
C10
100n 16V
0402
PLC_TXD
PLC_RXD
10
11
12
8
9
6
7
3
4
5
1
2
TXD
RXD
VDDIO
TRSTN
TMS
GND
TCK
TDO
TDI
RESETN
VDD
XIN
VDD_PLL
C16
4u7 16V
0805
GND_A
C19
100n 16V
0402
GND_A GND_A
C17
100p 25V
0402
VCC_A
GND_A
C21
10u 16V
0805
GND_A
C24
100n 16V
0402
GND_A
RP1
4 x 10K
CAT16-J4
R1
R3
0R
0402
0R
0402
LD1
PL_RX_ON
PL_TX_ON
U2
ST7580
VFQFPN48
HSMF-C155
LEDSMD
CL_SEL
VS S A
VDDI O
G ND
NC
RE S E RVED
NC
NC
VDDI O
VVD_ RE G_ 1 V8
PA_OUT
VSS
EP
3 1
3 0
2 9
2 8
2 7
2 6
25
3 6
3 5
3 4
3 3
3 2
49
CL_SEL
GND_A
VDD_REG_1V8
PA_OUT
L1
R4
R6
VDDIO
560R
0603
560R
0603
VDDIO
BLM21PG300SN1
0805
C2
0402
100n 16V
C7
0402
100n 16V
C8
0805
10u 16V
VDDIO
C12
100n 16V
0402
C11
10u 16V
0805
VCC
GND_A
Transceiver Module
C20
100n 16V
0402
C18
10u 16V
0805
C22
100p 25V
0402
R15
130R
0402
R16
330R
0402
VDDIO
R17
10K
0402
1 CL_SEL
Q1
2N7002
Current Limit Setting
GSPG25092014DI1530
DocID026935 Rev 3 35/47
47
Schematic diagrams and bill of material UM1818
Figure 13. Schematic diagram (2 of 5)
LD2
R39
R40
VDDIO
560R
0603
560R
0603
PLC_RESETN
VDDIO
HSMF-C155
LEDSMD
R5
LED_RED
LED_GREEN
BOOT1
JTAG_TDO
JTAG_TRST
330R
0402
PLM_GPIO6
PLM_GPIO7
C5
22p 50V
C9
0402
22p 50V
0402
BT1
PLM_GPIO4
PLM_GPIO5
PL_RX_ON
PL_TX_ON
SPI_NSS
SPI_SCK
SPI_MISO
SPI_MOSI
FOXSDLF/080-20
X2
VBAT
R11
1M
0402
CR2032/1HF
L3
BLM18AG102SN1D
0603
VDDIO
VDDA
C14
10u 16V
0805
25
26
27
28
45
46
21
22
1 8
1 9
2 0
3 9
40
41
42
43
U1
P B0
P B1
P B2/BOOT1
PB3/JTDO
PB4/JNTRST
PB5
PB6
PB7
PB8
PB9
PB10
PB11
PB12
PB13
PB14
PB15
5
6
OSC_IN/PD0
OSC_OUT/PD1
PA0-WKUP
PA1
PA2
PA3
PA4
PA5
PA6
PA7
PA8
PA9
PA10
PA11
PA12
PA13/JTMS/SWDIO
PA14/JTCK/SWCLK
PA15/JTDI
PC13/TAMPER_RTC
PC14/OSC32_IN
PC15/OSC32_OUT
1
VBAT BOOT0
NRST
2 4
3 6
48
9
VDD_1
VDD_2
VDD_3
VDDA
IC-STM32F103CBT7
VSS_1
VSS_2
VSS_3
VSSA
C15
100n 16V
0402
2
3
3
5
47
8
1
1
0
1
12
13
14
15
16
17
2
3
4
44
7
2
3
31
32
9
0
33
34
37
38
VDDIO
C23
10u 16V
0805
C37
100n 16V
0402
C38
100n 16V
0402
C39
100n 16V
0402
VDDIO
R14
10K
0402
T_REQ
PLC_RXD
PLC_TXD
PLM_GPIO0
PLM_GPIO1
PLM_GPIO2
PLM_GPIO3
(uP Tx)
(uP Rx)
8MHZ_MCO
USART_TX
USART_RX
STM32_USB_DM
STM32_USB_DP
JTAG_TMS
JTAG_TCK
JTAG_TDI
C3
10p 50V
X1
0402
MC-306
C6
OSC32_IN
OSC32_OUT
BOOT0
RESET_uP
R13
10K
0402
R12
10K
0402
10p 50V
0402
C13
100n 16V
0402
VDDIO
GSPG25092014DI1535
Figure 14. Schematic diagram (3 of 5)
TP1
ZC_IN VCC_A VCC_A
C29
ZC_IN
R32
10M
0402
100n 16V
0402
R19
22K
0402
Q2
BC847
SOT23
4
U3
3
HCPL-181-000E
R30
33K
0402
GND_A GND_A
1
2
R22
100K
0805
R18
33K
1206
R25
33K
1206
D1
STTH1L06A
DO-214AC
L
R26
33K
1206
N
GSPG25092014DI1545
36/47 DocID026935 Rev 3
UM1818 Schematic diagrams and bill of material
Figure 15. Schematic diagram (4 of 5)
C25
100p 25V
0402
VCC
TP2
TX_OUT
TX_OUT
C31
R24
47K
0402
R27
100n 16V
0402
1K5
R33
0402
47K
0402
R28
5K1
C33
1n 50V
0402
0402
C26
27p 50V
0402
C28
100n 16V
0402
R20
10K
0402
PA_IN-
R29
PA_IN+
22K
0402
C34
100p 25V
0402
C27
0402
4.7p 50V
R21
33K
0402
PA PA_OUT
VCC
R23
24K
0402
R31
24K
0402
VCC
D2
STPS1L30A
DO-214AC(SMA)
C30
10u 50V
1210
D3
STPS1L30A
DO-214AC(SMA)
R34
150R
0603
TP3
1
RX_IN
RX_IN
C35
10n 50V
0603
Power Line Coupling Section
L5
SMD
C36
18n 50V
0603
8
ZT1
1:1
1
5
D5
SMAJ5.0CA
DO214
4
L4
GSPG25092014DI1550
Figure 16. Schematic diagram (5 of 5)
JTAG Interface
VDDIO
RP3
4 x 10K
CAT16-J4
R7
JTAG_TRST
JTAG_TDI
JTAG_TMS
JTAG_TCK
JTAG_TDO
RESET_uP
10K
0402
J1
7
8
5
6
3
4
1
2
90120-0768
GSPG25092014DI1555
COMM
C32
L
220n X2 250Vac
18x8x16
D4
SM6T15CA
SMB
N
COMM
L
N
J2
5
4
3
2
1
90121-0765
DocID026935 Rev 3 37/47
47
B.2
Part type
100n 16V
10p 50V
22p 50V
10µ 16V
47µ 16V
100p 25V
27p 50V
4.7p 50V
10µ 50V
Bill of material (BOM)
MI code
MI0156
MI0207
MI0136
Design.
C1, C2, C4, C7,
C10, C12, C13,
C15, C19, C20,
C24, C28, C29,
C31, C37, C38,
C39
Footprint
Table 1. Bill of material
Description Qty Manufacturer
0402_C
Ceramic capacitor 100n
16V 0402
17 0402YG104ZAT2A
C3, C6
C5, C9
C8, C11, C14,
C18, C21, C23
C16
C17, C22, C25,
C34
C26
C27
C30
0402_C
0402_C
0805S_C
0805S_C
0402_C
0402_C
0402_C
1210
Ceramic capacitor 10p
50V X7R 5%
Ceramic capacitor 22p
50V
Ceramic capacitor 10µ
16V X5R 10%
Ceramic capacitor 47µ
16V 0805 +/-
15%
Ceramic capacitor 100p
25V 0402
Ceramic capacitor 27p
50V COG 0402
Ceramic capacitor 4.7p
50V COG 0402
Ceramic capacitor 10µ
50V 1210 X7R
2
2
6
1
4
1
1
1
04025A100DAT2A
GRM1555C1H220JZ
01D
GRM21BR61C106K
E15L
GRM21BR61C475K
A88L
04023A101JAT2A
GRM1555C1H270JA
01D
GRM1555C1H4R7B
A01D
UMK325BJ106MM-T
Order code
698-3190
698-3065
624-2187
723-6039
723-6041
698-3055
723-5402
723-5436
758-3486
Part number Order code 2
Part type
220n X2 250Vac
MI code
1n 50V
10n 50V
18n 50V
STTH1L06A
STPS1L30A
SM6T15CA
SMAJ5.0CA
90121-0765
010883121
BLM21PG300SN1
BLM21PG331SN1
MI0020
Design.
C32
C33
C35
C36
D1
D2, D3
D4
D5
J2
J3, J4
L1
L2
Table 1. Bill of material (continued)
Footprint Description Qty Manufacturer
RADX2-152
0402_C
0603S_C
0603S_C
DO214AA
SMA_DIODE
SMB
DO214
SIP5_RA
Metalized polyester film dielectric 220n
250Vac pitch
15mm
Ceramic capacitor 1n
50V X7R 10%
Ceramic capacitor 10n
50V X7R 10%
Ceramic capacitor 18n
50V
Diode fast recovery
Low drop power schottky rectifier 1A 30V
0.3V
TRANSIL diode
15V 600W
Diode TVS bidirectional 5V
400W
DO214AC
Connector male
2.54mm pitch
SIL RA
FKV12LN_STR
IP_MIRROR
0805S
0805S
EMI filter 30R
100 MHz 0805
EMI filter 330R
100 MHz
1
1
1
1
1
2
1
1
1
2
1
1
ECQU2A224ML
04025C102KAT2A
C0603C103K5RAC
C0603C183K5RACT
U
STTH1L06A
STPS1L30
SM6T15CA
SMAJ5.0CA
90121-0765
010883121
BLM21PG300SN1
BLM21PG331SN1
Order code
1198297
698-3131
264-4595
1865536RL
8165505
485-8061
436-9757
764-5568
724-1545
Part number Order code 2
CL10B183KB8
NNNC
STTH1L06A
766-5392
485-8500
STPS1L30A 497-6577-1-ND
SMAJ5.0CA-TR 9802860RL
Part type
BLM21PG300SN1
BLM21PG331SN1
BLM18AG102SN1
D
10µ 2.0A
100µ 350mA
HSMF-C155
2N7002
BC847
10K
560R
330R
1M
130R
33K
MI code
MI0160
MI0127
MI0135
MI0167
Design.
L1
L2
L3
L4
L5
LD1, LD2
Q1
Q2
R11
R15
R18, R25, R26
Table 1. Bill of material (continued)
Footprint Description Qty Manufacturer
0805S
0805S
0603S
IND_WE-PD3
IND_6x6
HSMF-C655
SOT23
SOT23A
EMI filter 30R
100 MHz 0805
EMI filter 330R
100 MHz
EMI filter BLM
1K 100MHz
400mA
Inductor 10µ
2.0A 74454010
Inductor 100µ
350mA
LED Bi-color green/red SMD
N-channel
Trench
MOSFET
NPN 45 V, 100 mA generalpurpose transistors
1
1
1
1
1
2
1
1
BLM21PG300SN1
BLM21PG331SN1
BLM18AG102SN1D
74454010
B82462A4104K
HSMF-C155
2N7002
BC847
Order code
724-1545
230-3783
74454010
495-8032
486-0430
112-5526
445-2023
R2, R7, R8, R9,
R10, R12, R13,
R14, R17, R20,
R38
R4, R6, R39,
R40
R5, R16
0402_R
0603S_R
0402_R
0402_R
0402_R
1206S_R
Resistor 10K
0.0625W
11
Resistor 560R
0.1W 1%
Resistor 330R
0.0625W
Resistor 1M
0.0625W
Resistor 130R
0.0625W
Resistor 33K
0.33W 1%
4
2
1
1
3
CRG0402F10K
CRG0603F560R
CRG0402F330R
CRG0402F1M0
CRG0402F130R
CRCW120633K0FK
EA
667-8848
213-2238
667-8646
667-9065
667-8618
679-2055
Part number Order code 2
24K
47K
1K5
5K1
Part type
22K
33K
100K
10M
150R
22R
4 x 10K
IC-
STM32F103CBT7
MI code
MI0229
MI0069
Table 1. Bill of material (continued)
Footprint Description Qty Manufacturer Design.
R19, R29
R21, R30
R22
R23, R31
R24, R33
R27, R35
R28
R32
R34
R36, R37
RP1, RP2, RP3
RESPACK_CA
T/CAY_16
U1
0402_R
0402_R
0805S_R
0402_R
0402_R
0402_R
0402_R
0402_R
0603S_R
0402_R
LQFP48_STM
Resistor 22K
0.0625W 1%
Resistor 33K
0.0625W
Resistor 100K
0.125W 1%
Resistor 24K
0.0625W 1%
Resistor 47K
0.0625W 0.1%
Resistor 1K5
0.063W 1%
Resistor 5K1
0.0625W 1%
Resistor 10M
0.0625W
Resistor 150R
0.1W 1%
Resistor 22R
0.063W 1%
Respack SMD
4 x 10K 0.25
5%
STM32 ARMbased 32-bit
MCU with 64 kbytes Flash,
36-pin
VFQFPN, industrial temperature
2
2
1
2
2
2
1
1
1
2
3
1
CRG0402F22K
CRG0402F33K
CRG0805F100K
CRG0402F24K
CRG0402F47K
CRG0402F1K5
CRCW04025K10FK
ED
CRCW040210M0FK
ED
CRG0603F150R
CRG0402F22R
CAT16-103J4LF
STM32F103CBT7
Order code
667-8892
667-8933
223-0691
667-8909
667-8943
667-8707
678-9478
667-8709
213-2165
667-8558
522-5412
714-7689
Part number Order code 2
CAT16-
103J4LF
1770124
Part type
ST7580
HCPL-181-000E
USBLC6-2
MC-306
FOXSDLF/080-20
T60403-K5024-
X044
MI0211
MI code Design.
U2
U3
U4
X1
X2
ZT1
Table 1. Bill of material (continued)
Footprint Description Qty Manufacturer
VFQFPN48_7x
7x1
B-FSK, B-PSK,
Q-PSK, 8-PSK
Multi mode power line networking system on chip
SO-4
SOT666
TPSM32A
Phototransistor optocoupler
SMD Mini-Flat type
USB very low capacitance
ESD protection
Crystal 32.768 kHz
1
1
1
1
HCPL-181
USBLC6-2P6
MC-306
XTAL2
SMD Crystal
8.000 MHz
TRF_VAC5024
X044
Signal transformer 1:1
1
1
Order code
693-5277
624-7687
667-6117
8.000MHz
49USMX/30/50/-
40+85/18pF/ATF
693-8869
T60403-K5024-X044
T60403-K5024-
X044
Part number Order code 2
UM1818
Appendix C CRC 16 calculation
CRC 16 calculation
The CRC 16 is based on the X16 + X15 + X2 + 1 polynomial.
/* Used CRC 16 table */ const uint16_t TableCRC16[256] = {
0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241,
0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440,
0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40,
0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841,
0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40,
0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41,
0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641,
0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040,
0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240,
0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441,
0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41,
0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840,
0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41,
0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40,
0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640,
0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041,
0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240,
0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441,
0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41,
0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840,
0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41,
0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40,
0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640,
0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041,
0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241,
0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440,
0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40,
0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841,
0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40,
0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41,
0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641,
0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040
};
/* CRC function */
DocID026935 Rev 3 43/47
47
CRC 16 calculation UM1818
/*************************************************************************
******
* Function Name : CalcCRC16
* Description : Calculate a 16 bit CRC (X16 + X15 + X2 + 1)
* Input : Buffer pointer, buffer length
* Return : Calculated CRC
**************************************************************************
*****/ uint16_t CalcCRC16(uint8_t *buf, uint8_t len)
{
uint16_t crc = 0;
while (len--)
crc = (crc >> 8) ^ TableCRC16[(crc ^ (*(buf++))) & 0xff];
return (crc);
}
44/47 DocID026935 Rev 3
UM1818
5 Reference
Reference
1.
ARM-based 32-bit MCU STM32F10x standard peripheral library Rel. 3.5.0 (2011)
2. ST7580 FSK, PSK multi-mode power line networking SoC datasheets (2012)
3. UM0932 ST7580 FSK, PSK multi-mode power line networking SoC user manual
(2013)
4. AN4018 data link protocol for ST7580 PLM
5. IAR embedded workbench® IDE for STM32 microcontrollers Rel. 6.3 documentation
(www.iar.com)
DocID026935 Rev 3 45/47
47
Revision history
6 Revision history
Date
29-May-2015
29-Jul-2015
12-Dec-2016
Revision
Table 2. Document revision history
Changes
1
2
3
Initial release
Figure 4 has been updated
Updated:
-
Figure 1.: STEVAL-IHP007V1 evaluation board
-
Figure 2.: STEVAL-IHP007V1 block diagram
UM1818
46/47 DocID026935 Rev 3
UM1818
IMPORTANT NOTICE – PLEASE READ CAREFULLY
STMicroelectronics NV and its subsidiaries (“ST”) reserve the right to make changes, corrections, enhancements, modifications, and improvements to ST products and/or to this document at any time without notice. Purchasers should obtain the latest relevant information on
ST products before placing orders. ST products are sold pursuant to ST’s terms and conditions of sale in place at the time of order acknowledgement.
Purchasers are solely responsible for the choice, selection, and use of ST products and ST assumes no liability for application assistance or the design of Purchasers’ products.
No license, express or implied, to any intellectual property right is granted by ST herein.
Resale of ST products with provisions different from the information set forth herein shall void any warranty granted by ST for such product.
ST and the ST logo are trademarks of ST. All other product or service names are the property of their respective owners.
Information in this document supersedes and replaces information previously supplied in any prior versions of this document.
© 2016 STMicroelectronics – All rights reserved
DocID026935 Rev 3 47/47
47
ダウンロード
広告