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.

TMS320F28335: Best MCU to updating firmware from USB flash memory.

Part Number: TMS320F28335
Other Parts Discussed in Thread: C2000WARE

Hi there, 

We've an aplication already made with TMS320F28335, and now, we need to implement a method for updating MCU's firmware, from a image file stored in a USB Flash Drive. 

The idea is that the final user of the board will be able to upload the firmware just by inserting a preconfigured USB pendrive.

I've read in this thread that this could be possible with F28335 by adding an USB host controller (FTDI VNC1L for example), but I don't know if t's an easy straightforward solution or not, or if it may be too expensive for this application.  

So, we're considering migration to a newer and more powerful, USB-Capable MCU: 

TMS320F28386D seems to be a good solution, and in 7.13.9 point of datasheet says that it can operate as controller during point-to-point communications with USB host or device functions. I assume that it can act as USB host.

- F28M6Hx Concerto could be another solution, and in datasheet it specifies "Universal Serial Bus On-the-Go (USB-OTG)" as a feature.

So, we have some questions:

- Is there Any difference between "USB Host" and "USB OTG (On the Go)"? 

- Could this devices be used to implement the functionality of updating firmware from USB pendrive?

- May you suggest us the most suitable MCU among C2000 family for this application?

Thanks in advance.

  • Jose,

    I'm not a TI'er but lets just say I have a fair amount of experience with USB on these devices.  Let me try to answer your questions:

    Host vs OTG:

    Host is exactly what it sounds like.  It acts just as a computer would in the USB paradigm you're used to.  OTG allows for devices and hosts to switch roles.  This was created so devices like printers and cell phones could talk to eachother and decided which device was more appropriate to be the host in any given connection.  For your application, you want host mode.

    Devices:

    Both these devices would be capable of doing what you've suggested as they both support host operations.  If you were to use the 28386 I would connect the USB peripheral to the M4 and use it solely for firmware updates.  USB is certainly usable on the C28 processors but the lack of byte addressability can complicate software development.  Specifically you will need a FAT or other filesystem stack and these are normally written for byte addressable processors.  They can be ported, but there will be additional development overhead required in that case.  The other thing to think about is the effort required to port your exisiting application to one of these newer devices.  While much of the peripherals are the same there have been some changes and improvements. While it won't require a complete rework of your application, some effort will be required to port it to a new C2000 device.

    Hope that helps answer some of your questions.  I'll let the real TI'ers chime in if they have anything else ;)

    Trey

  • Hi Jose,

    We'd recommend either the F2837x or F2838x over the F28M6Hx devices. Both of these devices have a USB peripheral integrated and could be configured as a USB host. The 37x and 38x would be favorable over the F28335 method you referenced as well.

    The F2838x has more features over the F2837x. I'd suggest seeing if the additional features are necessary for your application.

    josemanuel said:
    - Is there Any difference between "USB Host" and "USB OTG (On the Go)"? 

    I believe the USB OTG standard is for devices needing to switch between being a USB host or USB device. If you're just wanting to firmware update from a USB flash drive this shouldn't be a care about.

    josemanuel said:
    - Could this devices be used to implement the functionality of updating firmware from USB pendrive?

    Sure, either 37x or 38x should be able to. You can look at the SW example below within the C2000ware install for USB mass storage interfacing. You'll also need to look into using the flash API.

    C:\ti\c2000\C2000Ware_3_03_00_00\driverlib\f2837xd\examples\cpu1\usb\usb_ex7_host_msc.c

    Best,

    Kevin