Uso de la comunicación SerialPort entre PC y MSP430F5438A. Es C # en el lado de la PC y Code Composer Studio (CCS) en el lado de la MSP430. Estoy enviando "¡Hola mundo!" a MCU. Puse el puntero de flash en la dirección 0x20000:
unsigned long *Flash_ptr= 0x20000; // Initialize Flash pointer
luego escribo en flash (este procedimiento se repite como el número de caracteres en la cadena o el archivo de texto):
void write_SegC(char data)
{
//__disable_interrupt(); // 5xx Workaround: Disable global
// interrupt while erasing. Re-Enable
// GIE if needed
FCTL3 = FWKEY; // Clear Lock bit
FCTL1 = FWKEY+ERASE; // Set Erase bit
*(unsigned int *)Flash_ptr = 0; // Dummy write to erase Flash seg
FCTL1 = FWKEY+WRT; // Set WRT bit for write operation
while(!(WAIT & FCTL3));
*Flash_ptr++ = data; // Write value to flash
FCTL1 = FWKEY; // Clear WRT bit
FCTL3 = FWKEY+LOCK; // Set LOCK bit
}
Y luego enviarlo de vuelta a la PC:
void read_SegC(void)
{
unsigned long i;
Flash_ptr=0x20000;
for(i = 0; i < 8; i++)
{
while(!(WAIT & FCTL3));
while(!(UCA1IFG & UCTXIFG));
UCA1TXBUF=*Flash_ptr++; // Write long int to Flash
}
}
lo que obtengo en PC: 2d! Wo
en lugar de: ¡Hola mundo! lo que significa que acabo de obtener algunos caracteres de la cadena! el resto son basura. ¿Qué hice mal?