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.
I've been using this for development for several weeks. Today (these things always happen early in the morning ) I was attempting to read data via the 'internal' serial connection and suddenly started getting an unknown device error under win XP SP3. I tested another board (same dev kit) and it did not have an issue (installed the device poped up and USB composite device instead of unknown device). I am pretty sure "rebooting" (windows solution) didn't do a thing (LOL).
In any case it seems something got mangled with the built in FET interface. Does anyone have a suggestion on how to fix the FET side of things (or for that matter 'what happened possibly). The F5529 section seems to work but I cannot program as the board is (sigh). I was hopping to debug the serial interface.
Side note I couldn't seem to get the serial port to work at any baud rate, so the I am assuming that I have to turn off the VLO use for ACLK? I am using smclk for the source to USCA1, however I have REF0 clock going to the DCO and the FLL set to 225 (32768 * 225 = 7372800). The bit rate seems to be 3818 not the 4800 I expected (BR divider is 96 and I'm using x16 over sampling mode) which would indicate something like 5864448 instead of 7372800 for the clock speed (head scratching). Could this be from how I programed the UCS I set it for
#ifdef __MSP430_HAS_UCS__
// DCO = MCLK
// DCO = SMCLK
// ACLK = VLO
UCSCTL4 = SELM__DCOCLK | SELS__DCOCLK | SELA__VLOCLK;
//
UCSCTL5 = DIVM__1 | DIVS__1 | DIVA__1 | DIVPA__1;
//
UCSCTL6 = XT2OFF | XT1OFF;
// CLEAR faults
UCSCTL7 = 0;
// SRP 2012-1204
// DCO = 7372800
// use REF0 as input
// set FLL to 225
// set to use the REF0 as DCO reference
UCSCTL3 = SELREF_2;
// low mod
UCSCTL0 = 0x0000;
// loop until DCO stabilizes
do
{
// clear oscillator fault flags
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
// clear fault flag
SFRIFG1 &= OFIFG;
}
// while the oscillator fault flag is set
while((SFRIFG1 & OFIFG)
// and it's the DCO
&&(UCSCTL7 & DCOFFG));
// disable FLL control loop
__bis_SR_register(SCG0);
// set DCO to 2.5 to 6 or 23.7 to 54.1 mhz
UCSCTL1 = DCORSEL_5;
// set frequency multiplier
UCSCTL2 = (UCSCTL2 & ~0x3FF) | BASE_CLK_MULT-1;
// enable FLL control loop
__bic_SR_register(SCG0);
#endif
My guess is what is wrong is the oscillator is faulting (heh) due to probably not selecting the right range or I didn't set something correctly for adjusting the range. It appears if DCOx = 0 then the max frequency is 6mhz (pretty close to what I calculated) I guess I need to do a bit of adjustment (except I will have to find out what the heck DCOx is ... I could find the select bits ... oh well). I suppose I answered my own question (sad).
Stephen
The FET interface side jsut uses a plain TUSB chip for USB->ser connection. This chip either gets its firmware from an external I2C EEPROM or form teh PC driver. It seems that for some reason the I2C EEPROM lso *** content (or a bit flipped, so its content fails the CRC check). In this case, teh TUSB chip doesn't load teh FET specific software but identifies itself as a plain vanilla TUSB chip to Windows and expects to get its formware from teh windows driver. but windows doesn't have a driver for it. hence the 'unknown device'.
You can program (btu not debug) the 5529 through its own USB controller by using the built-in bootstrap loader (BSL). You need to put the MSP into BSL mode (see datasheet ad users guide, BSL sections) and you can upload a new firmware from the PC through USB then.Stephen Phillips1 said:The F5529 section seems to work but I cannot program as the board is (sigh)
Also, there is a PC software for installing a new firmware for the TUSB, but at first the PC must detect the TUSB and load a standard USB->SER driver. Of course it is possible that you damaged the crystal ont eh FET side. Then the TUSB of course cannot work.
Well, for 7.4MHz DCO, the safe range settings are DCORSEL_4 and DCORSEL_5. With the default DCORSEL_2, the DCO is unable to reach 7.4MHz (0.74-3.17MHz is the guaranteed range, even though some MSPs will reach up to 7.38 MHz with this setting)Stephen Phillips1 said:My guess is what is wrong is the oscillator is faulting (heh) due to probably not selecting the right range
Jens-Michael Gross said:The FET interface side jsut uses a plain TUSB chip for USB->ser connection. This chip either gets its firmware from an external I2C EEPROM or form teh PC driver. It seems that for some reason the I2C EEPROM lso *** content (or a bit flipped, so its content fails the CRC check). In this case, teh TUSB chip doesn't load teh FET specific software but identifies itself as a plain vanilla TUSB chip to Windows and expects to get its formware from teh windows driver. but windows doesn't have a driver for it. hence the 'unknown device'.
I suppose that means I have to dig through my information for the 3410 et al. I know the 3410 firmware is NOT just a single serial port as it uses the USB serial device AND it uses the c51 uart for communication to the target processors. It is registered as a composite device. I was using the interface and then it started acting funny (can't remember what exactly happened is the problem).
Jens-Michael Gross said:You can program (btu not debug) the 5529 through its own USB controller by using the built-in bootstrap loader (BSL). You need to put the MSP into BSL mode (see datasheet ad users guide, BSL sections) and you can upload a new firmware from the PC through USB then.
I am using it with debugging (the whole point of using the setup in my view).
Jens-Michael Gross said:Also, there is a PC software for installing a new firmware for the TUSB, but at first the PC must detect the TUSB and load a standard USB->SER driver. Of course it is possible that you damaged the crystal ont eh FET side. Then the TUSB of course cannot work.
This is the proverbial 'chicken' vs 'egg'. I wonder if TI has a 'base' driver that can be used to program the EEPROM with the proper image. Obviously the driver from the PC (boot strap mode) exists, it would be handy if that sort of 'quick and dirty' mode existed. I know a number of processors that do that for boot strap programming (so it seems to me the 3410 should do that too heh).
Anyhow debugging wise apart from removing the EEPROM programing a new one and soldering the new one on ... hmmm.
I'll have to examine the board more, it is disconcerting it happened too say the least.
Jens-Michael Gross said:Well, for 7.4MHz DCO, the safe range settings are DCORSEL_4 and DCORSEL_5. With the default DCORSEL_2, the DCO is unable to reach 7.4MHz (0.74-3.17MHz is the guaranteed range, even though some MSPs will reach up to 7.38 MHz with this setting)
Right I had a longer look and they don't give nice 'bands' of frequencies to use with the DCO It appears the issue is that with
UCSCTL0 = 0;
The range is 2.5 to 6mhz with SEL = 5. That means I should set UCSCTL0 to 0x100 or 0x200 to change the range to 3.1667 to 7.52 or 3.8333 to 9.04. It is a bit strange they didn't include the band range change as you adjust the resistor tap for the DCO. (sigh) I had to figure it out using ye olde spread sheet and linear interpolation. I can understand WHY they didn't give it (because it is kind of annoyingly difficult to do). Anyhow I need to adjust not just the SEL range but also the DCO tap because it doesn't adjust itself.
I'll have to try this on a different board however until I figure what happened to the one that decided not to work anymore.
indeed. The default harware UART of the TUSB is used for PC<->MSP1612 communication while the chips I/O ports are (ab)used for a secondary bit-banging serial port.Stephen Phillips1 said:I know the 3410 firmware is NOT just a single serial port
Almost.Stephen Phillips1 said:I wonder if TI has a 'base' driver that can be used to program the EEPROM with the proper image.
It's just a matter of using the right (PC) tools. Unfortunately, there is no complete toolchain with exhausting instructions. AFAIK, you'll have to load all this separately. It has been discussed in several older forum posts, so if you search for 'firmware updater' or 'EEPROM', you should find the details.
Stephen Phillips1 said:The range is 2.5 to 6mhz with SEL = 5.
Jens-Michael Gross said:indeed. The default harware UART of the TUSB is used for PC<->MSP1612 communication while the chips I/O ports are (ab)used for a secondary bit-banging serial port.[/quote]I know the 3410 firmware is NOT just a single serial portI believe they use the internal serial port on the C51 core processor. That in the larger scheme of things is pretty much irrelevant (it has a fairly limited baud rate and no DMA support). P3.0 and P3.1 are the port pins. Erstwhile ...
Jens-Michael Gross said:It's just a matter of using the right (PC) tools. Unfortunately, there is no complete toolchain with exhausting instructions. AFAIK, you'll have to load all this separately. It has been discussed in several older forum posts, so if you search for 'firmware updater' or 'EEPROM', you should find the details.Much too my chagrin there isn't an 'easy' "omn-itool" for doing so. I'll live, it just will take a bit to work through "fixing" it (and time). Good thing I have a spare (or 2).
Regarding the DCO/FLL the DCOx selection seems to like 6, it does take a bit of time to stabilize so my 'initial' guess may be a bit off. It does work and syncs within about 10-15ms. A bit slow but livable. I think it would be nice if TI offered a 2nd DCO that you could use to sync to an outside source one could use for whatever purpose. (I was thinking like I2S interface sync or other clock sources).
Thanks again for the incite.
Stephen
Hmmm, I had expected it to be a bit faster:Stephen Phillips1 said:Regarding the DCO/FLL the DCOx selection seems to like 6, it does take a bit of time to stabilize so my 'initial' guess may be a bit off. It does work and syncs within about 10-15ms.
If you know (check the datasheet values) that beginning with DCOx=6 won't exceed the currently allowed maximum clock in worst case, you can set DCOx to 6 right at the beginning. Then the settling time will be significantly reduced. It still depends on the actual MSP, VCC, temperature. However, it won't guarantee faster settling for all circumstances. Depending on how much the devices stray from each other, starting with 5 or even 3 might give the best maximum settling time while 6 might give you the best average settling time, now that you know that 6 is the final value on your specific MSP.
What exactly do you mean? The USCIs can run from external clock input, the timers too. However, that's an 1:1 input or a fraction of it.Stephen Phillips1 said:I think it would be nice if TI offered a 2nd DCO that you could use to sync to an outside source one could use for whatever purpose.
BTW: you're not limited to the REFO as FLL reference. You can as well pick XT1 in HF or bypass mode or XT2 (also in HF or bypass mode) as reference, in addition to REFO or XT1 in LF mode. So you can generate 25MHz from a 1MHz external clock if you want.
**Attention** This is a public forum