Страница 7 из 8

Re: MSP430G2452 и SD карта

Добавлено: Вт июл 02, 2013 17:41:35
Ser60
GreatDrek - я уже упоминал, что в коде по той ссылке используется не программный, а аппаратный драйвер SPI. Т.к. задействован модуль USCI_B0 в МК, то, следует задействовать выводы 6,7,14,15 корпуса F2553, а для управления специфичными выводами ЖКИ дополнительно используются выводы как описано в файле lcd.h проекта:

Код: Выделить всё

#define LCD_nRES BIT0 // port 2
#define LCD_nSCE BIT1 // port 2
#define LCD_Dc BIT2   // port 2
Насчет названий, MOSI = SIMO = SDIN и т.д.

Re: MSP430G2452 и SD карта

Добавлено: Вт июл 02, 2013 18:09:38
GreatDrek
Я попутал, я хотел сказать аппаратный.

Re: MSP430G2452 и SD карта

Добавлено: Вт июл 02, 2013 18:51:38
GreatDrek
MOSI и я находил, я не могу найти D/C, SCE, VOUT, RES.

Re: MSP430G2452 и SD карта

Добавлено: Вт июл 02, 2013 18:57:08
Ser60
Я-же привел выше выдержку из кода:
D/C = LCD_Dc BIT2 // port 2
SCE = LCD_nSCE BIT1 // port 2
RES = LCD_nRES BIT0 // port 2
VOUT - (из статьи) Отвечает за контраст, по умолчанию должен быть подключён к земле через конденсатор 4.7uF

Re: MSP430G2452 и SD карта

Добавлено: Вт июл 02, 2013 18:58:54
GreatDrek
Вот на этой картинке можете написать распиновку для дисплея?

Изображение

Re: MSP430G2452 и SD карта

Добавлено: Вт июл 02, 2013 19:32:03
Ser60
Похоже Вы не читаете, что я Вам пишу. Я уже 2 раза все словами описал, а нарисовать картинку - это уже слишком. Не понимаю, что может быть неясно. Последний раз:
SCK - P1.5
SDIN - P1.7
D/C - P2.2
SCE - P2.1
RES - P2.0
Остальные выводы ЖКИ для питания.

Re: MSP430G2452 и SD карта

Добавлено: Вт июл 02, 2013 20:13:24
GreatDrek
Подключаю, заливаю программу и ничего.

Re: MSP430G2452 и SD карта

Добавлено: Вт июл 02, 2013 21:00:53
Ser60
Конечно, ничего не будет. Я-же говорил - пишите сами. Или читайте ДШ, чтобы разбираться в программе со знанием дела. Беглый просмотр кода выявил, что порт P1 не настроен на работу с SPI (?!)

Код: Выделить всё

void SpiInit() 
{
    P3SEL |= 0x0A;    <- зачем это??? в МК нет P3
    P1SEL |= 0xE0;    <- надо добавить
    P1SEL2 |= 0xE0;   <- надо добавить
Кроме того, в файлах lcd.cpp и main.cpp замените в include тип Вашего МК:

Код: Выделить всё

#include "msp430g2553.h"
Это лишь беглый просмотр. Если не будет работать - вникайте в ДШ, будут вопросы по нему - отвечу. Отлаживать эту программу мне некогда.

Re: MSP430G2452 и SD карта

Добавлено: Вт июл 02, 2013 21:19:43
GreatDrek
Все равно не работает, как можно писать драйвер если я не знаю с чего начинать даже.

Re: MSP430G2452 и SD карта

Добавлено: Вт июл 02, 2013 21:21:33
GreatDrek
Как вообще можно проверить работоспособность дисплея без драйвера?

Re: MSP430G2452 и SD карта

Добавлено: Вт июл 02, 2013 21:50:20
YS
я не знаю с чего начинать
С чтения документации.

Я сам с нуля писал драйвер для этого ЖК (правда, под AVR). Ничего там сложного нет. Просто надо подойти систематически и не ждать результатов без понимания и через десять минут.

Re: MSP430G2452 и SD карта

Добавлено: Вт июл 02, 2013 22:10:15
GreatDrek
Ладно я сейчас опишу свои мысли, а вы если не трудно скажите, что не так.

SCK
(в документации SCLK)
Тактовый сигнал SPI (Что он делает не пойму? )

SDIN
Линия данных SPI (По этому проводу мы отправляем наши байты?)

D/C
Этот пин выбирает устанавливает – является передаваемый байт командой или данными. 1 – данные, 0 – команда. ( То есть если на этот выход подается + то дисплей принимает данные, если - то команды. Команды типа управления дисплеем? Какие данные?)

SCE
Чип селект. При нуле на SCE — чип дисплея принимает данные с входящей линии, при единице – находится в состоянии высокого импеданса, то есть отключён от линии.(сигнал ноль-активен) (То есть если мы подаем ток, то дисплей отрисовывает то что принял?)


RES
Сигнал сброса внутренних регистров контроллера экрана и видеопамяти. Данный сигнал ноль-активен (Если нам надо сбросить текущий кадр например то подаем минус на этот выход?)

Re: MSP430G2452 и SD карта

Добавлено: Вт июл 02, 2013 22:28:25
YS
Что он делает не пойму?
Я уже писал ранее, что для ясности Вам нехудо бы прочесть про интерфес SPI, коли уж Вы его используете. Посмотреть на временные диаграммы, проникнуться его работой. Вы с тех пор хотя бы в Википедию сходили почитать про SPI? Похоже, что нет.
Команды типа управления дисплеем? Какие данные?
А вот про это уже надо читать в том даташите, что я привел в предыдущем сообщении.

Генеральная идея такая: дисплей от Nokia 3310 это LCD-стекляшка, которой управляет контроллер PCD8544. Связь с этим контроллером (передача команд и данных) идет через SPI. Контроллер принимает команды и данные картинки. Команды выполняет, данные отрисовывает на стекляшке (в частности, в соответствии с параметрами, установленными с помощью команд). Потому Вам надо:

1. Почитать, что такое SPI и с чем его едят. Сама тема проще пареной репы и расписана на каждом углу, я не буду это переписывать тут руками заново.

2. Прочесть документацию на сам контроллер стекляшки и понять, какие команды для чего и каков формат данных/команд. Опять же, я не собираюсь переписывать уже написанное.

3. Опционально - почитать, как реализован и управляется модуль SPI конкретно в Вашем контроллере. Это уже в User's Guide на интересующее семейство MSP430. Если решите писать софтовый SPI - этот шаг можно пропустить.

Re: MSP430G2452 и SD карта

Добавлено: Вт июл 02, 2013 22:35:25
Ser60
Упс, YS уже опередил.
GreatDrek писал(а):как можно писать драйвер если я не знаю с чего начинать даже
Встречный вопрос - как можно что-то пытаться сделать с МК, если нет понимания что делаете? Значит, надо снача почитать литературу.
GreatDrek писал(а):Как вообще можно проверить работоспособность дисплея без драйвера?
Никак! Прото никак.
SCK
Тактовый сигнал SPI (Что он делает не пойму? )
Он служит для синхронизации обмена данными. Подробности про протокол SPI в википедии.
http://ru.wikipedia.org/wiki/Serial_Per ... _Interface
SDIN
Линия данных SPI (По этому проводу мы отправляем наши байты?)
Да! Подробности про протокол SPI в википедии.
Этот пин выбирает устанавливает – является передаваемый байт командой или данными. 1 – данные, 0 – команда. ( То есть если на этот выход подается + то дисплей принимает данные, если - то команды. Команды типа управления дисплеем? Какие данные?)
Первая часть - ответ ДА! Про команды дисплея см. стр. 14 ДШ на контроллер, что YS прислал. Вообще, прочитайте этот документ внимательно прежде чем задавать вопросы. Все, что не команда ЖКИ, то данные. Например, какие пикселы на экране подсвечивать.
SCE
Чип селект. При нуле на SCE — чип дисплея принимает данные с входящей линии, при единице – находится в состоянии высокого импеданса, то есть отключён от линии.(сигнал ноль-активен) (То есть если мы подаем ток, то дисплей отрисовывает то что принял?)
Не совсем. При подаже 0в ЖКИ активизитрует SPI интерфейс и принимает с него команды/данные. Перед каждой посылкой данных/команд этот вывод следует обнулять и устанавливать в 1 после окончания посылки. Это написано в протоколе SPI в Вики. Почитайте сначала.

RES
Сигнал сброса внутренних регистров контроллера экрана и видеопамяти. Данный сигнал ноль-активен (Если нам надо сбросить текущий кадр например то подаем минус на этот выход?)
Этот вывод для возврата контроллера ЖКИ в первоначальное состояние. После сброса его нужно будет заново активизировать. Подробности в ДШ.

Опцию (3) из сообщения выше я-бы перевел в разряд обязательных. Без освоения всей рекомендованной литературы и не пытайтесь что-то сделать с ЖКИ. Успех может быть только случайным.

Re: MSP430G2452 и SD карта

Добавлено: Вт июл 02, 2013 22:40:56
YS
Опцию (3) из сообщения выше я-бы перевел в разряд обязательных.
Если писать софтовый SPI, то про модуль в МК можно не читать. :)

Я когда писал драйвер для SD-карточки, специально написал софтовый SPI, потому что мне было лень читать даташит на модуль SPI в ATmega48. :)) Тем не менее, модуль софтового SPI я вынес отдельно, так что если потребуется скорость, то всегда можно раскурить даташит и прикрутить аппаратный SPI, ничего не меняя в собственно драйвере SD. :wink:

Вообще, разделение законченных кусков функционала по отдельным модулям - хорошая и полезная практика.

P.S.

Еще софтовый SPI хорош тем, что не привязан к конкретным ножкам МК - можно реализовать на любом порту и раскидать сигналы по ножкам как будет удобнее. Опять же, в случае c SD мне было лень загибать провода кренделями, и софтовый SPI дал мне возможность воткнуть их ровненько, "как есть", учтя это программно. :))

Re: MSP430G2452 и SD карта

Добавлено: Вт июл 02, 2013 22:59:55
GreatDrek
Отвечает за контраст, по умолчанию должен быть подключён к земле через конденсатор 4.7uF
Если напрямую кинуть на землю, работать не будет?

Re: MSP430G2452 и SD карта

Добавлено: Вт июл 02, 2013 23:16:59
Ser60
Не будет.

Re: MSP430G2452 и SD карта

Добавлено: Вт июл 02, 2013 23:28:27
GreatDrek
Если не тяжело, скажите почему не будет?

Re: MSP430G2452 и SD карта

Добавлено: Ср июл 03, 2013 07:40:16
Ser60
Этот вывод является выходом внутреннего умножителя напряжения питания ЖКИ и требует конденсатора для стабильности. При работе правильно инициализированного дисплея напряжение на этом конденсаторе должно быть в пределах 6-8.5В.

Кстати, я не увидел в проекте установку напряжения V_LCD и bias 1:48. Т.о. напряжение на обсуждаемом выводе должно быть 0, что не верно и ЛЦД работать не должен. Не знаю зачем автор опустил некоторые строчки кода. Попробуйте заменить функцию LcdInit() на следующую:

Код: Выделить всё

void LcdInit (void)
{
    P2OUT &= ~(LCD_nRES + LCD_nSCE + LCD_Dc);
    P2DIR |= LCD_nRES + LCD_nSCE + LCD_Dc;
    P2OUT |= LCD_nRES;
    LcdSendCom( 0x21 );  // LCD Extended Commands.
    LcdSendCom( 0xE8 );  // Set LCD Vop (Contrast).
    LcdSendCom( 0x04 );  // Set Temp coefficent.
    LcdSendCom( 0x13 );  // LCD bias mode 1:48.
    LcdSendCom( 0x20 );  // LCD Standard Commands, Horizontal addressing mode.
    LcdSendCom( 0x0C );  // LCD in normal mode.
    LcdClearMemory();
}

Re: MSP430G2452 и SD карта

Добавлено: Вс июл 07, 2013 20:36:53
GreatDrek
И вновь привет, работал не было времени разбираться с дисплеем, вот нашел время и появились можно сказать вопросы.

У SPI 4 контакта:
1) MOSI
2) MISO
3) SCK
4) CS

1) MOSI - по этому каналу мы отправляем с управляющего устройства данные на другое устройство, к примеру LCD 3310, передача данных идет по биту за такт.

2) MISO - по этому каналу, если управляемое устройство может возвращать какие ни будь данные, то оно будет возвращать их в МК например для последующей обработки, но в примере с LCD 3310 нам этот выход не нужен, так как его МК ничего не возвращает.

3) SCK - сигнал синхронизации, он сдвигает в сдвиговом регистре значение на бит, если задавать этот выход программно то можно установить время сдвига к примеру 1 секунда, тогда у нас один бит будет передаваться и приниматься со скоростью в одну секунду.

4) CS - пока на этом выходе нет сигнала идет передача данных с МК на LCD, если на выход подать ток, то в LCD перестанут записываться данные.

Ну а вопрос, если вам не сложно скажите где я ошибся и почему? Спасибо.