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.

XDS100 for onboard programming

Hello everyone,

I am planning to create a PCB with a F28335 microcontroller. I would like to install a USB-JTAG interface on the board, to be able to program the controller without an external programming adapter.

I found the XDS100v2 reference design, which seems to be more complete and allows faster programming than the XDS100v1.

I also found the F28M36x controlCARD's schematics (especially page 8 & 9) [\controlSUITE\development_kits\~controlCARDs\TMDSCNCD28M36_v1_2\R1_1\], which appears to be based on a simplified XDS100v2 design.  

I'd like to know if I can use the F28M36x USB-JTAG design for programming a F28335 too. The original XDS100v2 design includes a CPLD and a target voltage follower circuit, but as I am only using one controller, which is permanently connected to the JTAG-interface, I think, that these extras are not required in my application.

What are your thoughts about it ?

Thank you in advance

~Brian 

  • Hi Brian,

    You can very well use the simpler design, I would instead recommend you to refer F28335 based experimenter's kit schematics. You can directly copy paste the hardware circuitry.

    Regards,
    Gautam
  • Gautam,

    thank you for the reply. As I can not find a documentation for the USB Docking Station [R3], there are a few things that are unclear to me. It would be great, if you could answer my questions.

    1. The signals TCK, TDI, TDO, TMS and TRSTn have a direct connection between the FT2232D and the corresponding pins on the controller. Additionally there are the two EMU0/1 signals, between the controller and the JTAG header (which I don't want to use). Do I need these EMU signals ?

    2. Is it possible to change the FT2232D to FT2232H (incl. crystal) to achieve higher speeds ?

    3. What do I need the jumpers J8 (left side), J9 (middle) and J84-J87 (right side) for ?

    Thanks in advance.

    ~Brian

  • Brian,

    I am not very familiar with the simplified F28x design, but BeagleBone White (ARM Cortex A8) also uses a simplified XDS100v2 (without the CPLD) that has shown some unexpected issues across the years. I know there are a few issues, but the one I remember the most is the fact a board resets if it is connected to a host PC that goes under a reboot itself (even if the board is externally powered). That would be highly undesirable (go boom) if your device is connected to a high power/voltage circuitry.This is caused by the fact the OS device driver sends a reset the FTDI device when instantiating the interface - something the design with the CPLD prevents. 

    Answering your questions:

    1) The functions of the EMU signals are highly dependent on the device itself and can assume the functions mentioned in section 2.4 of the XDS Target Connection Guide wiki page at:

    http://processors.wiki.ti.com/index.php/XDS_Target_Connection_Guide

    Given you have a single device connected and (hopefully) not long PCB connections, you probably will be ok in directly connecting the pins - just be sure of the pull ups and downs mentioned in section 7.1 of the wiki page above.

    2) The full XDS100v2 design uses a FT2232H. That is the main difference between a XDS100v1 and XDS100v2. In general there is not a severe speed increase for the particular device you are using (F28335).

    3) Which design are you referring? I don't see these on the F28M36 controlCARD design.

    Regards,

    Rafael

  • Thank you very much Rafael for your detailed answer.

    desouza said:
    ...also uses a simplified XDS100v2 (without the CPLD) that has shown some unexpected issues across the years.

    Ok, so maybe I should either use the complete XDS100v2 design or the XDS100v1.

    desouza said:
    In general there is not a severe speed increase for the particular device you are using (F28335).

    So I do not see a big advantage for me using the more complex XDS100v2 design.

     

    From the XDS-Guide:

    "Depending on your device and XDS, EMU pins support boot modes, cross triggers, HS-RTDX, Core Trace and System Trace. See your XDS user’s guide and device data sheet for supported features."

    I am new to the TI's microcontroller series, thus I don't know much about the listed features. I guess, that I don't need the most of them for my application. What I want to do is just

    • program the F28335 (Flash & RAM) -> must-have
    • watch variables/expressions and set SW breakpoints in CCS Debug -> nice-to-have/optional

    Do I need the EMU pins for that and if yes, then I still wouldn't know how to connect them in the XDS100v1 design.

    Concerning the jumper question:

    desouza said:
    Which design are you referring? I don't see these on the F28M36 controlCARD design.

    Sorry ! I forgot to attach the PDF :/ I was referring to the USBDockingStation [R3].

    ~Brian

    USBDockingStation_Schematic [R3].pdf

  • Brian,

    Brian Walsh said:
    So I do not see a big advantage for me using the more complex XDS100v2 design.

    Yes. For the F28335 the XDS100v1 should suffice.

    The only major practical difference between the two (for your design, of course), is that XDS100v1 gets confused if you also have another FTDI device plugged to your PC (third item of this link). The XDS100v2 does not have this issue.

    Brian Walsh said:
    • program the F28335 (Flash & RAM) -> must-have
    • watch variables/expressions and set SW breakpoints in CCS Debug -> nice-to-have/optional

    Do I need the EMU pins for that and if yes, then I still wouldn't know how to connect them in the XDS100v1 design.

    EMU pins would not be necessary for a single F28335 device on the board. If your designs evolve and you eventually end up with two or more, the EMU pins will be critical to allow cross triggering between the two (global breakpoints that halt both devices at the same time, for example). All the other features are not implemented in the F28335.

    Brian Walsh said:
    Sorry ! I forgot to attach the PDF :/ I was referring to the USBDockingStation [R3].

    I'll take a look at the schematic and get back to you.

    Cheers,

    Rafael

  • Brian,

    J8 seems to simply force a reset of the FTDI device manually. It should be optional.
    J9 disconnects the TX pin of FTDI's channel B port from a pin on the DIMM socket. This is not related at all to the JTAG debugging part of the device (which uses channel A). This jumper enables the operation of FTDI's channel B port as a simple RS232-to-USB bridge from the device to a host PC (which may be a good idea to add to your design, if needed).

    The other four jumpers set the boot mode of the device and are usually sampled at power up. For details on how this works, you must check the boot configurations of the F28335 datasheet and match the schematics with which ones must be pulled up or down.

    Hope this helps,
    Rafael
  • Hi Rafael,

    I really appreciate your detailed answers. Thank you very much !

    desouza said:
    The only major practical difference between the two (for your design, of course), is that XDS100v1 gets confused if you also have another FTDI device plugged to your PC (third item of this link). The XDS100v2 does not have this issue.

    In a previous design I used a USB-FTDI cable to transfer data from the controller (UART) to the PC (USB) for debugging purposes. If the XDS100v1 design enables me to use the FT2232D chip also for the UART communication, I would not need to plug in a second FTDI device.

    I do not see an advantage of having the TX jumper J9, as I am sure to use the BDBUS as UART interface. If I haven't overlooked something, I would change J9 to a solid connection in my design.

    I am only working with max. 5V on my board, so I guess, that I don't need to use the isolated SCI-TX/RX pins, which I would left unconnected.

    ~Brian

  • Brian,

    Brian Walsh said:

    In a previous design I used a USB-FTDI cable to transfer data from the controller (UART) to the PC (USB) for debugging purposes. If the XDS100v1 design enables me to use the FT2232D chip also for the UART communication, I would not need to plug in a second FTDI device.

    I do not see an advantage of having the TX jumper J9, as I am sure to use the BDBUS as UART interface. If I haven't overlooked something, I would change J9 to a solid connection in my design.

    Despite the reference design for the XDS100v1 does not have anything connected to BDBUS, clearly the C2000 Dock seems to provide the wiring to support UART (and FT2232D supports it as well). To allow this from a device driver standpoint, you must program the FTDI device using the FTProg utility to configure channel B as RS 232 and VCP. The template can be extracted from your existing Dock using the same FTProg utility.

    Brian Walsh said:
    I am only working with max. 5V on my board, so I guess, that I don't need to use the isolated SCI-TX/RX pins, which I would left unconnected.

    If only up to 5V on the board is used, most probably you won't need any galvanic isolation. However, as a general practice I tend to have at least some protection to avoid having any dangerous voltages coming back to the host PC. Also, always be aware of different ground potentials if your design has anything connected to the mains on the "other side" of the board.

    Cheers,

    Rafael