Skip to main content
rumlyen
Associate III
May 1, 2016
Question

Issues with composite VCP+MSC: VCP not working

  • May 1, 2016
  • 2 replies
  • 608 views
Posted on May 01, 2016 at 17:49

Hello,

I am stuck in implementing USB composite (VCP+MSC) using FS-Device_Lib_V4.0.0 (STM32L151). Individually both works but when I try composite VCP+MSC, MSC works well but PC can't communicate via VCP (although it can recognize as COM port).

I've edited .inf file and updated device descriptions. What else I am missing to config?

I request your suggestion how to fix this issue.

Thank you in advance.

NB: I'm using ENDP1 in+out for MSC, ENDP3 in+out for VCP, ENDP2 in for VCP interrupt. End point address combined as:

#define BTABLE_ADDRESS        (0x00)

#define ENDP0_RXADDR        (0x0040)

#define ENDP0_TXADDR        (0x0080)

/* EP1 MSC  */

#define ENDP1_TXADDR        (0x0150)

#define ENDP1_RXADDR        (0x0190)

/* EP2 VCP Int*/

#define ENDP2_TXADDR        (0x0100)

/* EP3  VCP*/

#define ENDP3_TXADDR        (0x00C0)

#define ENDP3_RXADDR        (0x0110)
    This topic has been closed for replies.

    2 replies

    rumlyen
    rumlyenAuthor
    Associate III
    May 1, 2016
    Posted on May 01, 2016 at 17:52

    The original post was too long to process during our migration. Please click on the provided URL to read the original post. https://st--c.eu10.content.force.com/sfc/dist/version/download/?oid=00Db0000000YtG6&ids=0680X000006I6k0&d=%2Fa%2F0X0000000buN%2FwwkqVG180MUzuyHFf8iAMNYdTI.a45Af62SZo9aubug&asPdf=false
    rumlyen
    rumlyenAuthor
    Associate III
    May 1, 2016
    Posted on May 01, 2016 at 17:57

    To include VCP interfaces (interface 0 for MSC, 1 and 2 for VCP int), I've edited stmcdc.inf file of virtual com port driver like this:

    [Version]

    Signature=''$Windows NT$''

    Class=Ports

    ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}

    Provider=%PRVDR%

    CatalogFile=stmcdc.cat

    DriverVer=04/25/2010,1.3.1

    ;[SourceDisksNames]

    ;1=%DriversDisk%,,,

    ;[SourceDisksFiles]

    [Manufacturer]

    %MFGNAME%=DeviceList,NT,NTamd64

    ;[DestinationDirs]

    ;DefaultDestDir = 12

    ; ========== VID PID ===========

    [DeviceList.NT]

    %DESCRIPTION%=DriverInstall,USB\VID_0483&PID_5741&MI_00

    %DESCRIPTION%=DriverInstall,USB\VID_0483&PID_5741&MI_01

    %DESCRIPTION%=DriverInstall,USB\VID_0483&PID_5741&MI_02

    [DeviceList.NTamd64]

    %DESCRIPTION%=DriverInstall,USB\VID_0483&PID_5741&MI_00

    %DESCRIPTION%=DriverInstall,USB\VID_0483&PID_5741&MI_01

    %DESCRIPTION%=DriverInstall,USB\VID_0483&PID_5741&MI_02

    ; ========== Class definition ===========

    [ClassInstall32]

    AddReg = ClassInstall_AddReg

    [ClassInstall_AddReg]

    HKR,,,,%ClassName%

    HKR,,NoInstallClass,,1

    HKR,,IconPath,%REG_MULTI_SZ%,''%systemroot%\system32\setupapi.dll,-20''

    HKR,,LowerLogoVersion,,5.2

    ; =================== Installation ===================

    [DriverInstall.NT]

    Include=mdmcpq.inf

    CopyFiles=FakeModemCopyFileSection

    AddReg=DriverInstall.NT.AddReg

    [DriverInstall.NT.AddReg]

    HKR,,DevLoader,,*ntkern

    HKR,,NTMPDriver,,usbser.sys

    HKR,,EnumPropPages32,,''MsPorts.dll,SerialPortPropPageProvider''

    [DriverInstall.NT.Services]

    AddService=usbser, 0x00000002, DriverServiceInst

    [DriverServiceInst]

    DisplayName=%SERVICE%

    ServiceType = 1 ; SERVICE_KERNEL_DRIVER

    StartType = 3 ; SERVICE_DEMAND_START

    ErrorControl = 1 ; SERVICE_ERROR_NORMAL

    ServiceBinary= %12%\usbser.sys

    LoadOrderGroup = Base

    [Strings]

    PRVDR = ''STMicroelectronics''

    MFGNAME = ''STMicroelectronics.''

    DESCRIPTION = ''STMicroelectronics Virtual COM Port''

    SERVICE = ''STM Virtual COM Port''

    DriversDisk = ''STM Drivers Disk''

    REG_MULTI_SZ = 0x00010000

    ClassName=''Universal Serial Bus devices''