Перейти к содержанию
    

MementoMori

Свой
  • Постов

    1 340
  • Зарегистрирован

  • Посещение

Весь контент MementoMori


  1. С отладчиком: Регистр CoreDebug->DEMCR = 0x01000000, регистр DWT->CTRL = 0x40000001 Без отладчика CoreDebug->DEMCR до функции DWT_Delay_Init равен 0x00000000, после 0x01000000 DWT->CTRL до функции DWT_Delay_Init равен 0x00000000, после 0x40000001 У меня китайский ST-Link, среда - Keil.
  2. Почитал. Вроде как поднятая вами проблема у меня не стоит. Вот функция uint32_t DWT_Delay_Init(void) { /* Disable TRC */ CoreDebug->DEMCR &= ~CoreDebug_DEMCR_TRCENA_Msk; // ~0x01000000; /* Enable TRC */ CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk; // 0x01000000; /* Disable clock cycle counter */ DWT->CTRL &= ~DWT_CTRL_CYCCNTENA_Msk; //~0x00000001; /* Enable clock cycle counter */ DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk; //0x00000001; /* Reset the clock cycle counter value */ DWT->CYCCNT = 0; /* 3 NO OPERATION instructions */ __ASM volatile ("NOP"); __ASM volatile ("NOP"); __ASM volatile ("NOP"); /* Check if clock cycle counter has started */ if(DWT->CYCCNT) { return 0; /*clock cycle counter started*/ } else { return 1; /*clock cycle counter not started*/ } } В ней упомянутый вами бит перезапускается.... Что не так?
  3. И понять, почему DWT_Init() не пишет в них нужные значения при холодном старте? Я это и имел в виду
  4. Там ещё была функция инициализации счётчика, её я тоже вызываю. Хм... Ч о интересно, при запуске через отладчик эта функция сразу же работает, даже если предварительно не инициализиоовать счётчик... Значит проблема в коде инициализации. Спасибо, теперь ясно, где ковыряться.
  5. Шапочку из фольги надо смастерить))) А вот вам еще загадка. Не хочу отдельную тему создавать. Вот код __STATIC_INLINE void DWT_Delay_us(volatile uint32_t microseconds) { uint32_t clk_cycle_start = DWT->CYCCNT; /* Go to number of cycles for system */ microseconds *= (HAL_RCC_GetHCLKFreq() / 1000000); /* Delay till end */ while ((DWT->CYCCNT - clk_cycle_start) < microseconds); } Если залить отладчиком прошивку и запустить - все работает. Если передернуть питание (то есть отправить в самостоятельное, не контролируемое отладчиком, плавание) - виснет. Опытным путем установлено, что виснет на цикле while.
  6. Всё же я перемонтирую H743 на оставшийся экземпляр платы, предварительно помыв ему ноги.
  7. А в чем надёжность? В дополнительной толщине? Я к тому, что сделать этот кабель короче может и не получиться. К примеру, блок питания на столе, кабель к плате 20 см, кабель к программатор 10 см, usb кабель - 1.5 метра. Такой же длины будет и страховочный кабель Что делать? Располагать блок питания ближе к системному блоку? И делать провода от блока питания к плате делать длиннее?
  8. Погодите... Симптомы были идентичны. Под вскрывшейся неидентичностью вы что понимаете? То что F746 отреагировал на пропаивание, а H743 нет?
  9. Тогда я не пойму о чем спор... Допустим, это повреждение есть и оно не от перегрева, как я думаю, а по какой-либо другой причине. Но вы до сегодняшнего дня мне доказывали, что причина в плате...
  10. Вы имеете в виду вне чипа? Или допускаете, что есть повреждение внутри (от ноги до кристалла) ?
  11. Вот черт..... Уж простите меня неграмотного любителя. С вчерашним контроллером F746 с отломанными ножками - ваша правда. Был непропай - прошелся еще раз паяльником по ножкам - все заработало как надо. Но злосчастный H743 - уж сколько я его и паял и ноги под лупой рассматривал - везде ножки окучены припоем. Наверное его снять, и промыть ноги каким-нибудь очистителем флюса и поставить на другой экземпляр платы? P.S. Как думаете, тот факт, что контроллер испытывает емкостное влияние от прикосновения пальца к пластику чипа, означает, что непропай где-то в области питания, блокировочных конденсаторов? Линии sdram пропаяны, это точно - принудительно поданный на них меандр снимается осциллографом с пинов SDRAM/
  12. То есть, цепочка: "земля источника питания - > земля платы - > земля кабеля программатора - > земля usb разъёма - > земля компьютера - > земля компьютерного блока питания" не катит? Нужно соединять толстым проводом земли источника питания и корпус компьютера?
  13. Что такое произошло с памятью, что она стала реагировать на прикосновение к КОНТРОЛЛЕРу, и мешать контроллер же работать с qspi, даже будучи неинициализированной? И ещё - память я менял, подумав, что проблема в ней.
  14. Рассказываю в хронологическом порядке 1. Плата N1, руками напаян контроллер Н743, работает, без проблем. Выходит из строя от статики. Снимается феном, ставится новый, суётся в печку. Новый контроллер видится, но с памятью sdram нормально не работает. 2. Приезжает новая плата N2 Не работающий должным образом контроллер, с платы N1 сдувается и руками монтируется на плату N2 - работает так же, со сбоями памяти Sdram. На остальные 3 экземплярa платы N2 напаивается F746. Все 3 работают нормально. Один из контроллеров убивает я кривыми руками, уронившими 12 вольтовый провод на плату. Сгоревшей контроллер сдувается, ставится заведомо рабочий, но с отломанной ножкой, жертвенный контроллер, прожаривается в печке. После чего в нем начинает сбоить память. Диагноз?
  15. Два экземпляра этой платы с вручную напаянными, не бывавшими в печке контроллерами работают. И на этой плате тоже раньше был контроллер, который я месяц назад случайно спалил, уронив 12 вольтовый провод. Контроллер работал нормально. Я сегодня сдул его с платы и напаял тот который без ножки, тоже бывший работоспособным до помещения в печку. Прожарил, получил указанные симптомы. Далее, 743 контроллер, с которого началась эта тема, изначально был спаян в печке на другой плате. И работал криво. Потом я его демонтировали и вручную припаял на плату, другие экземпляры которой работают нормально. И получил те же симптомы. Если это все сопоставить, то плата не дефекта ни сама по себе, ни после прогрева в печке. А вот контроллер - перегревается. Не настаиваю, я за правду, если я где ошибся в логике, укажите Остаётся взять еще один контроллер, Остаётся взять рабочую плату, с рабочим контроллером, пожарить. Вот тогда точно будет понятно. Но я не хочу этого делать))
  16. Все выяснилось). Был у меня контроллер F746, с отломанной ножкой, рабочий, но уже непригодный к использованию. Решил им пожертвовать. Установил на плату и засунул в свою самодельную печку. Прожарил, включил... Ба... Да те же самые симптомы. Работает контроллер, программируется, ногами дрыгает. Но sdram с ошибками. И так же реагирует на прикосновение пальца к пластику. Прошёлся паяльником по ножкам, на всякий случай - не помогло. Значит H743 был перегрет. Странно конечно, я понимаю, печь самодельная и может врать температурный датчик. Но паста плавится ровно при той температуре, при которой должна. Как так может быть? Термопрофиль по датчику выдерживается идеально.
  17. Версии куба и дизайнера какие? Не так давно они внесли изменения и код генерируется немножко по другому, вряд ли они успели перевыпустить видео. В том перечне действий, что вы описали, я не увидел открытия файла с дизайном в TouchGFX Designer и окончательной генерации кода. Куб не генерирует проекта в окончательном виде. Нужно открыть в проекте папку toucgfx, в ней файл с проектом для TouchGFX Designer. Запускаете его, кидаете на форму компоненты, жмете в правом верхнем углу кнопку Generate Code и только после этого запускаете проект в Кейл, ИАР или что там у вас....
  18. Эх... А я уж думал, запитаю AVDD на плате c H743 и, наверное, sdram нормально заработает... Значит все таки кривой чип. Или может есть ещё какие секреты, отличия в Н743? З.Ы. А кстати, на H743 реально работать со Sdram на 133-166 MHz? Тактирование выставить эту частоту можно, а контроллер справится? Я что-то не нашёл в даташите информации о максимальной частоте sdram, написано, что частота определяется частотой hclk/2, а её можно и на 400 МГц выставить
  19. Гедеван Александрович, дарагой! Гамарджоба тебе, родной, будешь в Воронеже, заходи, сациви, пахлава кушить будешь! В корень зрел! У меня на новой плате (по совету друзей) AVDD и VREF питаются от отдельного прецизионного LDO (он там не для этого, но, раз уж есть, то я решил с него питание кинуть). У меня действительно на AVDD сейчас ничего нет, ибо паяю поэтапно и LDO не впаял. Но сначала, дарагой, я твою версию отбросил - так как на плате с H743 такое же отдельное питание AVDD, но H743 почему-то работает - на висящей в воздухе AVDD откуда-то 0.7 вольт, и ядро заводится, на VCAP 1.27 вольт. А вот на висящей в воздухе AVDD у чипа F746 - 40 милливольт и ядро не заводится. Почуяв, что именно здесь собака зарыта, я напаял проводок от 3.3 вольт напрямую к AVDD - ядро завелось, контроллер видится!!!!! P.S. Век живи, век учись... и все равно дураком помрешь. P.P.S. А H743 крут - заводится без AVDD. P.P.P.S. - А ведь хотел действительно контроллер в топку. А мысль о том, что, перерабатывая предыдущую версию платы, допустил новый фатальный косяк, уже закрадывалась...
  20. Потребляет 2.45 мА
  21. А что это даст? Если на VCAP ноль, значит ядро не работает и потреблять нечему.... P.S. в чем я отсутпил от предыдущей версии платы - поставил не 1206 2.2 uF, а 0402 4.7uF. Но, повторюсь - H743 чип с такими же конденсаторами видится. А требования к обом чипам одинаковые
  22. скажите, а множественные VCC и GND контроллера, они внутри соединены? Может так быть что один из них плохо пропаян или если хотя бы на один из пинов подается напряжение, то худо - бедно, но контроллер должен откликаться? На непропаи проверил - вроде все хорошо спаял, но..... что бы вы смотрели в первую очередь? Или контроллер в топку?
  23. Напряжение на VCAP

    Что-то меня последний месяц какие-то неудачи преследуют, за что ни возьмусь из того, с чем дело имел раньше - не заводится с первого раза... Итак - есть две одинаковые платы. На одной глючный STM32H743, но он видится, программируется, работает. На точно такую же плату сегодня напаял pin-to-pin совместимый F746. Не видит его ни ST-Link, ни J-Link. Все пины пропаяны, ошибка в трассировке и монтаже исключена (повторюсь, точно такая же плата с другим контроллером позволяет его программировать). Что обратило на себя внимание - на VCAP напряжение в десятки милливольт всего. Контроллер с завода, чистый, без прошивки. Вопрос - блок контроллера, использующий VCAP - он работает сам или включается при инициализации тактирования контроллера? Иными словами - может отсутствие напряжения на VCAP - это норма для контроллера с чистой памятью? Если нет, то не имеют ли нули на VCAP и молчание контроллера общую природу? Осциллом смотрел SWDCLK - импульсы частые, правильной формы, на SWDIO - редкие но тоже правильной формы. Куда копать?
  24. Нет, все сконфигурировано либо на периферия, либо на выход, либо на вход. Задействованы все ноги. Может вы не обратили внимание, но я прикасаюсь к чипаэу, в центре. Если касаться по перифеиэрии или непосредственно оголенных пинов, ничего такого не происходит. Ножку отпаивал и пр поднимал, как советовали, на ней перманентный ноль. Смотрел осциллографом клоки памяти и дисплея - они на прикосновение не реагируют. Единственное - какой бы я сигнал не смотрел - в момент прикосновения осциллограмма немного дёргается, описать словами, что именоэно с ней происходит, трудно, просто как будто слегка меняется форма сигнала, шумы меняются. Еле заметные, но происходящие в такт с прикосновение изменения. И ещё интересный момент - дрожание изображения на дисплее происходит даже если выполнение кода остановлено отладчиком. При этом все синхросигналы в норме.
  25. Попробовал. Не влияет. Только если пальцем, да и то если не давить, а просто прикоснуться. А выраженность эффекта зависит от силы прижатия (то есть от степени уплощения подушечки пальца. Так что влияние тут емкостное.
×
×
  • Создать...