MSP430 Проблемы с совместимостью

Я использую панель запуска MSP430. Чтобы быть более конкретным, я использую микроконтроллер MS430G2553. Я пытался скомпилировать код, предназначенный для MS430G2230, но проблема в том, что некоторые части кода не соответствуют MS430G2553. это код

void USI_Init (void)
{
 // configure SPI
 USICTL0 |= USISWRST;                      // USI in reset
 USICTL0 = USICTL0 | USILSB;               // Least Significant Bit first
 USICTL0 |= USIPE7 + USIPE6 + USIPE5 + USIMST + USIOE; // Port, SPI Master
 USICTL1 |= USICKPH;                       // flag remains set
 USICKCTL = USIDIV_1 + USISSEL_2;          // /2 SMCLK
 USICTL0 &= ~USISWRST;                     // USI released for operation
 USICNT = USICNT | 0x50;                   // 16 bit mode; 16 bit to be    transmitted/received
 return;
}


и это вторая подпрограмма, которая не работает


#pragma vector=WDT_VECTOR
__interrupt void Write_Matrix(void)
{
static unsigned char index=0;

 P1OUT |= DATA_LATCH_PIN;
 P1OUT &= ~DATA_LATCH_PIN;

  USICTL1 &= ~USIIFG;           // Clears the interrupt flag
  USISRH = 1<<index;            // Move the index of the column in the high bits of USISR
  USISRL = Matrix[index];       // Move the index of the rows (value of Matrix[index]) in the low bits of USIRS
  USICNT = USICNT | 0x10;       // 16 bit format
 index = (index+1) & 7;

 return;
}

Есть идеи? Спасибо


person user1730250    schedule 10.02.2014    source источник


Ответы (1)


Во-первых, вы не должны ожидать, что код будет на 100% переносим между этими двумя семействами процессоров. MSP430G2553 — это линейный процессор с гораздо более высокой стоимостью, и он поставляется с большим количеством периферийных устройств, чем MSP430G2230.

Пожалуйста, обратитесь к следующим схемам:

Функциональная схема MSP430G2230

Функциональная схема MSP430G2230

Функциональная схема MSP430G2553

Функциональная схема MSP430G2553

Как видите, эти микроконтроллеры очень разные.

Ваша первая процедура не работает, потому что у MSP430G2553 нет USI периферийного устройства. Вместо этого SPI-связь осуществляется с использованием USCI периферийного устройства. Вам нужно будет изменить свой код, чтобы использовать это периферийное устройство вместо этого. Дополнительные сведения см. в Руководстве пользователя. .

Ваша вторая процедура снова не работает из-за отсутствия USI периферии. Обратите внимание на ссылки на регистры USI: USICTL1 &= ~USIIFG; и т. д. Вам нужно будет еще раз изменить свой код, чтобы использовать периферийное устройство USCI.

person bblincoe    schedule 10.02.2014