Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Засада с LPC24xx или Ошибки в описании?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Sanya_kv
Появилась необходимость управлять 5 вольтовой логикой. Самое простое это задействовать выход открытым коллектором (Open-drain) с резистором на 5в. В кратком описании процессора (http://www.nxp.com/documents/data_sheet/LPC2468.pdf 14.5 "Standard I/O pin configuration") есть строчка ” Digital output driver: Open-drain mode enabled/disabled”, а как это сделать ни где не описано. До этого сидел на Atmel там ни каких проблем с этим нет(регистр PIO_MDER). Но в фирме решили экономить, пришлось выбрать что по дешевле. Выбрали NXP теперь жалею.
Но проблему 5в логики я всё же решил, правда через 5-ю точку:

Код
#define IO1_0     (1<<0)
//Инициализация
FIO1CLR = IO1_0;
PINMODE2 |= 2<<0;
FIO1DIR |= IO1_0;
//Логическая ”1”
FIO1DIR &= ~ IO1_0;
//Логический ”0”
FIO1DIR |= IO1_0

Кстати в описании на процессор LPC17xx. Тоже есть та же строчка, и для управления этой функцией есть регистр PINMODE_ODx.
bus16
Pins P0[27] and P0[28] are open-drain for I2C0 and GPIO functionality
Sanya_kv
Цитата
Pins P0[27] and P0[28] are open-drain for I2C0 and GPIO functionality

Только 2 ножки. Кушайте наздоровье.

И еще камень в огород NXP (LPC24xx). Эта неправильная синхронизация интерфейса MIIM, данные на MDIO выставляются возрастающему фронту сигнала MDC, а не наоборот (Если смотреть на осциллографе, то это происходит одновременно ), Работает этот интерфейс только потому, что у трансиверов есть задержка на чтение. Я столкнулся с этим касиком, при отладке. Заметил, что в трансивер пишется не то, что в итоге читается (через раз). Проблема была отчасти в разводке (зарезались фронты на MDIO ).Проверял на LPC2468 и LPC2478, работает одинаково коряво. Решил проблему реализацией программного интерфейса.
Ревизия процессора LPC2468 самая последняя, произведен в этом году. Если необходимо могу выложить фотки с осциллографа.
Проект ещё реализован не до конца. Ожидаю новых проблем.
scifi
Цитата(Sanya_kv @ Jun 24 2011, 10:18) *
Появилась необходимость управлять 5 вольтовой логикой. Самое простое это задействовать выход открытым коллектором (Open-drain) с резистором на 5в.

Зачем так сложно? Ваша 5В логика не воспринимает уровень 3,3В?
Sanya_kv
Цитата(scifi @ Jun 24 2011, 11:20) *
Зачем так сложно? Ваша 5В логика не воспринимает уровень 3,3В?

Именно 3,5 порог логической 1.
aaarrr
Можно подумать, что у атмелов честный open drain есть. Наоборот, с ним возникают проблемы из-за включенных по умолчанию pull-up'ов.
А эмулировать OD не составляет труда на любом процессоре с 5V tolerant IO.
Sanya_kv
Цитата(aaarrr @ Jun 24 2011, 11:24) *
Можно подумать, что у атмелов честный open drain есть.

регистр PIO_MDER.
aaarrr
Цитата(Sanya_kv @ Jun 24 2011, 11:30) *
регистр PIO_MDER.

И что? Его использование ничем не отличается от эмуляции OD через выставление '0' на данные и переключение направления. Схему в мануале посмотрите.
scifi
Цитата(Sanya_kv @ Jun 24 2011, 11:23) *
Именно 3,5 порог логической 1.

Семейство 74HCT имеет TTL-совместимые входы, они же совместимы с КМОП-3,3.
Sanya_kv
Цитата(aaarrr @ Jun 24 2011, 11:34) *
И что? Его использование ничем не отличается от эмуляции OD через выставление '0' на данные и переключение направления. Схему в мануале посмотрите.

Смотрю AT91SAM7S (12.2008) - 27.4 Functional Description. Figure 27-3. I/O Line Control Logic
Вы правы частично (50%).
aaarrr
Цитата(Sanya_kv @ Jun 24 2011, 11:43) *
Вы правы частично (50%).

Это как? Поясните, пожалуйста.
Sanya_kv
Цитата(scifi @ Jun 24 2011, 11:39) *
Семейство 74HCT имеет TTL-совместимые входы, они же совместимы с КМОП-3,3.

Спасибо, проблему поздно обнаружил, вначале опирался на LPC17 , при разводке забили 24-е я предполагал, что там все тоже. В любом случае ошибка больше моя.
Из NXP ответили:
Цитата
This is not possible, it's a typo in the datasheet. The only real open drain outputs are the I2C pins.

Насчет MIIM пока молчат.


Цитата(aaarrr @ Jun 24 2011, 11:46) *
Это как? Поясните, пожалуйста.

" и переключение направления." - Здесь Вы не правы.
aaarrr
Цитата(Sanya_kv @ Jun 24 2011, 11:53) *
" и переключение направления." - Здесь Вы не правы.

И в чем же именно? Электрически - одно и то же, с точки зрения программирования лучше выбрать именно такой способ, как заведомо более универсальный.
Sanya_kv
Цитата(aaarrr @ Jun 24 2011, 12:01) *
И в чем же именно? Электрически - одно и то же, с точки зрения программирования лучше выбрать именно такой способ, как заведомо более универсальный.

Теперь согласн.

Но направление не переключается.
Просто выход переводится в 3-е состояние при лог-й 1.
И способ ваш на мой взгляд не такой уж и надежный.
Привожу схему входа выхода Atmel:
aaarrr
Цитата(Sanya_kv @ Jun 24 2011, 12:07) *
Но направление не переключается.
Просто выход переводится в 3-е состояние при лог-й 1.

Переключение направления и перевод в 3-е состояние - это одно и то же в данном случае.

Цитата(Sanya_kv @ Jun 24 2011, 12:07) *
И способ ваш на мой взгляд не такой уж и надежный.
Привожу схему входа выхода Atmel:

Я, конечно, ценю лаконичность, но не до такой же степени. Поясните свою мысль про надежность.
Sanya_kv
Цитата(aaarrr @ Jun 24 2011, 13:10) *
Я, конечно, ценю лаконичность, но не до такой же степени. Поясните свою мысль про надежность.

Некогда. Если у Вас есть время, докажите обратное.
На подходе ещё касяк от NXP, выложу когда производитель подтвердит.
Для меня на Atmel свет клином не сошёлся, Просто для примера.
zltigo
QUOTE (Sanya_kv @ Jun 24 2011, 10:18) *
Только 2 ножки. Кушайте наздоровье.

Трудно быть непонятливым sad.gif - у NXP это действительно честные OD - они OD даже без подачи питания на контроллер. А у Atmel такого нет - сюрприз! Про то, как создать "Атмеловский" OD у NXP Вам уже рассказали. Бред про "надежность" и "Некогда. Если у Вас есть время, докажите обратное" не пройдет.
Sanya_kv
У кого ни будь есть возможность в режиме отладки проверить смену логического состояния вывода на 2-м порту выводы с 0 по 7, на процессоре LPC2468FBD208?. У меня ножки управляются только в не отладочном режиме (не jtag). На ножках ни чего не висит (пока не подключено). Думал камень битый, перепаял та же картина. Может там нужно в какой ни-будь регистр что-то прописать? Среда Кеил. У процессора LPC2478FET208, второй порт работает нормально не зависимо от режима.
Заранее спасибо.
zltigo
QUOTE (Sanya_kv @ Jun 24 2011, 13:40) *
У кого ни будь есть возможность в режиме отладки проверить смену логического состояния вывода на 2-м порту выводы с 0 по 7

Не 0...7, а 0...9. Надо срочно написать в Спортолто NXP, что у них ETM активизируется не так, как Вам хочется. Путь ответят как его отключить, не читая документации.
Особо отметьте "Выбрали NXP теперь жалею", "На подходе ещё касяк от NXP" и "Ожидаю новых проблем" для того, что-бы там не расслаблялись sm.gif.
Sanya_kv
Цитата(zltigo @ Jun 24 2011, 15:44) *
Не 0...7, а 0...9. Надо срочно написать в Спортолто NXP, что у них ETM активизируется не так, как Вам хочется.

Спасибо помогли, дествительно PINSEL10 == 0x08. А то все мозги себе сломал.

zltigo Может Вы ещё знаете, отчего на ножках стоит питание 2,2 – 2,3в когда они в 3-м состоянии? (PINMODEx == 00). Моя благодарность будет безграничной.
zltigo
QUOTE (Sanya_kv @ Jun 24 2011, 15:29) *
zltigo Может Вы ещё знаете, отчего на ножках стоит питание 2,2 – 2,3в когда они в 3-м состоянии?

А что там должно быть на входе? Оно там не "стоит". Из воздуха можете наменять что угодно.
Sanya_kv
Цитата(zltigo @ Jun 24 2011, 16:54) *
Оно там не "стоит". Из воздуха можете наменять что угодно.

Но подтяжка по питанию есть PINMODE2 == 00b;
Если PINMODE2 установить = 10b, то на ножке 0 вольт. У меня единственное предположение - Резистор стоит на 2,3 вольта.
scifi
Цитата(Sanya_kv @ Jun 24 2011, 16:29) *
отчего на ножках стоит питание 2,2 – 2,3в когда они в 3-м состоянии? (PINMODEx == 00).

Как измеряем?
zltigo
QUOTE (Sanya_kv @ Jun 24 2011, 16:06) *
Но подтяжка по питанию есть PINMODE2 == 00b;

Ну так-бы и написали, что включили pull-up.
QUOTE
У меня единственное предположение - Резистор стоит на 2,3 вольта.

Вы не поверите, но там не резистор, а источник тока. Причем маленького, например, 15uA. А какой ток потребляет Ваш измеритель?
ViKo
Цитата(zltigo @ Jun 24 2011, 16:28) *
Вы не поверите, но там не резистор, а источник тока. Причем маленького, например, 15uA.

Там, скорее всего, как недавно обсуждалось в теме про PIC'и и реле, стоит МОП-транзистор (с достаточно большим сопротивленим, в данном случае). Создавать настоящий источник тока нет смысла.
Ну и, вместе с сопротивлением измеряющего прибора образуется делитель напряжения.
zltigo
QUOTE (ViKo @ Jun 24 2011, 16:58) *
Там, скорее всего, как недавно обсуждалось в теме про PIC'и и реле, стоит МОП-транзистор.....

Простейший источник тока это и есть МОП-транзистор. "Настоящим", там естественно, и не пахнет за ненадобностью.
Sanya_kv
Цитата
Ну так-бы и написали, что включили pull-up.
Он там включен по умолчанию.
Мерил осциллографом и тестером. Нога в воздухе. Сам удивляюсь. cranky.gif Полопачу описание, может че и нарою.
Как идея, напряжение ядра случайно не 2,3 вольта biggrin.gif .
zltigo
QUOTE (Sanya_kv @ Jun 24 2011, 18:07) *
Он там включен по умолчанию.

Не всегда и не для всех.
QUOTE
Как идея, напряжение ядра случайно не 2,3 вольта biggrin.gif .

Хватит выкатывать глупые идеи. Включите явно подтяжки и воспользуйтесь прибором с ИЗВЕСТНЫМ входным сопротивлением.
Питание ядра, для общего Вашего развития, никак не более 1,8V
scifi
Цитата(Sanya_kv @ Jun 24 2011, 19:07) *
Нога в воздухе.

Воздух ионизированный, вот и проводит :-)
Если есть флюс или иная грязь, тоже может утекать. Ну и порт может пробиться, но там обычно симптомы посерьёзнее.
ViKo
По-моему, у меня было что-то подобное с STM32. Пока такты на порт не завел. Может, было и по другой причине, типа, режима аналоговых входов. В-общем, после нормальной настройки режима все стало на место.
Sanya_kv
У LPC2478 та же история 2,3 в. Мерил осциллографом, в разных режимах.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.