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 am using CC430F6137, and bought lanuchPad MSP-EXP430G2
I flashed fimware (LPAD_BSL_INTERFACE.txt in slaa535a.zip)into the M430G2553 using MSP430Flasher
and execute test.bat (slaa535a\LPAD_BSL_INTERFACE\TestScripts\CC430F6137)
but didn't work.
I checked BSL entry sequence using oscilloscope. it's correct.
and find out TX data was not correct. I think it is the reason why bsl scripter doesn't work
for example, change baud rate 80 02 00 52 02 90 55 (when test.bat was executed)
actual data was 80 02 00 49 13 0e aa e5 (by using USB-to-serial cable)
script was:
MODE 5xx COM17
VERBOSE
CHANGE_BAUD_RATE 9600
TX_BSL_VERSION
MASS_ERASE
RX_PASSWORD
RX_DATA_BLOCK BLINK_CC430F6137.txt
RX_DATA_BLOCK BOR.txt
actual TX data was:
80 02 00 49 13 0c aa f9
80 01 00 32 43 89 ff
80 01 00 2a 23 1b fd
80 21 01 8a f2 fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd 79 e6
80 f4 00 41 03 08 1c 40 80 01 02 03 08 2b 62 d0 70 c2 09 14 5a c6 50 98 d8 10 62 84 89 13 14 55 66 ec 01 43 c6 8d 1b 39 eb c8 e8 0c b2 c4 11 23 24 95 33 76 11 c5 29 2a 2b 58 6b e4 d1 19 86 cc 9b 33 d1 ab 64 74 86 96 a4 6c c6 d4 e6 f6 04 5a 24 48 68 51 45 46 47 21 4a 4d da 09 d3 93 4e 4f 50 45 93 9b 41 ad c9 a5 35 6b 96 da 5b 5c eb f3 fb 01 53 36 ec 63 91 2b 32 3a 43 4b 4e d3 6d 9b ed 6e 6f e0 8b 92 9a 47 aa b3 bb c2 ca d3 db e2 eb f2 fa 03 2f 28 50 70 61 85 86 87 43 95 9c dc 51 e3 8d 8e 1e 90 22 92 93 51 57 ca ea 0e 5e 4a 6a 8e aa ce ee 0a aa 74 d1 a3 91 a5 4c 9d a8 a9 a9 ad ac b5 ae af 60 b1 64 cd b4 6b b6 b7 e1 e5 ba bb f1 bd f9 fd c0 82 c2 c3 91 c5 19 1d c8 c9 94 2d cc 9a ce cf a1 d1 49 4d d4 aa d6 d7 b0 65 da db 71 dd bc 7d e0 e1 89 8d e4 ca e6 e7 d0 a5 ea eb d8 ed b9 7b 35 92 ff
80 06 01 82 0c 59 30 80 a9 81 5d a8
I didn't change any hardware(just buying) and software(supported). How the data can be broken?
Hi Sungae,
Sungae Kim said:I flashed fimware (LPAD_BSL_INTERFACE.txt in slaa535a.zip)into the M430G2553 using MSP430Flasher
the binary file is compiled for MSP430G2231 which is delivered with Launchpad v.1.4 and prior. I just realized that starting Launchpad v1.5, the kit is delivered with MSP430G2553 instead.
My suggestion is to download IAR kickstart: http://www.ti.com/tool/iar-kickstart and recompile the source code given in the app note SLAA535A for MSP430G2553. You might need to change some of the register names (e.g. for Timer_A) if it is not available for the MSP430G2553.
Hope this helps, otherwise please let me know.
Hi Sungae,
here is a version of the code which can be complied for MSP430G2553 made by one of my colleague:
/* --COPYRIGHT--,BSD * Copyright (c) 2012, Texas Instruments Incorporated * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * * Neither the name of Texas Instruments Incorporated nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * --/COPYRIGHT--*/ /**************************************************************************//** * * @file lpad_bsl_int.c * * @brief implementation of MSP430 Launchpad based BSL interface * * @version 2.1.0 * * @author Leo Hendrawan * * @remark the new MSP430 Launchpad BSL interface software is inspired by * the BSL-Bridge implementation by OCY (old_cow_yellow) * - thanks OCY! - * ******************************************************************************/ //***************************************************************************** // Include section //***************************************************************************** #include <stdint.h> #include <stdbool.h> #include <msp430.h> //#include "msp430g2553.h" //#include "msp430g2231.h" //***************************************************************************** // Global variables //***************************************************************************** //***************************************************************************** // Macros (defines), data types, static variables //***************************************************************************** // pin definitions #define PC_TX_PIN (BIT1) // P1.1 #define PC_RX_PIN (BIT2) // P1.2 #define MSP_TX_PIN (BIT7) // P1.7 #define MSP_RX_PIN (BIT6) // P1.6 #define MSP_RST_PIN (BIT4) // P1.4 #define MSP_TEST_PIN (BIT5) // P1.5 #define MSP_TCK_PIN (BIT0) // P1.0 #define PB_PIN (BIT3) // P1.3 // clock setup delay #define CLK_SETUP_DLY() __delay_cycles(100) // PB debouncing delay #define PB_DEBOUNCING_DLY() __delay_cycles(400000) // BSL entry sequence delay #define BSL_ENTRY_SEQ_LONG_DLY() __delay_cycles(200) #define BSL_ENTRY_SEQ_SHORT_DLY() __delay_cycles(50) // vlo 1 ms counter variable uint16_t vlo_1ms_cnt = 0; // UART parity bit adding variables static bool add_parity = true; static uint16_t bit_8_cnt, bit_1_cnt, bit_1_5_cnt, bit_9_cnt; static uint16_t bit_cnt = 0, ones_cnt = 0; static bool start_bit = true; static uint8_t error = 0; //***************************************************************************** // Internal function declarations //***************************************************************************** static void calibrate_vlo(void); static void measure_baud_rate(void); static void delay(uint16_t delay_ms); static void trap(void); //***************************************************************************** // External functions //***************************************************************************** /**************************************************************************//** * * main * * @brief main function * * @param - * * @return - * ******************************************************************************/ void main(void) { // Stop WDT WDTCTL = WDTPW + WDTHOLD; // VLOCLK to source LFXT1S BCSCTL3 |= LFXT1S_2; // calibrate vlo calibrate_vlo(); // set DCO to work between 8-14 MHz DCOCTL = 0x0000; BCSCTL1 = XT2OFF | (RSEL3 + RSEL2 + RSEL1); DCOCTL = (DCO1 + DCO0); // wait until clocks stabilize do { BCSCTL3 &= ~(XT2OF + LFXT1OF); IFG1 &= ~OFIFG; CLK_SETUP_DLY(); } while(IFG1 & OFIFG); // initialize PC & MSP TX&RX pins P1DIR |= (MSP_TX_PIN + PC_TX_PIN); // output pins, default high P1OUT |= (MSP_TX_PIN + PC_TX_PIN); P1DIR &= ~(MSP_RX_PIN + PC_RX_PIN); // input pins, pull-up enable P1REN |= (MSP_RX_PIN + PC_RX_PIN); P1OUT |= (MSP_RX_PIN + PC_RX_PIN); // initialize MSP RST, TEST, and TCK pins P1DIR |= MSP_RST_PIN + MSP_TEST_PIN + MSP_TCK_PIN; P1OUT &= ~(MSP_RST_PIN + MSP_TEST_PIN + MSP_TCK_PIN); // set push-button as input, pull-up enable P1DIR &= ~PB_PIN; P1REN |= PB_PIN; P1OUT |= PB_PIN; // delay for about 1s delay(1000); // check if push button is pressed if(!(P1IN & PB_PIN)) { PB_DEBOUNCING_DLY(); if(!(P1IN & PB_PIN)) { // sign for not adding parity bit add_parity = false; // give a red LED blink sign P1OUT |= MSP_TCK_PIN; delay(500); P1OUT &= ~MSP_TCK_PIN; delay(500); } } // set up TCK pin as indication of BSL Entry sequence generation P1OUT |= MSP_TCK_PIN; // generate the BSL entry sequence BSL_ENTRY_SEQ_LONG_DLY(); P1OUT ^= (MSP_TEST_PIN + MSP_TCK_PIN); BSL_ENTRY_SEQ_LONG_DLY(); P1OUT ^= (MSP_TEST_PIN + MSP_TCK_PIN); BSL_ENTRY_SEQ_SHORT_DLY(); P1OUT ^= (MSP_TEST_PIN + MSP_TCK_PIN); BSL_ENTRY_SEQ_LONG_DLY(); P1OUT |= MSP_RST_PIN; BSL_ENTRY_SEQ_LONG_DLY(); P1OUT ^= (MSP_TEST_PIN + MSP_TCK_PIN); // check if BSL is invoked delay(100); if(!(P1IN & MSP_RX_PIN)) { // set error number error = 1; // trap trap(); } if(add_parity == true) { // run Timer_A in free running mode TA0CTL = TASSEL_2 + MC_2 + TACLR; // if parity bit shall be added, measure baud rate measure_baud_rate(); } // set GPIO interrupts P1IES |= (PC_RX_PIN + MSP_RX_PIN); P1IE |= (PC_RX_PIN + MSP_RX_PIN); P1IFG = 0; // ready to go, enable interrupt __enable_interrupt(); while(1); // can also sleep here (but only to LPM0) zzzz... } //***************************************************************************** // Internal functions //***************************************************************************** /**************************************************************************//** * * calibrate_vlo * * @brief calibrate vlo to get the 1ms counter tick * * @param - * * @return - * ******************************************************************************/ static void calibrate_vlo(void) { uint16_t temp; // check DCO calibrated values if((CALDCO_1MHZ != 0xFFFF) && (CALBC1_1MHZ) != 0xFFFF) { // set DCO with calibrated values DCOCTL = CALDCO_1MHZ; BCSCTL1 = XT2OFF | CALBC1_1MHZ; // wait until clocks stabilize do { BCSCTL3 &= ~(XT2OF + LFXT1OF); IFG1 &= ~OFIFG; CLK_SETUP_DLY(); } while(IFG1 & OFIFG); // CCR0 works as capture with ACLK as input capture signal TA0CCTL0 = CM_1 + CCIS_1 + SCS + CAP; // set Timer_A to run in free-running mode and sourced from calibrated SMCLK TA0CTL = TASSEL_2 + MC_2 + TACLR; // wait for first capture event while(!(TA0CCTL0 & CCIFG)); // clear interrupt TA0CCTL0 &= ~CCIFG; // read CCR value temp = TA0CCR0; // wait for second capture event while(!(TA0CCTL0 & CCIFG)); // clear interrupt TA0CCTL0 &= ~CCIFG; // calculate 1 ms tick temp = TA0CCR0 - temp; vlo_1ms_cnt = 1000/temp; if((1000 % temp) > temp/2) { vlo_1ms_cnt++; } // stop timer TA0CTL = 0; } } /**************************************************************************//** * * measure_baud_rate * * @brief measure baud rate * * @param - * * @return - * ******************************************************************************/ static void measure_baud_rate(void) { uint16_t temp; // measure bit time by waiting for the first 0x80 from PC // set PC_RX_PIN as capture interrupt P1SEL |= PC_RX_PIN; TA0CCTL1 = CM_2 + SCS + CAP; // set for capture on falling edge // wait until capture event occurs while(!(TA0CCTL1 & CCIFG)); P1OUT &= ~MSP_TX_PIN; // clear the interrupt flag and take the CCR value TA0CCTL1 &= ~CCIFG; temp = TA0CCR1; // set PC_RX_PIN to capture the rising next edge of 0x80 TA0CCTL1 = CM_1 + SCS + CAP; // wait until capture event occurs while(!(TA0CCTL1 & CCIFG)); P1OUT |= MSP_TX_PIN; // switch off timer capture and calculate the bit time TA0CCTL1 = 0; bit_8_cnt = TA0CCR1 - temp; bit_1_cnt = bit_8_cnt >> 3; bit_1_5_cnt = (bit_8_cnt >> 4) + bit_1_cnt; bit_9_cnt = bit_8_cnt + bit_1_cnt + (bit_1_cnt >> 4); // set back PC_RX_PIN as GPIO P1SEL &= ~PC_RX_PIN; } /**************************************************************************//** * * delay * * @brief a very rough delay using VLOCLK, only to be used during init * * @param delay_ms delay time in miliseconds * * @return - * ******************************************************************************/ static void delay(uint16_t delay_ms) { // set register TA0CCTL0 = 0; if(vlo_1ms_cnt == 0) { // use typical VLO clock 12 kHz TA0CCR0 = (12000/1000) * delay_ms; } else { // use the calibrated value TA0CCR0 = vlo_1ms_cnt * delay_ms; } // start timer TA0CTL = TASSEL_1 + MC_1 + TACLR; // wait until flag is set while(!(TA0CCTL0 & CCIFG)); // reset register TA0CTL = 0; } /**************************************************************************//** * * trap * * @brief trap the whole system - assert like function * * @param - * * @return - * ******************************************************************************/ static void trap(void) { uint16_t delay_blink; // disable interrupt __disable_interrupt(); // set LED pins as output P1REN = 0; P1DIR = MSP_RX_PIN + MSP_TCK_PIN; P1OUT = MSP_RX_PIN; // set delay blink according to the error number delay_blink = 100 * error; while(1) { // blink, blink, blink till the end of time... P1OUT ^= MSP_RX_PIN + MSP_TCK_PIN; delay(delay_blink); } } /**************************************************************************//** * * Port1_Isr * * @brief Port 1 interrupt * * @param - * * @return - * ******************************************************************************/ #pragma vector=PORT1_VECTOR __interrupt void Port1_Isr(void) { // MSP_RX_PIN state change if(P1IFG & MSP_RX_PIN) { // change output pin P1OUT ^= PC_TX_PIN; // clear interrupt and change interrupt transition P1IFG &= ~MSP_RX_PIN; P1IES ^= MSP_RX_PIN; } // PC_RX_PIN state change else if(P1IFG & PC_RX_PIN) { // change output pin P1OUT ^= MSP_TX_PIN; // clear interrupt and change interrupt transition P1IFG &= ~PC_RX_PIN; P1IES ^= PC_RX_PIN; // activate timers if necessary if((add_parity == true) && (start_bit == true)) { // toggle flag start_bit = false; // CCR0 is used for sampling the bits TA0CCR0 = TA0R + bit_1_5_cnt; TA0CCTL0 = CCIE; // CCR1 is used to mark the end of the bits TA0CCR1 = TA0R + bit_9_cnt; TA0CCTL1 = CCIE; } } } /**************************************************************************//** * * TimerA_Ccr0_Isr * * @brief Timer_A CCR0 interrupt * * @param - * * @return - * ******************************************************************************/ #pragma vector=TIMER0_A0_VECTOR //TIMERA0_VECTOR __interrupt void TimerA_Ccr0_Isr(void) { // clear interrupt TA0CCTL0 &= ~CCIFG; // check if the ISR is actually valid if(add_parity == false) { // set error variable error = 2; // trap CPU trap(); } // sample one bits if(P1IN & PC_RX_PIN) { ones_cnt++; } // check if already 8 bits sampled if(++bit_cnt < 8) { // re-trigger in 1 bit time TA0CCR0 = TA0R + bit_1_cnt; } if(bit_cnt == 8) { // stop timer TA0CCTL0 = 0; } } /**************************************************************************//** * * TimerA_Vect_Isr * * @brief Timer_A vector interrupt * * @param - * * @return - * ******************************************************************************/ #pragma vector=TIMER0_A1_VECTOR //TIMERA1_VECTOR __interrupt void TimerA_Vect_Isr(void) { static bool start_parity = true; bool reset = true; // check if the ISR is actually valid if(add_parity == false) { // set error variable error = 3; // trap CPU trap(); } if(TA0IV == 0x02) { // clear interrupt flag TA0CCTL1 &= ~CCIFG; if(start_parity == true) { // check the ones bit if(!(ones_cnt & 0x01)) { // if 1s are even, set parity bit to 0 P1OUT &= ~MSP_TX_PIN; // start timer TA0CCR1 = TA0R + bit_1_cnt; // toggle flag start_parity = false; // do not reset reset = false; } } else { // toggle output after parity bit P1OUT |= MSP_TX_PIN; // toggle flag start_parity = true; } if(reset == true) { // reset counters bit_cnt = 0; ones_cnt = 0; // switch off CCR TA0CCTL1 = 0; // set flag for start bit start_bit = true; } } } /**************************************************************************//** * * Trap_Isr * * @brief trap ISR for unwanted interrupt * * @param - * * @return - * ******************************************************************************/ #pragma vector=NMI_VECTOR,ADC10_VECTOR,PORT2_VECTOR,USCIAB0TX_VECTOR,USCIAB0RX_VECTOR,WDT_VECTOR __interrupt void Trap_Isr(void) { // set error number error = 4; // trap CPU trap(); }
I have tested it by myself on Launchpad v1.5 with MSP430G2553, and it should work.
I flashed into MSP430G2553 using files you give
but didn't work.... it is the same as before
Hi Sungae,
do you use the lpad_bsl_int_g2553.c i gave you above? you must compile it with either CCS/IAR (don't forget to set/change the target device as MSP430G2553).
Another question, are you using the BSL_Scripter.exe from the SLAA535A or from SLAU319? The one from SLAU319 has a bug which prevent it works with COM PORT > 9. The one in SLAA535 doesn't have this bug, but you might get error that "MSCVCR100D.dll is missing", and the solution is to do as suggested here:
Yes, I compiled and target device option was MSP430G2553.
and COM PORT was 17 but I used from SLAA535A.zip
I used IAR workbench kickstart, Linker option, Extra Output format msp430-txt.
How can I check that firmware is correct ?
my compile text file :
@C000 01 01 01 @C004 31 40 00 04 3C 40 04 02 3D 40 0F 00 B0 12 B6 C4 3C 40 00 02 3D 40 00 C0 3E 40 03 00 B0 12 C8 C4 B0 12 2C C0 B0 12 CC C4 B2 40 80 5A 20 01 F2 D0 20 00 53 00 B0 12 60 C1 C2 43 56 00 F2 40 8E 00 57 00 F2 40 60 00 56 00 F2 F0 FC 00 53 00 E2 C3 02 00 00 3C 3F 40 1F 00 3F 53 FE 2F E2 B3 02 00 F3 2F F2 D0 82 00 22 00 F2 D0 82 00 21 00 F2 F0 BB 00 22 00 F2 D0 44 00 27 00 F2 D0 44 00 21 00 F2 D0 31 00 22 00 F2 F0 CE 00 21 00 F2 C2 22 00 F2 D2 27 00 F2 D2 21 00 3C 40 E8 03 B0 12 A6 C3 F2 B2 20 00 18 2C 3F 40 9E 86 03 43 1E 43 3F 53 3E 63 FD 2F F2 B2 20 00 0E 2C C2 43 00 02 D2 D3 21 00 3C 40 F4 01 B0 12 A6 C3 D2 C3 21 00 3C 40 F4 01 B0 12 A6 C3 D2 D3 21 00 3F 40 41 00 3F 53 FE 2F F2 E0 21 00 21 00 3F 40 41 00 3F 53 FE 2F F2 E0 21 00 21 00 3F 40 0F 00 3F 53 FE 2F F2 E0 21 00 21 00 3F 40 41 00 3F 53 FE 2F F2 D0 10 00 21 00 3F 40 41 00 3F 53 FE 2F F2 E0 21 00 21 00 3C 40 64 00 B0 12 A6 C3 F2 B0 40 00 20 00 04 2C D2 43 12 02 B0 12 E8 C3 C2 93 00 02 05 24 B2 40 24 02 60 01 B0 12 F4 C1 F2 D0 44 00 24 00 F2 D0 44 00 25 00 C2 43 23 00 32 D2 FF 3F 0A 12 0B 12 5E 42 FE 10 5F 42 FF 10 D2 42 FE 10 56 00 5D 42 FF 10 7D D0 80 00 C2 4D 57 00 F2 F0 FC 00 53 00 E2 C3 02 00 00 3C 3F 40 1F 00 3F 53 FE 2F E2 B3 02 00 F3 2F B2 40 00 59 62 01 B2 40 24 02 60 01 92 B3 62 01 FD 2B 92 C3 62 01 1A 42 72 01 92 B3 62 01 FD 2B 92 C3 62 01 1F 42 72 01 0F 8A 0A 4F 3C 40 E8 03 0E 4A B0 12 5C C4 82 4C 04 02 0B 4A 12 C3 0B 10 3C 40 E8 03 0E 4A B0 12 5C C4 0B 9E 02 2C 92 53 04 02 82 43 60 01 3B 41 3A 41 30 41 E2 D2 26 00 B2 40 00 89 64 01 92 B3 64 01 FD 2B F2 C0 80 00 21 00 92 C3 64 01 1F 42 74 01 B2 40 00 49 64 01 92 B3 64 01 FD 2B F2 D0 80 00 21 00 82 43 64 01 1E 42 74 01 0E 8F 82 4E 06 02 1E 42 06 02 12 C3 0E 10 0E 11 0E 11 82 4E 08 02 1E 42 06 02 12 C3 0E 10 0E 11 0E 11 0E 11 1E 52 08 02 82 4E 0A 02 1E 42 06 02 1E 52 08 02 1D 42 08 02 12 C3 0D 10 0D 11 0D 11 0D 11 0E 5D 82 4E 0C 02 E2 C2 26 00 30 41 0A 12 0D 12 0C 12 0F 12 0E 12 5A 43 C2 93 00 02 05 20 F2 40 03 00 12 02 B0 12 E8 C3 A2 93 2E 01 24 20 92 C3 64 01 C2 93 02 02 10 24 92 B3 10 02 12 2C F2 C0 80 00 21 00 1F 42 70 01 1F 52 08 02 82 4F 74 01 C2 43 02 02 4A 43 05 3C F2 D0 80 00 21 00 D2 43 02 02 4A 93 08 24 82 43 0E 02 82 43 10 02 82 43 64 01 D2 43 01 02 3E 41 3F 41 3C 41 3D 41 3A 41 00 13 0F 12 F2 B0 40 00 23 00 09 28 E2 E3 21 00 F2 C0 40 00 23 00 F2 E0 40 00 24 00 22 3C E2 B2 23 00 1F 28 F2 E0 80 00 21 00 E2 C2 23 00 E2 E2 24 00 D2 B2 01 02 00 02 14 24 C2 43 01 02 1F 42 70 01 1F 52 0A 02 82 4F 72 01 B2 40 10 00 62 01 1F 42 70 01 1F 52 0C 02 82 4F 74 01 B2 40 10 00 64 01 3F 41 00 13 0D 12 0C 12 0F 12 0E 12 92 C3 62 01 C2 93 00 02 04 20 E2 43 12 02 B0 12 E8 C3 E2 B2 20 00 02 28 92 53 10 02 1F 42 0E 02 1F 53 82 4F 0E 02 3F 92 06 2C 1F 42 70 01 1F 52 08 02 82 4F 72 01 B2 92 0E 02 02 20 82 43 62 01 3E 41 3F 41 3C 41 3D 41 00 13 0A 12 0A 4C 82 43 62 01 82 93 04 02 09 20 0F 4A 0F 5F 0F 5F 0E 4F 0F 5F 0F 5E 82 4F 72 01 07 3C 1C 42 04 02 0E 4A B0 12 2A C4 82 4C 72 01 B2 40 14 01 60 01 92 B3 62 01 FD 2B 82 43 60 01 3A 41 30 41 0A 12 32 C2 03 43 C2 43 27 00 F2 40 41 00 22 00 F2 40 40 00 21 00 5F 42 12 02 4F 4F 0F 5F 0F 5F 0E 4F 0F 5F 0F 5F 0F 5F 0E 5F 0F 5F 0F 5E 0A 4F F2 E0 41 00 21 00 0C 4A B0 12 A6 C3 F9 3F 7C F3 7E F3 09 12 09 4C 0C 9E 03 28 09 4E 0E 4C 12 C3 0F 43 0C 43 0D 43 09 10 02 28 0C 5E 0D 6F 0E 5E 0F 6F 09 10 F9 23 02 28 0C 5E 0D 6F 39 41 30 41 7C F3 7E F3 0F 4E 0D 4C 0E 43 1C 43 0D 5D 0E 6E 0E 9F 01 28 0E 8F 0C 6C F9 2B 30 41 0D 12 0C 12 0F 12 0E 12 E2 42 12 02 B0 12 E8 C3 3E 41 3F 41 3C 41 3D 41 00 13 0A 12 21 83 0A 4C 81 4A 00 00 0D 41 0D 53 5C 43 B0 12 D4 C4 F8 3F 0F 4C 04 3C FF 4D 00 00 1F 53 3E 53 0E 93 FA 23 30 41 0F 4C 0F 5D 03 3C CC 43 00 00 1C 53 0C 9F FB 23 30 41 30 40 A4 C4 30 40 D0 C4 30 40 8E C4 30 41 @FFE4 F0 C2 74 C4 @FFEA 74 C4 74 C4 74 C4 7A C2 54 C3 74 C4 @FFFC 74 C4 04 C0 q
Sungae Kim said:Yes, I compiled and target device option was MSP430G2553.
and COM PORT was 17 but I used from SLAA535A.zip
I used IAR workbench kickstart, Linker option, Extra Output format msp430-txt.
If you are using IAR, you don't really need to first generate the TI-TXT file and download it separately, you can just push the debug button to download the code into the MSP430G2553 on the launchpad.
Sungae Kim said:How can I check that firmware is correct ?
When you start the G2553 on the Launchpad (or after pushing the reset button), what does it do? How are the LEDs? Are both turned on steadily, or blinking?
I've just tried everything I can do ;;;(directly download, using MSP430Flasher),
and Both turned on steadily.
ok,
one more try, if you unplug the launchpad USB cable, and replug it (or maybe just reset it, but sometime after debugging/programming from IDE/software programmer, the RST line is hold high somehow and reset button doesn't really work), do you see red LED blink once before both LEDs turned on?
If yes, this might be the problem. This basically means that the G2553 will not add the parity bit to the data sent by PC, while the CC430 expects this. You should check the connection at the push button and make sure that it is pulled high after reset (actually the code should enable the internal pull-up resistor also at P1.3).
**Attention** This is a public forum