This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MCU Selection

Other Parts Discussed in Thread: TUSB2036

Hello,

Firstly, Thank you for providing this opportunity.

We were engaged in the development of Embedded System product based on Arduino Mega ADK (USB Host Microcontroller) and TI based TUSB2036 Hub. We have tried to drive a USB Keyboard, a Flash Drive and an External Printer (laser or dot matrix) using the software libraries found on GitHub. We have also interfaced a graphic LCD display to the host microcontroller using Soft SPI and a RFID module using Soft SPI. But the problem is, we have got performance issues and the USB devices are not operating perfectly and concurrently. So, we have decided to go on with TI based Host Microcontroller for this task. We are also looking for software libraries for Host Microcontroller to drive a keyboard, a flash drive and an printer via Hub. Considering the operation of flash drive, we need to read data from files stored on flash drive and to create files with data on flash drive. We also need UART ports to read data from other general purpose microcontroller and to push data to external display board based on multiple digit seven segment display. Moreover, there is a possibility to add more USB based devices like Barcode scanner etc.. etc.. in the future. Based on this, we are looking for a right TI based Host Microcontroller to accomplish this task.
So, I am requesting you all for a suggestion for a host microcontroller that best fits for this application.

Thank You.

Regards,
Vamshi

  • Hello Vamshi,

    Based on your requirements, I believe the closest fit we would have to offer is from the TM4C family of devices: https://www.ti.com/microcontrollers/other-mcus/products.html#p887=ARM%20Cortex-M4F&p1827=OTG

    As part of our TivaWare SDK, we offer a USB library that supports most of what you need, but do not have USB Host Printer drivers. The USB Flash Drive support would be from the usb_host_msc example.

    TivaWare can be downloaded from: https://www.ti.com/tool/SW-TM4C

    The TM4C129x family includes some devices with an LCD Controller peripheral which may be preferred to Soft SPI. We also have Soft SPI example code in our TivaWare package found at: [Install Path]\TivaWare_C_Series-2.2.0.295\examples\peripherals\ssi

    UART ports come on all devices and that should be no issue.

    I think the only roadblock you'd have is adding the Printer portion. If that can be done as an HID interface, it should be rather easy to implement that as you can re-use what is done for keyboard/mouse to add another HID interface.

  • Hello Ralph,

    Thank you for the quick response and suggestion.

    Does the USB library you have suggested contains libraries for interfacing TUSB2036 Hub?

    Considering the USB Host printer drivers, HID based drivers won't support it. But MIDI based library might support it. Does that library also contain MIDI based libraries?

    Thank You.

    Regards,
    Vamshi

  • Hello Vamshi,

    We would not have support for that hub. I haven't seen anyone using that with TM4C, it may be that the USB peripheral can already do what you need from a hub standpoint, I know we have code in the USB host implementation to support hubs.

    For MIDI based drivers, that would be our USB Audio driver.

  • Hello Ralph,

    As you said that you have library to support hubs, I think it also supports TUSB2036 Hub. Considering other things, I have checked TM4C129x family devices specifications and I have found that there is no LCD Controller and SPI interface.

    Do you have microcontrollers with TM4C129x family specifications and SPI interface for LCD?

    Moreover, considering printer drivers, I used MIDI library (Bulk Transfer protocol) in case of Arduino to drive the printer and it worked. Do you think that it also works in case of TM4C129x family?

    Thank You.

    Regards,
    Vamshi

  • Hello Vamshi,

    The LCD Controller is limited to a few part numbers, see this list: https://www.ti.com/microcontrollers/other-mcus/products.html#p887=ARM%20Cortex-M4F&p1827=OTG&p2946=Yes

    The SPI interface for TM4C devices is labeled as SSI. If you search 'SPI' in the datasheet, it would not show up. Search 'SSI' instead.

    Vamshi Chinthakindi said:
    As you said that you have library to support hubs, I think it also supports TUSB2036 Hub.

    But that support doesn't natively extend to external hubs to my knowledge. The library itself can support hubs, but I don't think it has ever been used with that hub device.

    Vamshi Chinthakindi said:
    Moreover, considering printer drivers, I used MIDI library (Bulk Transfer protocol) in case of Arduino to drive the printer and it worked. Do you think that it also works in case of TM4C129x family?

    I would think so, but it wouldn't work 'out of the box', you'd need to do some development to use what exists in the library for your printer. Bulk transfers are definitely handled as part of the library. That said, the Audio interface that I mentioned uses Isochronous endpoints. So you'd have to adjust that piece when referencing the Audio side.

  • Hello Ralph,

    Thank you for the list.

    It seems SSI is different compared to SPI. It showed me that SPI can be realized using differential driver IC's and program controlled timing with SSI.

    Moreover, as you said that, the support doesn't natively extend to external hubs. I would like to know about the type of hubs that are supported by TM4C family without any hassle.

    Can you please suggest some?

    Thank You.

    Regards,
    Vamshi

  • Hello Vamshi,

    Sorry I was out of office and this one slipped through the cracks.

    SSI and SPI are not different TM4C. The peripheral is just called SSI in the datasheet but it IS SPI.

    From my understanding, the TM4C USB Library has code that allows the USB interface to be used as a hub without external devices. We do not have any native support for interface an external hub in TivaWare. I don't have any suggestions to make for that.

  • Vamshi Chinthakindi said:

    It seems SSI is different compared to SPI. It showed me that SPI can be realized using differential driver IC's and program controlled timing with SSI.

    SPI generally does not use differential signaling. Although in its most commonly-used version with separate MISO and MOSI lines, there's no particular reason why it could not be used differentially with 26LS31/32 driver/receivers or over LVDS with DS90LV011/012 drivers/receivers.

    One problem is that there's no SPI spec -- it's all very ad hoc. The world seems to have settled on four variants of the four-wire synchronous serial interface, with a clock, an active-low chip select, and a data line in each direction. The four variants basically set the polarity and phase of the clock.

    Ralph is correct -- the SSI can be set up as SPI. I've done it :)