STM32. Применения.. Раздел: STM32 Cortex M3.

Eugene's MCU

Воскресенье, 13.07.2014, 17:54

Главная | | Мой профиль | Выход | RSS
Меню сайта
Категории каталога
Рекламный блок





Рекомендовать этот сайт:

Главная » Статьи » » STM32 Cortex M3


STM32. Применения.

§
> Подключение символьного ЖКИ HD44780 16x2.
 
       Проекты:
       IAR_v6.0   >> STM32HD44780_emcu_iar
       IAR_v6.21 >> STM32HD44780_emcu_V6.21.iar
       (проверено WH1602 + STM32F103 (72MHz)).
  
      • возможность использования разных портов для сигналов управления и данных;
      • шина данных – 4 бита;
      • задержки по флагу готовности LCD;
      • поддержка стандартной stdio-функции printf; 
      • установки текущей позиции вывода LCD_GOTO; 
      • отображения символа и строки на текущей позиции LCD_PUTCHAR, LCD_STRING;
      • создания нового символа CREATE_CHAR; 
      • управления отображением и курсорами LCD_VIEW_MODE (CURSOR1, CURSOR2, VIEW_ON);

        Подключение модуля описывается в файле hd44780_emcu.h, например:
 
 #define LCD_C_PORT   PORTC // Порт управляющих сигналов CD, RW, EN.
 #define LCD_CD           10 // Сигнал CD команда/данные.
 #define LCD_RW          11 // Сигнал RW чтение/запись.
 #define LCD_EN           12 // Сигнал EN разрешения данных на шине.
 #define LCD_D_PORT   PORTA // Порт шины данных.
 #define LCD_D_SHIFT   8 // Смещение от начала порта до шины данных.
 

       

     
   

§
> Подключение клавиатуры PS/2.
 
       Проект IAR_v6.0 >> STM32PS2KB_emcu_iar
       (проверено WH1602D + на STM32F100RB).

       
 
       Особенности:
     - данные с клавиатуры в кодировке ASCII вводятся в буфер (32 байт) и соответствующие позиции LCD;
     - поддержка навигации по позициям ◄► ▲▼, корректировки – "DEL” и "BACKSPACE”;
     - ввод букв и символов со сменой регистра клавишей "SHIFT";
     - по нажатию "ENTER" отображаемый буфер отправляется в UART (115,2 kbps); 
     - сигналы PS/2 клавиатуры: DATA - PA0, SCL - PA1;
 
       Почитать по теме >> AVR313. Интерфейс с AT клавиатурой ПК.
 


При использовании материалов сайта ссылка на данный источник обязательна.

Категория: STM32 Cortex M3 | Добавил: eugenemcu (11.03.2011) | Автор:

Просмотров: 21800 | Комментарии: 25 | Рейтинг: 5.0/6 |
Всего комментариев: 25
0 Спам
* 1 (05.04.2011 17:18) [Материал]
Добрый день!
Подскажите, питание дисплея Вы подключали 3.3В или 5В?

0 Спам
* 3 eugenemcu (05.04.2011 18:19) [Материал]
Питание LCD - 5 вольт (для WH1602 VDD не ниже 4,7).

0 Спам
* 4 Anwi (05.04.2011 19:27) [Материал]
У меня есть несколько дисплеев, в основном Винстаровские. В даташите написано "+3V or +5V". Надо пробовать будет работать с питанием 3В или нет.
Меня больше интересует, у Вас линии управления и линии данных подключены на пины, которые не являются "5V tolerant"... Или я что-то путаю?

0 Спам
* 6 eugenemcu (05.04.2011 19:36) [Материал]
Да, Вы правы PC0...PC5 не 5В-толерантные, совсем упустил это из виду, в ближайшее время исправлю

0 Спам
* 7 Anwi (05.04.2011 19:42) [Материал]
Спасибо! Ваши статьи очень помогают в освоении С и STM32!
С готовым примером можно будет выяснить работоспособность дисплеев при разных напряжениях питания.

0 Спам
* 2 (05.04.2011 18:16) [Материал]
С разрешения автора сайта помогу, смотрите на х-ки дисплея, у моего уровень "0"-это до 0,4В, "1" - от 2,4В, то есть СТМ32 его потянет и от 3,3, если у тебя выше тогда конектись только к выходам которые 5V tolerant.

0 Спам
* 5 Anwi (05.04.2011 19:35) [Материал]
Выше написал, что по идее должен работать и от 3В. А вот по материалам, найденным в интернете, получается что зависит от экземпляра дисплея - у кого-то работает, у кого-то нет.
Программировать на С я только начинаю. Многое пока непонятно. Пробовал в Keil воспользоваться библиотекой работы с LCD для кейловской отладочной платы на базе STM32F103, поменял пины для подключения дисплея... Но не получилось. Либо в коде не до конца разобрался, либо экземпляр дисплея не соответствует по логическим уровням...

0 Спам
* 8 eugenemcu (05.04.2011 19:45) [Материал]
Мой ЖК со светодиодной подсветкой, у которой прямое падение 4,2В. Так что... как не крути питание только 5В, хотя минимальный входной уровень единицы от 2,2В.

0 Спам
* 9 Anwi (05.04.2011 23:33) [Материал]
Докладываю результаты испытаний.
Пробовал подключать дисплеи: WH1602A, WH1602B, WH1602D. На 3.3 вольта не заработал ни один. На 5 вольтах работают все. В программе изменил назначение портов:
RS -> PortC6, RW -> PortC7, E -> PortC8, DB4...DB7 -> PortA8...PortA11

0 Спам
* 10 eugenemcu (06.04.2011 10:43) [Материал]
Спасибо за тесты.
На PC8 светодиод, поэтому подключил PC10, PC11, PC12. Для шины данных действительно нет альтернативы c 5В-совместимостью кроме PA8...PA11, а это прощай UART1.

0 Спам
* 11 Anwi (06.04.2011 11:18) [Материал]
Может тогда лучше использовать порты с PC6 по PC12?

0 Спам
* 12 eugenemcu (06.04.2011 11:55) [Материал]
с PC6 по PC12 нужно иметь четыре идущих подряд бита шины данных. Светодиоды на discovery разбивают эту последовательность. Если их не жалко, то нет проблем.

0 Спам
* 13 Anwi (06.04.2011 12:41) [Материал]
Что-то я совсем забыл про светодиоды... Надо будет памятку сделать что и куда на дискавери подключено.

0 Спам
* 14 (06.04.2011 19:53) [Материал]
Приветствую Вас снова.
Вот хочу уточнить о этих макросах в gpio_emcu.h

#define _spin_m(port,mask) (*(port+4)=(mask)) // Установка одного или нескольких битов порта по маске.
#define _cpin_m(port,mask) (*(port+4)=(mask)<<16) // Сброс одного или нескольких битов порта по маске.
#define _ipin_m(port,mask) (*(port+3)^=(mask)) // Инвертирование одного или нескольких битов порта по маске.
#define _wr_port(port,word) (*(port+3)=(word)) // Запись выходного регистра порта.
#define _rd_port(port) (*(port+2)) // Чтение входного регистра порта.
#define _checkpin_b(port,bit) (*(port+2)&(1<<bit)) // Проверка бита входного регистра порта.

Это я так понимаю тот же Bit Banding. Но связать то что написано RM0041 с вашим кодом не знаю


0 Спам
* 15 eugenemcu (06.04.2011 20:07) [Материал]
Нет, это прямая работа с регистрами GPIO.
Параметр port через #define заменяется указателем на регистр GPIOx_CRL соответствующего порта. Далее через смещения +2, +3, +4 обращаемся к регистрам IDR, ODR, BSRR.

0 Спам
* 16 Kira-sempai (07.04.2011 18:57) [Материал]
Огромное спасибо за статью и пример. Я только начал заниматься программированием микроконтроллеров, и очень приятно что клавиатура заработала с первого раза (дисплейчика к сожалению у меня пока нет, увидел входящие символы внутри программы).

0 Спам
* 17 (14.04.2011 00:36) [Материал]
Можно подключать и с светодиодами на Discovery, у меня работает, правда код другой, но это не важно. Светодиоды даже не вспыхивают, что и не удивительно. Дисплей подключен информационными входами через резисторы 1КОм на 5в, выходы СТМ32 опен драйн PC6-PC12

0 Спам
* 18 eugenemcu (14.04.2011 09:37) [Материал]
Наличие светодиодов, конечно, не помешает работе ЖК, но управление самими светодиодами при этом неоправданно усложняется. Судите сами, если вы в фоне установили светодиод в нужное состояние и вызвали обмен с ЖК, то после его завершения нужно восстановить прежнее состояние светодиода. А если светодиод управляется из прерываний, то нужно как минимум обеспечить его невмешательство или безопасное (с восстановлением состояния портов) вмешательство в обмен с ЖК и т.п.
К чему такие сложности?! Если жизнь заставит, то проще перейти на не FT-выводы и решить проблему 5В-совместимости, подвесив на шину данных внешние защитные диоды и резисторы.

0 Спам
* 19 (20.06.2011 13:24) [Материал]
Здравствуйте, Евгений. Не могли бы Вы выложить такой же проект на Кейле. Пробовал дрпиливать сам- ругается , что не может открыть yfuns.h.

0 Спам
* 20 eugenemcu (21.06.2011 09:26) [Материал]
Здравствуйте.
Сейчас Discovery занят на работе... трудится программатором.
Я Keil вообще то не использую, но проекты выложить надо бы.

0 Спам
* 21 (22.06.2011 15:43) [Материал]
Был бы весьма благодарен за примерчик.

0 Спам
* 22 (21.10.2011 00:14) [Материал]
Приветствую ГУРУ!
Евгений, как знатоку IAR прошу Вас помочь с настройкой IAR 6.21, которым я пользуюсь, т.к. ни один из Ваших примеров, представленных на сайте, не компилируется в указанной версии. Коды ошибок для всех проектов сходны и приведены ниже.

Error[Pe147]: declaration is incompatible with "__interwork __softfp unsigned long __get_PSP(void)" (declared at line 52 of "C:\Program Files\IAR C:\STM32\STM32HD44780_emcu_iar\inc&source\core_cm3.h 667
...
Systems\Embedded Workbench 6.0\arm\inc\c\intrinsics.h")
Error[Pe147]: declaration is incompatible with "__interwork __softfp unsigned long __get_MSP(void)" (declared at line 50 of "C:\Program Files\IAR C:\STM32\STM32HD44780_emcu_iar\inc&source\core_cm3.h 689

Total number of errors: 24
Total number of warnings: 0

Благодарю за помощь и Ваш ТРУД!

0 Спам
* 23 eugenemcu (22.10.2011 00:30) [Материал]
На форуме electronix по етому поводу сказано, что в проектах для IAR 6.21 нужно:

1. Установить галку Project >Options... >General Options >Library Configuration >Use CMSIS
2. Удалить из проекта и из его папки файлы core_cm3.c и core_cm3.h.

P.S. Выложил ЖК под IAR 6.21

0 Спам
* 24 (22.12.2011 22:22) [Материал]
Здравствуйте Евгений!
Благодарю за ответ. Он совпадает с ранее полученной мной ссылкой от ST на их видео-презентацию, относительно данного вопроса. СПАСИБО!

Еще один вопрос. Не можем разобраться, почему STM32VLdiscovery не работает с IAR6.21, IAR6.30 (режим загрузки и отладки) из-за проблем с подключением к ST-Link. (Хотя STM32F4discovery работает в без замечаний).
Не подскажете, какой драйвер ST-Link должен быть установлен в Windows? Все доступные на сайте ST для ST-Link уже перепробованы и результат отрицателен - IAR выдает "Communication Error with connecting to ST-Link".
Как известно, на борту STM32VLdiscovery расположен ST-Link, а вот на STM32F4discovery - ST-Link/V2. И можно ли ST-Link STM32VLdiscovery апргрейдить до ST-Link/V2?
С признательностью за Ваше время и предполагаемый ответ.

Flex

0 Спам
* 25 eugenemcu (22.12.2011 22:35) [Материал]
Здравствуйте.
У меня IAR6.21 + STM32VLdiscovery заработал после установки драйвера отсюда >> http://www.st.com/internet/evalboard/product/251168.jsp

Боле ничего сказать не могу, так как дальше проблем не было.

Статистика

Наш магазин




Какую среду разработки Вы используете?

[ Результаты · Архив опросов ]
Всего ответов: 1556



Им нужна Ваша помощь: