Showing posts with label serial. Show all posts
Showing posts with label serial. Show all posts

Thursday, 16 August 2018

Silicon Labs SI8380S example design

Summary
This blog details the design and testing of a circuit board 'PCB' for the Silicon Labs SI8380S Digital Isolator PLC input device. The circuit board was designed to use the Arduino compatible pin layout with the code developed for the Cypress CY8CKIT-042 development board using PSoC Creator.

Silicon Labs Digital Isolator
In a previous blog, the approach of implementing PLC inputs using discrete components was reviewed for Single Board Computer such as the Raspberry Pi and Beagle. The use of the Silicon Labs eight input digital isolator could be considered a progression on the discrete solution. Some benefits in using the digital isolator pertain to component count reduction, localised solution, and the option of using a serial interface (SPI).

Schematic Design
Silicon Labs provide a basic application schematic in Application Note 970 which serves as a starting point for the design.


Silicon Labs Example Application Schematic
Silicon Labs Example Application Schematic
The Silicon Labs device datasheet and the aforementioned application note also detail resistor values for achieving the necessary IEC PLC Input Types from 1 to 3.


Silicon Labs Suggested Resistor Values
Silicon Labs Suggested Resistor Values
Even though there is little mention of input protection for the design, additional parts were included on the Arduino compatible board for the purposes of testing.


Silicon Labs Alternative PLC Input Section
Silicon Labs Alternative PLC Input Section
The schematic displayed above was designed for testing five possible input circuit configurations. Some parts in the schematic are superfluous because of the technology used inside the Silicon Labs device. This is explained later in the blog.

1. Diodes - D1, D2, D3 not fitted. D2 replaced with a zero ohm link. This design is representative of the Silicon Labs design.

2. Diodes - D1, D3 not fitted. Using a single forward biased diode would commonly provide reverse polarity protection for a PLC input circuit. When a diode is used on the test PCB, the bipolar input behaves as a unipolar input in a sinking configuration. No overvoltage protection would be provided to the input of the Silicon Labs device.

3. Diode - D2 not fitted. Using the series Zener reduces the power dissipation in the resistors and provides overvoltage protection for the input of the Silicon Labs device. The inclusion of the series Zener also changes the turn ON and OFF characteristics of the circuit.

4. Diodes - D1, D2 not fitted. D2 replaced with a zero ohm link. The design provides overvoltage protection for the input of the Silicon Labs device and retains the turn ON and OFF characteristics of the circuit.

5. Diode - D1 not fitted. The design provides overvoltage with the Zener and would commonly provide reverse polarity protection. The series Schottky diode would only result in a slight deviation in turn ON and OFF characteristics of the circuit because the low forward drop of a Schottky.

Capacitor C3 was added for signal conditioning.


Arduino Pin Compatible Silicon Labs Adaptor Design
Arduino Pin Compatible Silicon Labs Adaptor Design
PCB Design
The board layout and connector placement was borrowed from an Arduino Uno board and verified against the Cypress CY8CKIT-042 development board.


Arduino Pin Compatible 8 Input Silicon Labs Prototype PCB
Arduino Pin Compatible 8 Input Silicon Labs Prototype PCB
Some prior checking using a Cypress Creator project was required to ensure that the pins chosen for SPI communications would be compatible with the Cypress SPI component and the development board.

PCB Population
Only relevant components and a single input channel were populated for initial testing of the PLC prototype PCB. The image below shows the unpopulated prototype.


Prototype PCB for Silicon Labs SI8380S
Prototype PCB for Silicon Labs SI8380S
Obligatory test points were soldered to the board to observe the data exchange on SPI with the Silicon Labs device. 

Cypress Development Board
A connection for a UART was added on the Cypress development board. A connection was made between the on-board PSoC4 and PSoC5 (Kitprog) devices to provide debug information during code development.

Arduino Pin Compatible 8 Input Silicon Labs Constructed Prototype
Silicon Labs Prototype Input Circuit 1
For the following tests conducted, a series of measurements were taken with tabulated data detailed after the last test.

Testing Input Circuit 1
As shown in the above capture only resistors R1 and R2 were fitted to the prototype, with input diode D2 replaced with a zero ohm link.

Turn on 7.7VDC and Turn off 7.1VDC

Testing Input Circuit 2
As shown in the capture below, diode D2 and resistors R1 and R2 were fitted to the prototype.

Turn on 7.9VDC and Turn off 7.3VDC


Silicon Labs Prototype Input Circuit
Silicon Labs Prototype Input Circuit 2
Testing Input Circuit 3
As shown in the next capture below, diodes D1, D2 and resistors R1, R2 were fitted to the prototype.

Turn on 12.8VDC and Turn off 12.2VDC


Silicon Labs Prototype Input Circuit
Silicon Labs Prototype Input Circuit 3
Testing Input Circuit 4
As shown in the next capture below, diode D3 and resistors R1, R2 were fitted to the prototype. Diodes D1 and D2 were not fitted and D2 was replaced with a zero ohm link.

Turn on 7.7VDC and Turn off 7.1VDC


Silicon Labs Prototype Input Circuit
Silicon Labs Prototype Input Circuit 4
Testing Input Circuit 5
As shown in the last capture below, diodes D2, D3 and resistors R1, R2 were fitted to the prototype. Diode D1 was not fitted.

Turn on 7.9VDC and Turn off 7.3VDC


Silicon Labs Prototype Input Circuit
Silicon Labs Prototype Input Circuit 5


Input Circuit Initial Measurement Data
Input Circuit Initial Measurement Data
As expected only input circuit 3, with the series Zener D1 on the input, was significantly different. One item to note is the reduction in total resistor power dissipation due to the addition of the Zener.

The diodes used for testing were manufactured by Diodes Incorporated. The Zener diodes being part BZT52C5V1 and the Schottky diode part SBR1A40S3. All resistors were from ROHM in a 1206 case, rated at 500mW.

Modified Input Circuit 3
The range of Silicon Labs PLC input devices are compliant to the IEC_61131-2:2003 standard. To modify the input circuit 3 with the Zener diode the turn On voltage was reduced. The IEC_61131-2 standard for a Type 3 input specifies 11V to 30V for a 'Signal 1' or logic high.


Silicon Labs Prototype Input Circuit
Silicon Labs Prototype Input Circuit 3 - Modified
Resistor R2 was reduced from 2k7 to 1k8 by placing a 5k62 resistor in parallel, as shown in the capture above. The same series of measurements were performed with the modified input circuit. Tabulated data with the modified input, 3 Mod, is shown below.


Input Circuit Measurement Data
Input Circuit Measurement Data
Using the 1k8 resistor was not ideal because the measured voltage for Turn On is close to the 11V required by the IEC standard. Changing R1 and R2 may provide a better result with respect to the requirements of the IEC standard.

PSoC SPI 
A PSoC Creator project was used to read data from the SI8380S using either SCB or UDB components. The default project settings could possibly be modified for faster performance of the SPI. System clock for example could be increase from 24MHz to the maximum 48MHz. 

For an example, a signal generator set at 10 kHz with a DC offset was used to drive the SI8380S. The green trace in the capture below shows the output of the signal generator. The yellow trace is an output pin on the PSoC which is driven in response to the SI830S data.


Silicon Labs SI8380S PSoC Signals - Turn ON Delay
Silicon Labs SI8380S PSoC Signals - Turn ON Delay

The listing below shows the code used for initial testing.



/*******************************************************************************
* File Name: main.c
*
* Version: 1.0
*
* Description:
* This example project demonstrates the use of the Silicon Labs SI8380S
* https://www.silabs.com/documents/public/data-sheets/Si838x-DataSheet.pdf
*
* Hardware Connections
* MOSI  P0.4
* MISO  P0.5
* SCK   P0.6
* SS    P0.7
*
*******************************************************************************/
#include <main.h>
#include <stdbool.h>

/* Defines for SI8380S registers */
#define SI8380_CHAN_STATUS      0x0             /* Status of the eight PLC inputs */          
#define SI8380_DBNC_MODE0       0x1             /* Mode control bits for the first four channel debounce filters */
#define SI8380_DBNC_MODE1       0x2             /* Mode control bits for the second four channel debounce filters */
#define SI8303_DBNC_DLY0        0x3             /* Delay control bits for the first four channel debounce filters */
#define SI8380_DBNC_DLY1        0x4             /* Delay control bits for the second four channel debounce filters */

/* Define bits used in control bytes */
#define DELAY_0MS               0x00
#define DELAY_10MS              0x01
#define DELAY_30MS              0x10
#define DELAY_100MS             0x11
#define DBNC_NO_FILTER          0x00
#define DBNC_LP_FILTER          0x01
#define DBNC_LEADEDGE_FILTER    0x10
#define SI8380S_BRCT            0x80            /* Broadcast = 1, Address a device = 0 */
#define SI8380S_RW              0x40            /* Read = 1, Write = 0 */

/* Define UDB or SCB */
#define SCB_BLOCK_USED                        /* 0.24 Mbps with x 10 sampling */
//#define UDB_SPI_BLOCK                           /* 6 Mbps max */
#define debug                                 /* Transmit only to terminal at 115200, 8, N, 1 */

/* SPI registers */
uint8 SI8380S_Control;
uint8 SI8380S_Address;
uint8 SI8380S_R_Data;
uint8 SI8380S_W_Data;


/* Function prototypes */
uint8 SI8380S_Read(uint8 spi_r_control, uint8 spi_r_address);
void SI8380S_Write(uint8 spi_w_control, uint8 spi_w_address, uint8 spi_w_data);


/*******************************************************************************
* Function Name: SI8380S_Read
*******************************************************************************/
uint8 SI8380S_Read(uint8 spi_r_control, uint8 spi_r_address)
{
    uint8 data_temp_buf;

    #ifdef SCB_BLOCK_USED
        SPIM_SpiUartWriteTxData(spi_r_control);
        SPIM_SpiUartWriteTxData(spi_r_address);
        SPIM_SpiUartWriteTxData(0x00);   
        // init task timeout
        while (SPIM_SpiUartGetRxBufferSize() == 0);                 /* Has any data been received */
        // reset task timeout
        data_temp_buf = SPIM_SpiUartReadRxData();
    #endif

    #ifdef UDB_SPI_BLOCK
        SPIM_WriteTxData(spi_r_control);
        // init task timeout
        while (!(SPIM_ReadTxStatus() & SPIM_STS_BYTE_COMPLETE));    /* Wait until byte complete to reassert Slave Select */
        // reset task timeout
        // init task timeout
        SPIM_WriteTxData(spi_r_address);
        while (!(SPIM_ReadTxStatus() & SPIM_STS_BYTE_COMPLETE));    /* Only continuous mode for a UDB component  */
        // reset task timeout
        // init task timeout
        SPIM_WriteTxData(0x00);
        while (!(SPIM_ReadTxStatus() & SPIM_STS_BYTE_COMPLETE));    /* SCB component may be more suitable */       
        // reset task timeout
        // init task timeout
        while (SPIM_GetRxBufferSize() == 0);                        /* Has any data been received */
        // reset task timeout
        data_temp_buf = SPIM_ReadRxData();   
    #endif

    return data_temp_buf;
}

/*******************************************************************************
* Function Name: SI8380S_Write
*******************************************************************************/
void SI8380S_Write(uint8 spi_w_control, uint8 spi_w_address, uint8 spi_w_data)
{
    #ifdef SCB_BLOCK_USED
        SPIM_SpiUartWriteTxData(spi_w_control);
        SPIM_SpiUartWriteTxData(spi_w_address);
        SPIM_SpiUartWriteTxData(spi_w_data);
        // init task timeout
        while (SPIM_SpiUartGetRxBufferSize() == 0);                 /* Has any data been received */
        // reset task timeout
    #endif

    #ifdef UDB_SPI_BLOCK
        // init task timeout
        SPIM_WriteTxData(spi_w_control);
        while (!(SPIM_ReadTxStatus() & SPIM_STS_BYTE_COMPLETE));
        // reset task timeout
        // init task timeout
        SPIM_WriteTxData(spi_w_address);
        while (!(SPIM_ReadTxStatus() & SPIM_STS_BYTE_COMPLETE));
        // reset task timeout
        // init task timeout
        SPIM_WriteTxData(spi_w_data);
        while (!(SPIM_ReadTxStatus() & SPIM_STS_BYTE_COMPLETE));
        // reset task timeout
    #endif
}

/*******************************************************************************
* Function Name: main
*******************************************************************************/
int main()
{
    /* Start components */
    spim_sck_Write(false);
    CyDelay(1);
    Spim_sck_Write(true);                                              /* Resync the SI8380 state machine */
    SPIM_Start();
    UART_Start();
    CyGlobalIntEnable;
    UART_PutString("Start\r\n");
    uint8 channel_data, channel_data_old = 0;
    for(;;)
    {
        channel_data = SI8380S_Read(SI8380S_RW, SI8380_CHAN_STATUS);    /* Update data */
        #ifdef debug
         if (channel_data != channel_data_old)
         {
            UART_PutChar(channel_data);      /* Read data continuously */
            CyDelay(250);
            channel_data = channel_data_old;
         }
        #endif
    }
}
/* [] END OF FILE */


Completed PCB 
The PCB was loaded with a single Schottky diode and the two resistors associated with the divider for each input.


Silicon Labs Prototype - Completed
Silicon Labs Prototype - Completed
Testing was conducted with RealTerm acting as the terminal monitor.


Silicon Labs Prototype - Serial Monitor Output
Silicon Labs Prototype - Serial Monitor Output
Each input was turned ON in sequence to prove operation.

Excessive Input Voltages
As a final destructive test the input voltage to the board was increased from 24V DC in 2V steps until system failure. All PLC inputs were configured as type 2, series diode and resistor divider only.

A Rigol DP832 was used to increase the voltage with voltage measurements performed at the PLC input connector of the prototype board. Results for the measurements are shown below.


Prototype PLC: Input Voltage vs SI8380S AHx Voltage
Prototype PLC: Input Voltage vs SI8380S AHx Voltage
Graphed results for the above measurements.


Prototype PLC: Graphed Input Voltage vs SI8380S AHx Voltage Results
Prototype PLC: Graphed Input Voltage vs SI8380S AHx Voltage Results
At some voltage above 62V DC the SI8380S ceased SPI communications with the Cypress controller. When the cause of failure could not be determined the SI8380S was replaced and operation was confirmed again at 24V DC. The second device was not provided with more than 60V DC consequently the SI8380S may operate with higher input voltages.

Summary
For a minimal external support component count, the range of Silicon Labs isolated PLC input isolators is an obvious rival to similar devices available in the market.

The limited testing in this blog showed more than acceptable performance with a single Silicon Labs SI8380S over a range of input voltages from 24V to 60V DC with the SPI interface. 

Isolation voltages were not tested or verified in this blog.

Downloads
PLC Input Schematic
PLC Input Schematic
PLC Input Gerbers
PLC Input Gerbers

PSoC Creator 4.2 Silicon Labs Project
PSoC Creator 4.2 Silicon Labs Project



Monday, 12 February 2018

Win 10 Serial Terminal software max baud rate

Summary
This purpose of this blog was to identify the maximum baud rate of several Windows 10 serial port terminal programs when used with an FTDI USB to TTL adaptor which had a specified rate of 3Mbaud.

Addendum: PCTerm 3.7 added to test results for testing 3Mbaud.

Test Setup
A Cypress PSoC development kit CY8CKIT-042 was configured with a UART component to repeatedly send the sequence of capitilised letters A to Z. 


PSoC and FDTI Test Setup
PSoC and FDTI Test Setup
The associated transmit output and 0V reference from the development kit were connected to the receive input and 0V on the FTDI USB to TTL adaptor (TTL-232R-RPi).


FDTI TTL-232R-RPi Adaptor
FDTI TTL-232R-RPi Adaptor
The USB side of the FTDI adaptor was connected to a Windows 10 laptop for the duration of the software testing. Specifications for the laptop are shown below.


Windows 10 Test System Specifications
Windows 10 Test System Specifications

Validation Criteria
There were only two criteria that the software needed to fulfil in order to be accepted as a pass for this test.

1. Display the characters A - Z on the terminal software in either ASCII or HEX and

2. Terminal software should still be useable - meaning not crash, lockup or become unresponsive for the duration of the test


Test Software
Listed below are the ten Windows terminal applications that were tested.

1. Advanced Serial Port Monitor

2. CoolTerm

3. Hype!Terminal

4. Muterm2

5. Putty

6. RealTerm

7. Serial Port Terminal

8. TeraTerm

9. Termite

10. XShell5

11. PC Term 3.7


Test Results
It should be noted that this test was performed under the conditions detailed below.

1. The various Windows terminal applications were used for receiving characters only,

2. Some of the various Windows terminal applications were used in their trial installation mode or the latest Beta of the application,

3. Some Windows terminal applications did have faster baud rates which were not tested,

4. Only standard baud rates such as 115200, 230400, 460800, 921600 and higher were used while determining the maximum receive baud rate of the Windows terminal applications for this specific hardware setup.


Windows Terminal Software Max Data Rate Test Results
Windows Terminal Software Max Data Rate Test Results
PCTerm was added to this blog, post publishing and it was proven to be the fastest in data rate for displaying ASCII text. RealTerm was the fastest in data rate for displaying data in Hex.

Other notable mentions; Putty, Hype!Term and Advanced Serial Port Monitor.

Test Notes
During testing TeraTerm performed without any issues receiving data at 921600 baud.


TeraTerm Receiving Data at 921600
TeraTerm Receiving Data at 921600
Similarly with RealTerm the receive window configured to display in ASCII no issues were noted.

RealTerm Receiving Data at 921600 - ASCII Displayed
RealTerm Receiving Data at 921600 - ASCII Displayed
Changing RealTerm to display in HEX at 921600 resulted in slow performance and issues relating to the onscreen refresh. Reducing the baud rate to 460800 resolved the display issues. Similarly adding a 1us delay between characters at 921600 resolved the onscreen refresh.

RealTerm Receiving Data at 921600 - HEX Displayed
RealTerm Receiving Data at 921600 - HEX Displayed
PCTerm 3.7 performed at 3Mbaud without any issues to display ASCII.


PCTerm Receiving Data at 3Mbaud - ASCII Displayed
PCTerm Receiving Data at 3Mbaud - ASCII Displayed

Test Code
Basic test code with an option to add inter-character delays.

/* ========================================
*
* Example Terminal Speed Test PSoC4
*  
* Revision:    1.00
* Date:        10/02/2018

* 10/02/2018   1.00     Test release
*
* Released as GPL
*
* ======================================== */
#include <project.h>
#include <stdio.h>
#include <stdbool.h>


int main()
{   
    uint8 count_i;                               /* Define for loop counter var */
    uint16 char_delay = 0;                  /* Define intercharacter character delay in ms*/
    
    CyGlobalIntEnable;                      /* Enable global interrupts. */
    UART_Start();
    while (SW1_Read() == true);     /* Wait for button press */
    UART_UartPutString("Start");
    
    for(;;)
    {
        count_i = 65u;
        while (count_i <= 90u) {
            UART_UartPutChar(count_i);
            if (char_delay != 0u) {
                CyDelayUs(char_delay);
            }
            count_i++;
        }
    }
}

/* [] END OF FILE */


PSoC Creator Changes for PCTerm
The default HFClock 'HFClk' for the PSoC Creator UART is 24MHz. As this clock rate results in only 1.5Mbaud, the HFClock was increased to 48MHz.


PSoC Creator HFClk Increase to 48MHz
PSoC Creator HFClk Increase to 48MHz
Using the UART SCB component with an external 48MHz clock resulted in the required 3Mbaud data rate.


PSoC Creator Top Design SCB UART with 24MHz External Clock
PSoC Creator Top Design SCB UART with 24MHz External Clock
The properties of the SCB UART displayed the 3Mbaud UART data rate.


PSoC Creator SCB UART at 3Mbaud
PSoC Creator SCB UART at 3Mbaud

Summary
PCTerm, RealTerm and TeraTerm are noteworthy Windows based serial terminal applications which would serve hobbyists and professionals alike. Personally, i am habitual in installing software such as RealTerm and TeraTerm on computers involved in software or hardware development. Further to the recent addendum testing PCTerm, this application may replace TeraTerm in some instances.

It should be noted that each of the terminal applications mentioned in this blog were tested for the specific purpose of receiving with a high baud rate. When choosing a suitable serial terminal application, each specimen of software should be reviewed under its own merit to ensure its suitability for the intended task.

When a more comprehensive look at data is required then a protocol analyser is usually required. These solutions range from all in one devices such as the Analog Discovery 2 by Digilent to dedicated input only products such as the Saleae Logic devices to high end products from Keysight. From experience, even the low cost Digilent Analog Discovery 2 will efficiently record and display the character test performed in this blog!

Tuesday, 9 January 2018

Prolific USB To Serial Code 10 Windows 10 Networked

Summary
Windows device driver Code 10 issues, with legacy Prolific adaptors or counterfeit chips have been investigated by countless people, there however remains instances where many solutions fail to work. 

This blog contains a step by step guide which aims at addressing the Code 10 issue for Windows 10 networked installations (domain) and possibly earlier Windows versions, when current internet listed solutions or the newer Prolific driver 3.8.18.0 driver may not work.

From experience, either the newer Prolific driver for Windows 10 or the guide detailed in the blog, have resolved the issue on networked Windows 10 machines having the code 10.

Why Another Fix
The first reason for this fix relates to Windows 10 computers on a workplace network (domain) where software and driver updates are applied in a blanket roll out, when a newer driver version is available. This is an accepted process that facilitates software improvements however the process is troublesome when there are either driver or hardware related issues. This issue can be addressed by preventing the driver update of the specific USB device.

The second reason for this blog relates to online software fixes released with little or no explanation as to what software mechanisms are under the hood. Running an executable from an unknown website leaves me personally with an uneasy feeling. Installing some malevolent software on a home computer limits exposure to possibly a few computers. Installing the same software on a workplace network, with possibly dozens or more networked computers, is an entirely different matter.

Certainly there are noteworthy websites with documented / packaged fixes that can be tested if not done so already.

http://www.ifamilysoftware.com/news37.html

http://dronespersonalizados.blogspot.com.au/2014/03/pl2303-error-code-10-how-to-fix-windows.html

http://www.totalcardiagnostics.com/support/index.php?/Knowledgebase/Article/View/92

Description of the Fix
Fixing the driver issue (Code 10) can be achieved in four steps.

Step 1. With the Prolific USB adaptor fitted to the target computer, uninstall the Windows Prolific driver from Device Manager for that USB port.

Step 2. With the Prolific USB adaptor fitted in the same port, install the Prolific driver version applicable to the Prolific hardware used. This step may require some experimentation with earlier Prolific driver versions. Version 3.3.2.102 worked for both my Windows 10 installations. Prolific 3.3.2.102 compressed file here on Google drive. This driver is signed and should not be used otherwise.

Step 3. Repeat steps 1 and 2 for all USB ports on the computer, including any USB hubs or docking stations connected to the computer where the Prolific USB device may be connected.

Step 4. Change the local computer Windows Group Policy settings to prevent updates for only that Prolific USB device. For changes to be applied using the Group Policy Editor, the computer must be connected to the relevant Domain. The Group Policy can then updated to prevent Windows Updates for USB devices matching the Prolific USB VID and PID.

Process Explained
The image below is a capture of the Windows 10 Device Manager showing the yellow icon for the Prolific USB to Serial adaptor.


Device Manager Prolific USB to Serial - Code 10
Device Manager Prolific USB to Serial - Code 10
Step 1.
With the Prolific USB device installed, remove the Prolific driver by opening the Properties of the USB device shown in Device Manager.


Device Manager Prolific USB to Serial - Driver
Device Manager Prolific USB to Serial - Driver
Navigate to the Driver tab and click the Uninstall Device button.

Step 2.
Install the suitable Prolific driver for computer and operating system. For a Windows 10 installation on a laptop the Prolific driver version 3.3.2.102 was found to be suitable. This version may vary for other hardware types and Windows installations.
Device Manager Prolific USB to Serial - New Driver
Device Manager Prolific USB to Serial - New Driver

Step 3. 
Repeat the process for each USB port associated with the computer.

On the example laptop used for this blog, using the Prolific USB device on a second USB port results in a new serial port enumeration as shown in the image below. 


Device Manager Prolific USB to Serial - Code 10
Device Manager Prolific USB to Serial - Code 10
Again with the Prolific USB device installed, remove all newer Prolific drivers by opening the Properties of the USB device shown in Device Manager.


Device Manager Prolific USB to Serial - Driver
Device Manager Prolific USB to Serial - Driver
Navigate to the Driver tab and click the Uninstall Device button.


Device Manager Prolific USB to Serial - New Driver
Device Manager Prolific USB to Serial - New Driver

Step 4.

With the computer connected to the computer Domain and the Prolific USB device still installed, open the Properties of the Prolific USB device shown in Device Manager.


Device Manager Prolific USB to Serial - Hardware ID
Device Manager Prolific USB to Serial - Hardware ID
Navigate to the Details tab. 

From the Property drop down list box select the Hardware ID's item. As the information displayed will be used when configuring the Windows Group Policy this window can be left open.

From the Windows Start open the Group Policy Editor by typing gpedit.msc. If the installation is Windows 10 Home the Group Policy Editor will not be found - possibly disabled in Home editions. 


Windows 10 Group Policy Editor
Windows 10 Group Policy Editor
With the Group Policy Editor open, navigate to the Administrative Templates folder, then System, then Device Installation.


Windows 10 Group Policy Editor  - Device Installation
Windows 10 Group Policy Editor  - Device Installation
Select the Device Installation Restrictions folder then in the Window pane to the right, double click the item Prevent installation of drivers that match any of these device ID's. A new window will be displayed.


Windows 10 Group Policy Editor  - Device Installation Restrictions
Windows 10 Group Policy Editor  - Device Installation Restrictions
Click the Enabled radio button in the top left of the window.


Windows 10 Group Policy Editor  - Device Installation Restrictions Enabled
Windows 10 Group Policy Editor  - Device Installation Restrictions Enabled
Click the Show button to configure the Prolific USB ID.


Windows 10 Group Policy Editor  - Device Installation Restrictions Empty ID
Windows 10 Group Policy Editor  - Device Installation Restrictions Empty ID
Switch back to Device Manager and copy the first entry from the Hardware ID.


Device Manager Prolific USB to Serial - Hardware ID
Device Manager Prolific USB to Serial - Hardware ID

Paste this information into the Group Policy Editor. Repeat for process for the second line in Device Manager. The result should be similar to the image shown below.

Windows 10 Group Policy Editor  - Device Installation Restrictions Updated ID
Windows 10 Group Policy Editor  - Device Installation Restrictions Updated ID
Close all windows and restart the computer so that the Group Policy changes are applied.

Driver updates should no longer be applied to that specific USB device.

Note on Limitations - Updating Drivers
Should a similar Prolific or other 'grey' USB device with the same VID and PID require a driver change, then the Windows 10 Group Policy Editor  - Device Installation Restrictions must be changed to Not Configured or Disabled.

Attempting to update the driver, without disabling the installation restriction, will result in a window similar to the image shown below.


Device Manager Update Driver - Forbidden System Policy
Device Manager Update Driver - Forbidden System Policy

Hope this fix helps!

Downloads
Prolific driver 3.3.2.102
Prolific driver 3.3.2.102