Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Texas Instruments => MSP430 Serisi => Konuyu başlatan: baran123 - 16 Şubat 2016, 18:36:08

Başlık: MSP430G2553 SPI Init
Gönderen: baran123 - 16 Şubat 2016, 18:36:08
SPI ını denerken elimdeki OLED kullanayım dedim.Önce ayarları yapıp sorunsuz bir şekilde çalıştırdım sonra gereksiz kısımları temizlerken init kısmında bir şeyi yanlışlıkla sildim geri alma falan yaptım ama bir türlü tekrar çalıştırmadım.Her kısmı kontrol ettim ben nerede hata yapıyorum acaba ?


void SPI_Init(void)
{
//
P1DIR |= BIT1 + BIT2 + BIT4;

//
P1SEL  = BIT1 + BIT2 + BIT4;

//
P1SEL2 = BIT1 + BIT2 + BIT4;

//
UCA0CTL1 = UCSWRST;

// Master Mode, MSB, SYNC, CKP
UCA0CTL0 |= UCMST + UCMSB + UCSYNC + UCCKPH;

// Freq = SMCLK / 2 (16MHz / 2 = 8MHz)
UCA0CTL1 |= UCSSEL_2;

// Start
UCA0CTL1 &= ~UCSWRST;
}
Başlık: Ynt: MSP430G2553 SPI Init
Gönderen: bybik - 17 Şubat 2016, 11:19:14
Şuan kullandığım sorunsuz spi init kodlarını yolluyorum.Gözüme çarpan farklardan biri.Spi iolarnı yükelrken ben 0 a çekmişim sen 1 e.Bir dene bakalım sonuç ne olacak.

void SpiInit (void)
{

P3SEL2&=~(BIT1 | BIT2 | BIT3);
P3SEL|=(BIT1 | BIT2 | BIT3);


UCB0CTL1 |= UCSWRST;

UCB0CTL0 = UCCKPH | UCMSB | UCMST | UCMODE_0 | UCSYNC;  r
UCB0BR0 = 0x01;
UCB0BR1 = 0x00;
UCB0CTL1 = UCSSEL_2;

#ifdef _DEBUG
SoftUartSendString("Spi yuklendi\r\n");
#endif
}
Başlık: Ynt: MSP430G2553 SPI Init
Gönderen: Çizgi Tagem - 17 Şubat 2016, 12:32:46
P1DIR |= BIT1 + BIT2 + BIT4; Kısmı gereksiz olmakla birlikte Clock frekansını ayarlamak için prescaler yazmaçlarına değer atanmamış. Yani SPI saat frekansı direk olarak SMC frekansına eşit olabilir. Azami değer 16MHz olabilir osc ayarlarını bilmiyorum. Frekans yüksek ise kullandığın LCD desteklemiyor olabilir. Yada kodun başka bir tarafında da sorun olabilir.
Başlık: Ynt: MSP430G2553 SPI Init
Gönderen: baran123 - 17 Şubat 2016, 19:50:42
Sorun tahmin ettiğim gibi Init bölümündeymiş.Şu şekilde düzenledim.


void SPI_Init(void)
{
//
P1DIR |= BIT1 + BIT2 + BIT4;

//
P1SEL  = BIT1 + BIT2 + BIT4;

//
P1SEL2 = BIT1 + BIT2 + BIT4;

//
UCA0CTL1 = UCSWRST;

// Master Mode, MSB, SYNC, CKP
UCA0CTL0 = UCCKPH | UCMSB | UCMST | UCMODE_0 | UCSYNC;

// Freq = SMCLK / 2 (16MHz / 2 = 8MHz)
UCA0CTL1 |= UCSSEL_2;

//
UCA0BR0 = 0x01;

//
UCA0BR1 = 0x00;

// Start
UCA0CTL1 &= ~UCSWRST;
}


Yanıtlar için teşekkür ederim.