RoadTest: TI Hercules TMS570LS04 LaunchPad
Evaluation Type: Evaluation Boards
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?:
What were the biggest problems encountered?: Biggest problem was setting up the HalCoGen and Code Composer Studio software to compile correctly. Really had a hard time in both Linux and Windows. Was surprised, as every other IDE I've used (MPLAB IDE and Atmel Studio) have both worked flawlessly with no setup required.
TMS570 Wiki -- Category:TMS570 - Texas Instruments Wiki
TMS570LS04 Tool Page: Hercules TMS570LS04x LaunchPad Evaluation Kit - TI Tool Folder
TMS570LS0432 uC Datasheet: http://www.ti.com/lit/ds/spns186a/spns186a.pdf
TMS570LS04x/03x Technical Reference Manual: http://www.ti.com/lit/ug/spnu517a/spnu517a.pdf (WARNING: This document is over 1000 pages long!!! You might get sucked in and end up reading it for the rest of your life!! Proceed with caution.)
- Picture to the right: I unboxed the board. It's a bit smaller than I thought, but the presentation in the box is excellent.
- I installed Code Composer Studio (CCS) 5.5, HALCoGen, and the Hercules Safety Demos which are all included. Wasn't surprised to see that CCS can cost in the tens of thousands of dollars, depending on the format/license that you need.
- I figured it was best to pretend to be a newbie, and attempted to follow instructions for “Project 0”. This was also a chance to familiarize myself with CCS, which is based on Eclipse (which I'm somewhat familiar with)
- Followed all the steps, and got build errors, over and over and over and over again. Found out this is because CCS does not come with all libraries built. The linker decides which library is best to use for any given project; if that library is not built then it builds it at compile time. This leads to problems; if there is a problem building the library (which is my case) the .out file is of course not built. This brings everything to a complete halt until you can fix the problem, which I have (after many hours) not been able to solve.
- What really gets me is that I am far from a newbie, and if I’m having trouble rectifying this anyone with less experience would be completely stymied. I know that this product is targeted at experienced professionals, but still, I have a lot of experience writing and compiling in C. If I were a professional that switched to this TI product to start development on a new product and I ran into problems like this, the board would currently be in the garbage and I would already be on the phone with a different company. However, seeing as how this is a “RoadTest” I am going to try and solve the problem so I can actually review the hardware.
- After uninstalling and reinstalling CCS and HALCoGen many times, plus deleting and restarting the project four times it suddenly started working without a problem. The HET driver worked fine, flashing the on-board LED at %75 duty cycle, once per second.
- Below: This picture is the PWM/HET working, finally... of course, you can't tell in the picture!
- HALCoGen is obviously an extremely powerful program, allowing control over every part of the chip. The visual style UI is helpful, as it allows you to ‘see’ what each peripherals options are, and how they all ‘flow’ into each other. I really like the way this program is laid out. Using it to create Project 0 took about 15 seconds. The layout (which may seem quite full) is fairly intuitive and it makes for easy navigation. Enabling the PWM on pin 8 was easy. Changing the duty cycle and period is simple. Changing the pull-up/down resistors on each pin is simply a click. These are the basic features, though; fine tuning of CAN signals is made easy with this interface. Timing propagation, clock adjustments, all made incredibly simple and easy
- Right: As you can see, the headers are all nicely labelled (I apologize, my camera is terrible for close-ups). Also, the LaunchPad comes with rubber feet pre-installed -- a really nice touch!
- However, the downside to HALCoGen is also one of its strengths – it has a lot of control and power. The inexperienced user will almost immediately drown in it. To the untrained eye the diagrams and symbols and buttons everywhere are entirely overwhelming. I understand that this software is not exactly aimed at newcomers, however, as stated earlier even a professional transitioning from one microcontroller company to TI would have to spend a good chunk of time experimenting and tweaking settings in this software to even begin to grasp it.
- CCS (Code Composer Studio) appears to be a child of the ever-popular Eclipse IDE. While I am a fan of Eclipse, I must say CCS does take a bit of getting used to. While the menus and option dialog boxes are laid out in a similar style, the resemblance isn’t very significant. This is probably part of the reason I struggled to fix the errors that I had during my first run with the software. TI has added some features that some users will love; however those intimately familiar with Eclipse (while at some advantage) will probably find themselves second-guessing the placement of menu items and other UI elements. After a few days, though, the software becomes familiar and easy to use.
- So I decided to up the ante a bit: I tried to write some basic code to use the SPI bus. In Atmel Studio, for example, using the SPI bus on an AVR Micro is simple. You write the correct bits into the SPI registers, set up the clock speed, etc, and then integrate the I/O into your code. Even for a newbie it's very simple.
- Right: I soldered on the missing headers, in order to access the CAN bus and also the other 2 SPI buses (there's 3!)
- As mentioned before, HALCoGen generates all the headers and drivers to use any particular feature of the processor. So in order to use SPI bus, you first create a new project with HCG and then import the code into an identically named project in CCS.
- After doing Project 0 (and poking around a bit in HALCoGen) I'm a bit more comfortable with TI products and this LaunchPad.
- I'm going to interface with the Microchip 25AA640A SPI E2PROM, which I've done many times before with ATmegas. It takes me about 5 minutes to write a basic program to write basic bytes to it. So we'll see how long it takes to do it with this
- Well, it's been about 5 hours and I just finally got some SPI data sending. Now that it's working, it looks absurdly easy, but finding the information to get it going was rather frustrating. Seeing as how this is a Safety/Automotive MCU perhaps that's to be expected; it's not really aimed at any other market.
- So my next test is going to be using the CAN bus (which is what automotive applications usually use to transmit data between sensors, etc. So I'm going to get a CAN data stream up and going, then I'm going to stick the whole unit in my freezer for a while, and see if it keeps sending data at like -15C. It's supposed to handle much colder than that. Also, there's an on-board light sensor, and since the freezer is dark, I might get it to stop whatever it's doing if light goes above a certain level (that way, when I check on it, it will stop sending data, just to make sure more than the CAN bus is still functioning well... the ADC will have to be working as well).
- I will come back and add more once that experiment is done!
- Left: Finally, some SPI data! (On oscilloscope, LaunchPad directly in front)
Clearly this platform is very robust. It's intended for automotive applications, but the price range and the feature set should help it make it's way into hobbyist and other areas. The LaunchPad in particular is a great development platform. All the pins are broken out and neatly labelled; there's the on-board FTDI so JTAG is done over USB, which is always nice; to show off some of it's features, there's a jumper to make the oscillator fail, which triggers an interrupt that turns on an LED and kicks the internal oscillator awake. This is a fail-safe mechanism which is pretty cool! Also, as mentioned, there's an on-board light sensor, plus there's a Microchip EEPROM which (I'm guessing) has some configuration data for either the FTDI chip or the chip under the FTDI one, which I cannot find a single thing about on the net. Gotta love those nameless chips.
I would recommend this platform to anyone with a bit of experience programming in 32-bit/ARM environments. It's a cheap, extremely flexible and feature-rich platform that is easily repurposed for any project.