Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


Результаты опроса: Запуск "на коленке" часть 2. Что дальше будем обсмакивать?
RTC (часы реального времени) 119 11.41%
USB 540 51.77%
Базовые навыки работы с портами ввода-вывода 247 23.68%
АЦП 108 10.35%
ЦАП 29 2.78%
Голосовавшие: 1043. Вы ещё не голосовали в этом опросе

 
Опции темы
Непрочитано 06.11.2009, 15:56  
alexgap
Гражданин KAZUS.RU
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Интерфейсная часть схемы изображена на рисунке внизу.

Она состоит из двух составляющих:
  • Источника питания +3.3В
  • Преобразователя USB ‹-› USART для программирования микроконтроллера

Теперь можно переходить к "вдыханию жизни". Нужно убедиться что:
  1. Источник питания +3.3В работает
  2. Пребразователь USB ‹-› USART работает

По первому пункту все ясно: берем вольтметр в руки и проверяем.
По второму пункту необходимы пояснения.

Перед проверкой USB ‹-› USART преобразователя нужно соединить линии RXD и TXD перемычкой. После этого плата подключается к USB порту компьютера. Должно произойти следующее:
  • Компьютер должен обнаружить новое устройство. Если этого не произошло, нужно искать ошибки при монтаже
  • Должны поставиться драйвера. Если компьютер подключен к интернету, то это произойдет автоматически. Иначе может потребоваться загрузить драйвера с сайта производителя FT232. Драйвера находятся на странице http://www.ftdichip.com/Drivers/VCP.htm.
  • Должен появится новый COM порт в списке устройств, подключенных к компьютеру

После этого следует убедиться что обмен данными действительно происходит по появившемуся COM порту. Для этого нужно использовать терминальную программу, например, PuTTY. После установки, следует запустить ее и выбрать наш COM порт. Чтобы сделать это, в PuTTY ставим галочку напротив Serial, а в текстовом поле Serial line следует указать имя порта в виде COMX, где X — это номер нашего порта (см. картинку внизу). Потом нажать кнопку Open.

Появляется черное окно терминала, где можно понабирать произвольные символы с помощью клавиатуры (см. картинку). Так как мы соединили RXD и TXD, то все данные, которые отправляются с компьютера должны приходить к нему обратно. Это означает, что мы должны видеть все символы, которые набираем. Если по какой-то причине символы не видны, то нужно искать ошибку в монтаже.

Если все в порядке, то можно считать что тестирование интерфейсной части схемы завершено успешно. Не забываем снять перемычку между RXD и TXD.

Теперь я приступлю непосредственно к "оживлению" микроконтроллера, о чем непременно поведаю в следующем отчете.
Миниатюры:
Нажмите на изображение для увеличения
Название: Interface.GIF
Просмотров: 1993
Размер:	8.4 Кб
ID:	1831   Нажмите на изображение для увеличения
Название: PuTTY.png
Просмотров: 1182
Размер:	64.9 Кб
ID:	1832   Нажмите на изображение для увеличения
Название: PuTTY Term.png
Просмотров: 1096
Размер:	53.6 Кб
ID:	1833  

Реклама:

Последний раз редактировалось alexgap; 06.11.2009 в 18:54.
alexgap вне форума  
Эти 30 пользователя(ей) сказали Спасибо alexgap за это сообщение:
artyomugr (21.11.2010), CERGEI1982 (06.11.2009), dimka11 (06.11.2009), Djakovskij (07.01.2012), fantom732 (13.06.2010), fiberline (14.03.2011), fired (12.11.2009), FreshManGood (03.01.2015), gdtron (28.09.2010), gora888 (11.03.2011), maart100 (31.08.2010), mousew1 (15.04.2010), Nickolya_K (10.11.2009), nikcher-65 (31.08.2010), Nikopol (06.11.2009), NurAnion (09.09.2010), Popeye (07.11.2009), Satellite83 (06.11.2009), SErg_pAAA (16.09.2010), starcomputer (17.12.2009), sytyi (18.02.2011), ua4nfx (11.12.2009), Zorhan (16.03.2011), _vz_ (08.11.2009)
Непрочитано 08.11.2009, 02:55  
alexgap
Гражданин KAZUS.RU
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Итак, настало время "собирать камни".

Получившаяся завершенная схема изображена на рисунке внизу. Она состоит из двух уже знакомых нам частей:
  1. Интерфейсной части (источник питания, FT232)
  2. Микроконтроллера со светодиодом

Отладка и "оживление" первой части уже было рассмотрено и пройдено.
Пришло время "вдохнуть жизнь" в микроконтроллер.

Нашей первой целью в этом кропотливом деле будет обеспечение связи микроконтроллера с компьютером так, чтобы микроконтроллер "обнаружился" с компьютера в утилите внутрисхемного программирования Flash Magic.

Чтобы это стало возможно, нужно аккуратно подключить контроллер согласно схеме. Чтобы не запутаться в номерах ножек нашего 100-пинового героя, их следует подписать как минимум для каждой из четырех сторон (см. вид сверху на плату). Затем подпаивать по одной ножке, предварительно отсчитав и разметив их маркером с обратной стороны платы. Если присмотреться на обратную сторону моей платы, то можно увидеть следы разметки. Для разметки я советую использовать маркер для компакт-дисков.

После того, как монтаж выполнен, необходимо педантично его перепроверить с помощью мультиметра — это сэкономит время и избавит от глупых ошибок. Учитывая большое количество ножек и некоторую "неизвестность" конструкции, это приобретает особенный смысл.

Когда проверка завершена, можно подключить питание +5В к схеме (линия POWER в разьеме USB). Я рекомендую использовать лабораторный блок питания (ЛБП) с установленным ограничением по току около 200 мА — если все-таки где-то закралась каверзная ошибка в монтаже, ограничение тока убережет микроконтроллер от "тепловой смерти".

У меня все получилось сразу — схема потребляла 40 мА при включенном контроллере. Будучи почти уверенным в правильности, я отключил ЛБП и воткнул плату в USB. И произошло долгожданное событие — контроллер "увиделся" утилитой программирования Flash Magic Вид утилиты показан внизу. Перед этим я выбрал COM порт, соответствующий моей плате. После этого я смог прочитать идентификатор устройства (см. картинки). Также я смог "полазить" в памяти с помощью функции Display Memory. Незаписанные байты флэш-памяти по-умолчанию имеют значение 255 (FF).

По общим ощущениям очень напоминает внутрисхемный программатор (ISP) для AVR, только фьюзов нет

В своем следующем отчете я обязательно расскажу о первой программе, которая заставит светодиод LED2 мигать.

П.С. В схеме резисторы R3–R5 необходимы для того, чтобы ограничить ток если "прошивка" окажется "левой" и начнет неожиданно "баловаться" портами.
Миниатюры:
Нажмите на изображение для увеличения
Название: ISP.GIF
Просмотров: 2114
Размер:	17.4 Кб
ID:	1879   Нажмите на изображение для увеличения
Название: DSC02593.jpg
Просмотров: 1203
Размер:	459.6 Кб
ID:	1881   Нажмите на изображение для увеличения
Название: DSC02598.jpg
Просмотров: 1444
Размер:	829.6 Кб
ID:	1882  

Нажмите на изображение для увеличения
Название: Flash Magic 1.png
Просмотров: 1387
Размер:	71.2 Кб
ID:	1883   Нажмите на изображение для увеличения
Название: Flash Magic 2.png
Просмотров: 1055
Размер:	84.9 Кб
ID:	1884   Нажмите на изображение для увеличения
Название: Flash Magic 3.png
Просмотров: 992
Размер:	96.6 Кб
ID:	1885  

Нажмите на изображение для увеличения
Название: Flash Magic Display Memory.png
Просмотров: 978
Размер:	111.3 Кб
ID:	1886  

Последний раз редактировалось alexgap; 08.11.2009 в 03:33.
alexgap вне форума  
Эти 40 пользователя(ей) сказали Спасибо alexgap за это сообщение:
alexmal99 (09.11.2009), artyomugr (21.11.2010), atsys (09.11.2009), dimka11 (09.11.2009), Djakovskij (07.01.2012), Eleman11 (08.12.2009), fantom732 (13.06.2010), FreshManGood (03.01.2015), gdtron (28.09.2010), INKAR (17.03.2010), LVII (14.11.2009), mousew1 (15.04.2010), NurAnion (09.09.2010), Pavel55 (13.01.2011), qsxxsq (18.02.2010), revector (13.09.2010), Roma_te (10.11.2009), sytyi (18.02.2011), ua4nfx (11.12.2009), Uz_Sleep_Walker (09.11.2009), Vadimku (31.08.2010), Vetal-soft (08.11.2009), wildbrain (15.12.2009), Yegorvin (08.11.2009), Zeman1979 (24.09.2010), zembin (12.11.2009), Zorhan (16.03.2011), _vz_ (08.11.2009)
Непрочитано 09.11.2009, 14:58  
alexgap
Гражданин KAZUS.RU
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
alexgap на пути к лучшему
Счастье Re: Здравствуй, ARM. Запуск "на коленке"

"Железо" готово, теперь поговорим о программе, которая будет мигать нашим светодиодом.

Для ее создания я буду использовать среду Keil. В ее состав входят С/С++ компилятор и интегрированная среда разработки. Демо-версия доступна для скачивания прямо с сайта производителя https://www.keil.com/demo/eval/arm.htm. Внешний вид среды показан на картинке внизу.

Вот что получилось:
Код:
#include ‹LPC23xx.H›

#define GPIOM 0x00000001

/* Задержка около 300 мс */
void wait()
{
  int d;
  for (d = 0; d ‹ 1000000; d++)
  {
  }
}

int main()
{
	/* Выключение режима совместимости с LPC21XX */
	SCS |= GPIOM;

	/* Установка направления порта. P1[0] - выход */
	FIO1DIR = 0x00000001;

	for (;;)   /* Бесконечный цикл */
	{
		/* Сброс P1[0]. На выходе лог. 0 */
		FIO1CLR = 0x00000001;
		/* Пауза */
		wait();
		
		/* Установка P1[0]. На выходе лог. 1 */
		FIO1SET = 0x00000001;
		/* Пауза */
		wait();
	}
}
Программа выполняет инициализацию портов ввода-вывода, а потом входит в бесконечный цикл, переключая логический уровень на ножке 95 (P1[0]) микроконтроллера, и светодиод, подключенный к ней, мигает.

Все оказалось просто. Единственное с чем пришлось повозиться, так это с некоторыми опциями проекта, без которых он не хотел "заводиться". Рабочие опции удалось найти в примерах от производителя NXP.

Регистры FIO1DIR, FIO1CLR, FIO1SET подробно описаны в руководстве пользователя для моего микроконтроллера LPC2368.

После сборки проекта (см. вложенный архив) у него на выходе получается файл HelloWorld_LPC2368.hex, который нужно выбрать в утилите внутрисхемного программирования Flash Magic и нажать кнопку Start. Сразу после нажатия, прошивка будет "зашита" в микроконтроллер и светодиод начнет мигать

Я сделал небольшое видео по такому случаю:
Миниатюры:
Нажмите на изображение для увеличения
Название: Keil 1.png
Просмотров: 733
Размер:	146.0 Кб
ID:	1903   Нажмите на изображение для увеличения
Название: Keil Linker.png
Просмотров: 465
Размер:	42.8 Кб
ID:	1904  
Вложения:
Тип файла: zip HelloWorld_LPC2368.zip (71.9 Кб, 483 просмотров)

Последний раз редактировалось alexgap; 09.11.2009 в 17:54.
alexgap вне форума  
Эти 34 пользователя(ей) сказали Спасибо alexgap за это сообщение:
artyomugr (09.07.2011), brunql (19.06.2010), dimka11 (09.11.2009), Djakovskij (07.01.2012), Eleman11 (08.12.2009), fantom732 (13.06.2010), fiberline (14.03.2011), FreshManGood (03.01.2015), Jora_fat (20.11.2009), Katran-tayfun (05.02.2010), mousew1 (15.04.2010), NurAnion (09.09.2010), pisto (09.11.2009), revector (13.09.2010), sanstan (10.08.2010), savarez (09.11.2009), Simbr (25.11.2009), sytyi (18.02.2011), ua4nfx (11.12.2009), vitamin01 (10.11.2009), wildbrain (15.12.2009), Zeman1979 (24.09.2010), Zorhan (16.03.2011), Кот Баюн (10.11.2009)
Непрочитано 09.11.2009, 15:16  
dimka11
Временная регистрация
 
Регистрация: 04.04.2008
Сообщений: 49
Сказал спасибо: 29
Сказали Спасибо 10 раз(а) в 8 сообщении(ях)
dimka11 на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Может забегаю наперед, нно не могли б объяснить один нюанс, сейчас микроконтроллер работает на внутреннем генераторе? На какой частоте?
dimka11 вне форума  
Непрочитано 09.11.2009, 15:26  
alexgap
Гражданин KAZUS.RU
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Сообщение от dimka11 Посмотреть сообщение
Может забегаю наперед, нно не могли б объяснить один нюанс, сейчас микроконтроллер работает на внутреннем генераторе? На какой частоте?
Работает на внутреннем генераторе на частоте около 10 МГц.
alexgap вне форума  
Эти 11 пользователя(ей) сказали Спасибо alexgap за это сообщение:
dimka11 (09.11.2009), Djakovskij (07.01.2012), ie_rybkin (12.03.2011), mousew1 (15.04.2010), ua4nfx (11.12.2009), xerox2 (09.11.2009), _grey_ (24.12.2009)
Непрочитано 09.11.2009, 17:26  
savarez
Частый гость
 
Регистрация: 09.11.2009
Сообщений: 26
Сказал спасибо: 10
Сказали Спасибо 9 раз(а) в 5 сообщении(ях)
savarez на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Сообщение от alexgap Посмотреть сообщение
FIO1CLR = 0x00000001;
Я так понимаю, что FIO1CLR (равно как и сотоварищи) может принимать только одно значение - 1 ?
savarez вне форума  
Непрочитано 09.11.2009, 17:41  
alexgap
Гражданин KAZUS.RU
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Сообщение от savarez Посмотреть сообщение
Я так понимаю, что FIO1CLR (равно как и сотоварищи) может принимать только одно значение - 1 ?
Может принимать любое значение, в зависимости от того, какие биты порта нужно сбросить в "0".

Мне нужно было сбросить нулевой бит порта P1, поэтому я написал
Код:
FIO1CLR = 0x00000001
Например, если бы нужно было сбросить 31-й (ножка P1[31]) и 0-й (ножка P1[0]) биты, то следовало бы написать
Код:
FIO1CLR = 0x80000001
Миниатюры:
Нажмите на изображение для увеличения
Название: Calc.png
Просмотров: 593
Размер:	69.5 Кб
ID:	1909  

Последний раз редактировалось alexgap; 09.11.2009 в 17:51.
alexgap вне форума  
Эти 8 пользователя(ей) сказали Спасибо alexgap за это сообщение:
Djakovskij (07.01.2012), mousew1 (15.04.2010), savarez (09.11.2009), ua4nfx (11.12.2009)
Непрочитано 09.11.2009, 17:53  
savarez
Частый гость
 
Регистрация: 09.11.2009
Сообщений: 26
Сказал спасибо: 10
Сказали Спасибо 9 раз(а) в 5 сообщении(ях)
savarez на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Сообщение от alexgap Посмотреть сообщение
Может принимать любое значение, в зависимости от того, какие биты порта нужно сбросить в "0".
Мне нужно было сбросить нулевой бит порта P1, поэтому я написал
Код:
FIO1CLR = 0x00000001
Т.е. 1 между FIO и CLR - номер порта, не дорожки, так сколько же там портов?

Последний раз редактировалось savarez; 09.11.2009 в 17:55.
savarez вне форума  
Сказали "Спасибо" savarez
fiberline (14.03.2011)
Непрочитано 09.11.2009, 17:58  
alexgap
Гражданин KAZUS.RU
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Сообщение от savarez Посмотреть сообщение
что же это за загадочная 1 между FIO и CLR, если она не имеет отношения к номеру порта ?
Смотрите, это просто. Связи выделены жирными символами:

Наша ножка: P1[0]
Выражение для сброса этой ножки в "0": FIO1CLR = 1 ‹‹ 0

"Загадочная 1" - это номер порта (но не номер бита в нем!). Каждый порт имеет по 32-а бита (т.е. 32 ножки). Вот примеры:

P1[0] - нулевой бит первого порта; FIO1CLR = 1 ‹‹ 0
P2[15] - пятнадцатый бит второго порта; FIO2CLR = 1 ‹‹ 15
P0[10] - десятый бит нулевого порта; FIO0CLR = 1 ‹‹ 10

В моем чипе LPC2368 пять портов (P0, P1, P2, P3, P4). Некоторые биты недоступны как ножки.

Последний раз редактировалось alexgap; 09.11.2009 в 18:04.
alexgap вне форума  
Эти 11 пользователя(ей) сказали Спасибо alexgap за это сообщение:
Djakovskij (07.01.2012), fiberline (14.03.2011), FreshManGood (03.01.2015), mousew1 (15.04.2010), savarez (09.11.2009), ua4nfx (11.12.2009)
Непрочитано 09.11.2009, 20:10  
espectr0
Временная регистрация
 
Регистрация: 26.09.2009
Сообщений: 81
Сказал спасибо: 4
Сказали Спасибо 16 раз(а) в 13 сообщении(ях)
espectr0 на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

alexgap, почему для мигания светодиодом вы используете fast io?
espectr0 вне форума  
Эти 2 пользователя(ей) сказали Спасибо espectr0 за это сообщение:
fiberline (14.03.2011), Highlander (20.12.2010)
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 08:32.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot