Например TDA7294

Форум РадиоКот • Просмотр темы - Launchpad MSP430G2553 + Nokia 3310 LCD
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн дек 29, 2025 13:33:47

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Launchpad MSP430G2553 + Nokia 3310 LCD
СообщениеДобавлено: Вс фев 03, 2013 02:24:49 
Родился

Зарегистрирован: Вс фев 03, 2013 02:12:52
Сообщений: 3
Рейтинг сообщения: 0
Здравствуйте помучившись с подключением дисплея от Nokia 3310 к Launchpad. И так его и не подключив, решил обратиться за советом.
Суть проблемы такова дисплей никак не хочет что либо показать.
Подключил я его вот так:
Дисплей МК
1.VDD VDD
2.SCK P1.5
3.SDIN P1.7
4.D/C P1.4
5.SCE P1.3
6.GND GND
7.VOUT Через конденсатор(2.2мкФ) на землю
8.RES P2.0

Ну и исходный код выглядит вот так.
#include "io430.h"

#define SCLK BIT5
#define SIMO BIT7
#define CS BIT3
#define RES BIT0
#define DC BIT4
#define SOMI BIT6
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer

UCB0CTL1 = UCSWRST;

P1DIR |= CS +DC;
P2DIR |= RES;
P1SEL |= SOMI + SIMO + SCLK;
P1SEL2 |= SOMI + SIMO + SCLK;

UCB0CTL0 |= UCCKPH + UCMSB + UCMST + UCSYNC;
UCB0CTL1 |= UCSSEL_2;
UCB0CTL1 &= ~UCSWRST;

P1OUT |= DC;

P1OUT |= CS;

P2OUT &=~RES;
__delay_cycles(75);
P2OUT |= RES;

UCB0TXBUF = 0x21;
while(!(IFG2 & UCB0TXIFG));
UCB0TXBUF = 0x10;
while(!(IFG2 & UCB0TXIFG));
UCB0TXBUF = 0x20;
while(!(IFG2 & UCB0TXIFG));
UCB0TXBUF = 0x0С;


__delay_cycles(75);
P1OUT |= DC;
for(int j=0;j<15;j++);
UCB0TXBUF=0xFF;

}


Может быть кто нибудь сталкивался с подобной проблемой или я где-то накосячил, подскажите в какую сторону смотреть.
Заранее благодарен.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Launchpad MSP430G2553 + Nokia 3310 LCD
СообщениеДобавлено: Вс фев 03, 2013 08:30:39 
Друг Кота
Аватар пользователя

Карма: 75
Рейтинг сообщений: 621
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3764
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Я с этим дисплеем не работал, но что бросается в глаза:
1. Коды инициализации это команды, поэтому перед их засылкой D/C должен быть сброшен в 0, а у Вас он 1.
2. Флаг прерывания ТХ следует проверять непосредственно перед посылкой байта в TXBUF а не после. Особенно это отностся к циклу в конце кода, где это проверка вообще отсутствует.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Launchpad MSP430G2553 + Nokia 3310 LCD
СообщениеДобавлено: Вс фев 03, 2013 12:56:20 
Родился

Зарегистрирован: Вс фев 03, 2013 02:12:52
Сообщений: 3
Рейтинг сообщения: 0
Спасибо за ответ. Попробовал поправить код как вы посоветовали, но к сожалению снова увидел пустоту на экране. Мне кажется что вся загвоздка в том что я не правильно работаю с SPI.

Код после правок приобрел такой вид:

Код:
#include "io430.h"

#define SCLK BIT5
#define SIMO BIT7
#define CS BIT3
#define RES BIT0
#define DC BIT4
#define SOMI BIT6
void main(void)
{
 WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer

 UCB0CTL1 = UCSWRST;

 P1DIR |= CS +DC;
 P2DIR |= RES;
 P1SEL |= SOMI + SIMO + SCLK;
 P1SEL2 |= SOMI + SIMO + SCLK;

 UCB0CTL0 |= UCCKPH + UCMSB + UCMST + UCSYNC;
 UCB0CTL1 |= UCSSEL_2;
 UCB0CTL1 &= ~UCSWRST;


 P1OUT &=~ DC;
 P1OUT &=~ CS;

 P2OUT &=~RES;
 __delay_cycles(75);
 P2OUT |= RES;

    while(!(IFG2 & UCB0TXIFG));
UCB0TXBUF = 0x21;
    while(!(IFG2 & UCB0TXIFG));
 UCB0TXBUF = 0x06;
    while(!(IFG2 & UCB0TXIFG));
 UCB0TXBUF = 0x13;
    while(!(IFG2 & UCB0TXIFG));
 UCB0TXBUF = 0xF8;
    while(!(IFG2 & UCB0TXIFG));
 UCB0TXBUF = 0x20;
    while(!(IFG2 & UCB0TXIFG));
 UCB0TXBUF = 0x0C;

 
 P1OUT |= DC;
 for(int j=0;j<15;j++){
   while(!(IFG2 & UCB0TXIFG));
   UCB0TXBUF=0xFF;
 }
 
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Launchpad MSP430G2553 + Nokia 3310 LCD
СообщениеДобавлено: Вс фев 03, 2013 17:59:52 
Друг Кота
Аватар пользователя

Карма: 75
Рейтинг сообщений: 621
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3764
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Я такие программы всегда писал на АСМе и через прерывания. Вот мой код инициализации модуля SPI.
У Вас отсутствует установка регистров UCB0BR0 и UCB0BR1

Код:
        mov.w   #WDTPW+WDTHOLD, &WDTCTL ; stop watchdog timer

        ; clock setup
   mov.b   &CALDCO_8MHZ, &DCOCTL   
   mov.b   &CALBC1_8MHZ, &BCSCTL1    ; set 8 MHz clock    
   mov.b   #DIVS_1, &BCSCTL2     ; SMCLK=DCO/2   

        ; SPI setup for eUSCI_B0       
        mov.b   #UCSSEL_2+UCSWRST, &UCB0CTL1  ; keep SPI module in reset 
        mov.b   #UCMSB+UCCKPH+UCMST+UCSYNC, &UCB0CTL0
        mov.b   #1, &UCB0BR0            ; clock division factor (1:1)
        clr.b   &UCB0BR1


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Launchpad MSP430G2553 + Nokia 3310 LCD
СообщениеДобавлено: Вт фев 05, 2013 16:31:24 
Родился

Зарегистрирован: Вс фев 03, 2013 02:12:52
Сообщений: 3
Рейтинг сообщения: 0
И снова нету результат. Перепроверил подключение, ещё раз перечитал datasheet на МК и диплей, проверил что бы всё точно соответствовало им, но всё равно вижу пустоту. У меня совершенно не осталось идей почему дисплей не хочет работать.

Код немного видоизменился:
Код:
#include "io430.h"

#define SCLK BIT5
#define SIMO BIT7
#define CS BIT3
#define RES BIT0
#define DC BIT4
#define SOMI BIT6
void main(void)
{
 WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
 
 P2DIR |= RES;
 
 P2OUT &=~RES;
 __delay_cycles(75);
 P2OUT |= RES;
 
// UCB0CTL1 &= ~UCSWRST;
 BCSCTL1 = CALBC1_8MHZ;            // 1MHz clock
 DCOCTL = CALDCO_8MHZ;
 
 BCSCTL2 |= DIVS_1;
 
 P1DIR |= CS +DC;
 P1SEL |= SOMI + SIMO + SCLK;
 P1SEL2 |= SOMI + SIMO + SCLK;

 UCB0CTL1 = UCSSEL_2+UCSWRST;
 UCB0CTL0 |= UCCKPH + UCMSB + UCMST + UCSYNC;
 
 
 UCB0BR0 |= 0x10;                         
 UCB0BR1 = 0;
 
 UCB0CTL1 &= ~UCSWRST;


 P1OUT &=~ DC;
 P1OUT &=~ CS;

    while(!(IFG2 & UCB0TXIFG));
UCB0TXBUF = 0x21;
    while(!(IFG2 & UCB0TXIFG));
 UCB0TXBUF = 0x06;
    while(!(IFG2 & UCB0TXIFG));
 UCB0TXBUF = 0x13;
    while(!(IFG2 & UCB0TXIFG));
 UCB0TXBUF = 0xF8;
    while(!(IFG2 & UCB0TXIFG));
 UCB0TXBUF = 0x20;
    while(!(IFG2 & UCB0TXIFG));
 UCB0TXBUF = 0x0C;

 
 P1OUT |= DC;
 for(int j=0;j<15;j++){
   while(!(IFG2 & UCB0TXIFG));
   UCB0TXBUF=0xFF;
 }
 while (1)
 {
 }
}


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y