How to make a combined USB device (no HID + USBUART)?

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
RoBO_1287886
Level 4
Level 4
First solution authored 25 replies posted 10 replies posted

I found some example for HID + USBUART.

However in my case, i want keep my custom device and add this USBUART.

Currently i have a full project (if i need share somethings), i need to clean the project and port it into CY8CKIT-059 with the minimum.

In my full projet:

- Windows dectect only  my custom device (the USBUART isn't detected).

- However, if i install driver manually by the device manager panel: i can make an usbuart but my custom usb device disappears...

So currently, both in same time into the device manager panel seems not possible.

It's probably feasible, because it's the case of a KitProg : programmer + usbuart

[NOTE]in my case the programmer will be my custom device

So what is wrong in my application?

-my *.inf for custom device

-my usbfs config (IAD or an others tricks)

-..

0 Likes
1 Solution

After modification of my inf file, generate new catalog file, and also sign the package(self sign) : it is work correctly.

Now i can use my "2" devices detected.

Yours,

Robin

View solution in original post

0 Likes
9 Replies
AnkitaS_51
Employee
Employee
100 likes received 50 likes received 25 likes received

I think you are looking for how to create composite device on USB, for that this KBA will be useful:

Implementing USB Composite Device with PSoC 3, PSoC 4L, or PSoC 5LP - KBA223141

0 Likes
AnkitaS_51
Employee
Employee
100 likes received 50 likes received 25 likes received
0 Likes

About these links: i found it before post my question.

It' was very instructive for me :

- we have an example mouse+cdc uart very similar to my goal (it tested this small project : it works)

- we have IAD config explanation (see below my config)

pastedImage_4.png

- ..

from my point of view it isn't firmware issue because windows can install driver for custom device or usbuart:

- i can install one only

- the order doesn't matter : custom or usbuart

=> but at the end windows cannot have both in the same time into the device panel.

Do you have link or example of inf file to install combined usb device?

Robin.

0 Likes

Hello Robin,

What I can understand is that you have one composite device (HID+USBUART) and one other USBUART.

Its similar to having Multiple COM port, this link may be useful:

Re: USB as multiple COM ports?

0 Likes
lock attach
Attachments are accessible only for community members.
RoBO_1287886
Level 4
Level 4
First solution authored 25 replies posted 10 replies posted

anks,

Thank you to take time for me.

So my application can works on CY8CKIT-059, i will share my project and try to explain the expected behavior.

CY8CKIT-059.png

The Cypress KitProg (green) is detected like "double" devices : UartCom AND KitProg

But my usb device, i can only see one device at the same time not both like kitProg

devicePanelUSB.PNG

In fact i'm expecting that Windows ask me to install 2 devices drivers after plug the USB into the usb connector (orange side)...

But only one is requested!!

The strange things is i can install driver for

- USB UART : the driver (*.inf) is into the folder Generated source

- MY APPLICATION : i cannot share it (but if i install it, the USB UART (COM30) disappears.)

=> Windows can show only one of my USB device. however it is possible that windows shows 2 devices for the same USB connector : it's the case with KitProg.

best regards,

Robin.

0 Likes

Hello Robin,

Thanks for the explaination.

Please check this Forum thread interaction#04 by HIMA, it will be helpful:

Create an USB composite device with two VCP and one 'custom' interface

For a device that uses the iADs, the device is recognized with the PID-VID-and-MI (multiple interface number) combination of the interface in the inf file. Thus, the appropriate inf files have to be altered to include the MI number of the interface. For our example project, the vendor specific interface has MI_00 and the CDC class has MI_01. Thus, we will alter the inf file USBFS_1_CDC .inf to include the MI of the CDC class interface: From: %DESCRIPTION%=DriverInstall, USB\VID_04B4&PID_8051 To: %DESCRIPTION%=DriverInstall, USB\VID_04B4&PID_8051&MI_01

  

Similarly, the CyUSB.inf will be altered to include the VID and PID and MI of the vendor specific interface: From: %VID_XXXX&PID_XXXX.DeviceDesc%=CyUsb, USB\VID_XXXX&PID_XXXX To: %VID_04b4&PID_8051.DeviceDesc%=CyUsb, USB\VID_04b4&PID_8051&MI_00

  

The altered inf files can be used to point to the driver for a device. In case if you use the wrong inf file for a device, like using the MI_00 inf file for MI_01 interface. It will throw up the error saying that the inf file does not contain the information for your device

0 Likes

anks,

MI_XX helps me a little bit.

Windows can indicate 2 drivers but windows can only install one.

pastedImage_0.png

pastedImage_1.png

it's seems close to fix my issue but currently it's not the case.

robin.

0 Likes

You can check this project for composite device and check how the composite device is getting enumerated:

Designing PSoC4200L USB Composite Device - Hackster.io

0 Likes

After modification of my inf file, generate new catalog file, and also sign the package(self sign) : it is work correctly.

Now i can use my "2" devices detected.

Yours,

Robin

0 Likes