Добрый день: столкнулся с такой проблемой. Плата самодельная на STM32F20RB (64 ноги). На порт B подключено АЦП AD9220. Запитано: Цифровая часть 3.3V (контроллер запитан тем же), Аналоговая 5V. Ноги микроконтроллера и АЦП соединены напрямую. Пока порт B висит в исходном состоянии - все хорошо: Идет отладка, все работает. Но как только выполняется следующий код (инициализация и бесконечный цикл), кристалл уходит в астрал и далее не определяется отладчиком. Есть призрачные подозрения что конфигурация пина BP2, он же BOOT1 делает что то нехорошее
//на этот пин будут подаваться клоки GPIO_InitStruct.GPIO_Pin = 12; GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz; GPIO_Init(GPIOB, &GPIO_InitStruct); }
и собственно майн
Код:
FastADC_ConfigPin(); uint32_t i = 0; while(1) { GPIOB->BSRRL |= 1<<12; //set bit for (i=0;i<100;i++){}; GPIOB->BSRRH |= 1<<12; //reset bit for (i=0;i<100;i++){}; }
сейчас буду проверять возможность попадания 5V на ногу контроллера В связи с подозрениями интересует такой вопрос: при попадании 5V на вход выйдет ли из строя только порт или весь кристалл?
Как насчет экспериментального выяснения конкретной команды, которая вешает контроллер? Заткните все комментариями (кроме цикла) и затем освобождайте по одной. Так гораздо проще будет понять что происходит.
FPGAlover писал(а):
В связи с подозрениями интересует такой вопрос: при попадании 5V на вход выйдет ли из строя только порт или весь кристалл?
Зависит от мощности источника этих 5V. Вероятно сгорит защитный диод, и, может входной триггер Шмитта. Если на пине был жестко выставлен 0, сгорит внутренний транзистор. Для остальной части МК, по идее, это все не страшно.
Ну так что по поводу поиска злосчастной инструкции в коде? Вы можете дебаггером по этому коду пройтись пошагово?
Да, я имел ввиду что пин настроен на выход и выставлен на низкий уровень. Возникает конфликт уровней, кто слабее - сгорает. И обычно это пин МК.
ЗЫ. Я не спец по кортексам. Так, мимо проходил, ибо такие темы часто игнорируют вовсе. Так что в даташит или куда-нибудь подальше меня отправлять смысла мало
ЗЫ2. А, это ток выхода АЦП. Не сразу понял. Тогда ок все должно быть.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Попробовал я вытащить кварц (в прошивке разогнано на 120мгц) пусть на HSI поработает (танцы с бубном). Однако не помогло. Отладчик в упор не видит... Вставил назад... Посмотрел осциллографом частоту на кварце: половина питания постоянки... Помянем усопшего : Однако, осталось 3 живых камня!
хотя не факт... как кварц должен себя вести при включенном HSI?
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Смотреть на осциллографе частоту кварца - это то еще развлечение. Пробовал - либо видно быстрозатухающую синусоиду, либо постоянное напряжение. К тому-же амплитуда этой синусоиды совсем не велика. Боюсь соврать, но порядка сотен милливольт.
Про 5V. Большинство GPIO ног у STM32 - "FT - 5V tolerant", тоесть на них можно подавать 5V напряжение, а они не будут сгорать. PB2 нога тоже обладает таким свойством. (Смотрел правда по даташиту на F103)
В общем кристалл не гибнет, просто отрекается от отладчика... Зашитая программа замечательно продолжает работать. С АЦП шли законные 3.3V но я на всякий случай шину порезал и 47омные резисторы воткнул. В общем дело не с наружи, а с нутри...
После выполнения этого кода камень перестает определяться отладчиком.
uint8_t str[8]; int main(void) { FastADC_ConfigPin(); uint32_t i = 0; for (uint32_t j=0;j<1000000;j++) { GPIOB->BSRRL |= 1<<12; //set bit for (i=0;i<100;i++){}; GPIOB->BSRRH |= 1<<12; //reset bit for (i=0;i<100;i++){}; }
далее идет полноценное функционирование платы.. правда до майна еще какой то код от STM выполняется(настройка PLL и еще что то), но до этого он не мешался. Обращений к порту B там нет...
Вопрос : Ни у кого такой проблемы не возникало? как реанимировать камень (например почистить флешь или еще что)?
Теоретически должно помочь "Connect under Reset" или, что-то подобное. Ну либо можно пинцетом на время закоротить Reset пин на землю, пока отладчик коннектится.
Впаял предпоследний кристалл В стартапе благоразумно поставил пустой цикл секунд на 10 сразу после ресета. В этот момент вполне шьется, если пропустить та же история... Но теперь можно разбираться кто виноват
Хотя и так должно работать. Правда всего пару раз JTAG пользовался, в основном SWD. Там важны лишь пины PA13 (SWDIO), PA14 (SWDCLK). Остальные можно перепрограммировать как хочешь.
Тут появилась следующая проблема... Код работает, миандр идет, но амплитуда у него всего 0.35V (0-логический 0 и 0.35 - лог 1) Сейчас же настройки следующие: GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
Сначала я выход конфигурировал как опен дрейн и работал он через 47 ом на тактовый вход АЦП. По идее спалиться не должен. В чем может быть ошибка?
Подтянул к верху - все стало хорошо, хотя странно это... Ну в общем эта тема себя исчерпала
Впаял предпоследний кристалл В стартапе благоразумно поставил пустой цикл секунд на 10 сразу после ресета. В этот момент вполне шьется, если пропустить та же история... Но теперь можно разбираться кто винов
Подключать через SWD . Если затрагиваешь пины SWD - выставить коннект через RESET и подключить таки RESET . У меня так же JLink - никаких проблем, все через SWD .
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 30
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения