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

Евгений Вольф

Members
  • Постов

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

  • Посещение

Информация

  • Город
    Волгоград

Электроника

  • Стаж в электронике
    Менее года

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

Достижения Евгений Вольф

Новобранец

Новобранец (2/14)

  • 10 постов на форуме
  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме

Последние значки

0

Репутация

  1. Доброго времени суток уважаемые! В наличии имеются: две разновидности чипов а) STM32F030F4P6 в корпусе TSSOP-20; б) STM32F103C8T6 в корпусе QFN48; и большое желание подключить их к программатору. Перед подключением долгое время штудировал интернет в поисках ответа на вопросы вроде "минимальная обвязка чипа N" и ему подобные. Практически везде пишут, что чип можно запустить "как есть" без дополнительных деталей. Сначала распаял на платке-переходнике STM32F030F4P6, два разных чипа от двух разных продавцов - эффекта нет. Предположил, что возможно дело в пайке, хоть это и мало вероятно, но всё же (ошибки распиновки исключены, слишком примитивная задача, что бы там ошибиться, к тому же я всё проверил и перепроверил несколько раз до подключения и после). Так же были мысли что я спалил чип (оба) во время пайки, хотя и это мало вероятно. Подключаю к программатору - ошибка "Target not found", примерно такую же ошибку получаем если к программатору вообще ничего не подключать. Далее, что бы исключить возможные "ошибки при пайке" одолжил у товарища переходник QFN48->DIP48. Вложил туда чип, прозвонил контакты, удостоверился что номера ног на плате соответствуют номерам ног чипа и банальные ошибки вроде "воткнул чип не той стороной" - исключены. Проверил, что выводы чипа точно попадают на контактные площадки, замыканий нет, всё хорошо. Запустил STM32CubeMX, посмотрел маркировку всех выводов, подключил питание по схеме, проверил дважды - ошибок с подключением нет. Подключаю к программатору - аналогично первому случаю, "Target not found", чип не видят ни STM32Link utility, ни STM32IDE... Попробовал так же на двух разных чипах от двух разных продавцов, эффект аналогичный. Подключаю к этому же программатору готовые платы - всё хорошо, всё работает. Подскажите пожалуйста, может быть всё-таки что-то нужно для того, что бы чип корректно определялся программатором, кроме самого чипа? Может быть какие-то выводы обязательно куда-то подключать, кроме питания и SWIO/CLK? Какие ещё могут быть варианты кроме "плохой пайки", "пока паял - чип спалил" или "ошибся с распиновкой"? Во втором случае не было никакой пайки и спалить я его не мог, чип очень плотно заходит на посадочное место и контакты плотно прижимаются к выводам, а в первом, - довольно сложно ошибиться в виду небольшого количества выводов.
  2. У меня не код не работает, у меня загрузка прошивки в ряд определённых плат не работает. Грубо говоря, есть 3 платы "BluePill" (не буду перечислять все вариации устройств), все платы куплены у одного продавца; есть программатор, который исправно работает. Одна плата - простейшая прошивка - загружается ОК, две другие - загружаются только в режиме "Under reset" и потом в них прошивка заливается с вероятностью 50/50 и в Keil стабильно вылетает ошибка (прикреплю скрины ошибок во вложении, для наглядности). Вообще, изначально вопрос был в выборе MCU для обучения, так как по моему мнению - просто глючат эти китайские платы (в отличии от оригинальных отладочных плат STM32, о чём собственно я тоже говорил), но тема как-то плавно перетекла в контекст того, что "это высококачественные китайские платы/чипы и глючить они не могут". На данный момент, заказал ещё пару переходников (адаптеров) и несколько чипов с Али (на пробу), посмотрим, может они себя будут покажут лучше, а так же записал себе в планы проверить эти платы и программаторы на других машинах и под другими ОС, возможно и вправду что-то не то происходит конкретно с моей машиной (компьютером). Аватарка прсото с гугла подгрузилась автоматически, обычно у меня коты на аватарках :)))
  3. Не понимаю причин Вашей язвительности в мой адрес, я вроде бы ничего плохого не сделал и не сказал... Но безусловно приятно вести беседу с человеком, который владеет вопросами хирургии так же искусно как и вопросами электроники.
  4. С большей вероятностью могу сказать, что эта проблема не связана с программатором, к сожалению. Попробовал 4 разных (3 китайских, 1 с платы STM32 Discovery) - результат одинаковый везде. Не считая того, что при подключения через плату Discovery - чип вообще отказался стираться (хотя, читается исправно). Правильно ли я понял, что речь шла вот об этой опции? (во вложении). Если о ней - там всего два пункта и по умолчанию выбран верхний (Disabled), на всех платах.
  5. Нет. Если я правильно понял, в статье речь идёт про USB... Мне не нужен USB, по крайней мере на этой плате необходимости в нём не было пока ни разу. К тому же, конкретно эти платы, которые ведут себя неподобающим образом - не паяные вообще, принципиально. А так же с другими платами, купленными в том же месте - подобных проблем не было.
  6. Нет, в качестве программатора - я использую программатор в сочетании с коробкой для установки чипов, которая в свою очередь размещена на собственной плате. Для удобства - всё это дело прикручено к макетной плате. Две платы "BluePill", только что вынутые из упаковки, паяльник их не касался. Пытаюсь подключиться к ним через ST-Link Utility, классическая схема подключения - не работает. Подключаюсь с зажатым резетом (отпускаю в момент подключения) - подключается. Далее, полностью стираю чип (без полного стирания вероятность успеха с заливкой прошивки - стремиться к нулю), проверяю подключение/отключение - если всё ок, то есть шанс 50%, что не смотря на ошибку - получиться загрузить прошивку через Keil (или получить набор других ошибок, типа "программатор не найден" и т.п.). Для сравнения берём другую (старую) плату, такой же "BluePill", так же чип, тот же продавец и... проблемы чудесным образом - отсутствуют, всё загружается и работает. Программатор - тот же, софт - тот же, компьютер - тот же. Про уровень защиты на чипе - не могу сказать, пока не сталкивался. Подскажите пожалуйста, как её можно снять?
  7. Это я понимаю, но в контексте выше сказанного - речь шла в большей степени о случаях "не работают вообще". Часть чипов (которые я условно приводил в пример) - не имеют возможности прошивки вообще, они с завода с зашитой прошивкой идут и не редко могут просто не определяться на SPI-шине например. Выглядит это примерно так: берём дюжину чипов, по очереди ставим их, два - работают, 10 - нет, для надёжности проверяем несколько раз, результат тот же - рабочих только два. Причём их ещё никто не паял и сжечь физически не могли (только-только вынутые из упаковки чипы). С МК - аналогично, что бы понять, подаёт ли чип признаки жизни вообще - я обычно пытаюсь загрузить в него максимально примитивную прошивку типа "пищалка" или "светодиодная мигалка". При этом, например, часть "китайских 'BluePill'ов", только-только вынутых из упаковки и подключенных к многократно проверенной плате программатора - с лёгкостью может выдавать ошибку "Не оригинальное устройство, прошивку загрузить невозможно", а рядом лежащая, точно такая же китайская плата, купленная у того же продавца - будет работать исправно (правда, довольно часто работать она может не долго, но всё же будет работать). Именно в такие моменты, в виду довольно скудного опыта, возникают мысли на тему, "что я сделал не так?", ведь не всегда есть оригинальный чип (или несколько чипов), которы(й, ые) можно подключить и сравнить, или проверить несколько. А так же закономерно возникает мысль формата: "возможно конкретно этот чип не заводится без какой-либо доп. обвязки или может я ещё что-то сделал не так?". Конечно же я проверяю правильность подключения обвязки по питанию по DataSheet'ам и/или по CubeMX, что бы исключить наиболее банальные ошибки.
  8. Если Вам интересно откуда такие вопросы - поясню. "Такие вопросы" появились в результате того, что чипов довольно много, а рабочих из них - довольно мало, так как они китайские (в основном китайские, в моём конкретном случае), в результате чего закономерно закрадывался вопрос: "а может это я что-то не так делаю, может чипу всё-таки чего-то не хватает для минимального запуска?".
  9. Коллеги, доброго времени суток! Помогите пожалуйста определиться со "стартовым" чипом/платформой с целью изучения. Хотелось бы вот что: Возможность запайки чипа на плату без дорогостоящей аппаратуры и роботов (в этом плане чипы в корпусе QFP48/QFP64 я думаю вполне подходят) Наличие в продаже отладочных плат с похожим по конфигурации и типоразмеру MCU, что бы иметь возможность обкатать всё на отладочной плате, а потом запаять Более ли менее приемлемая цена на сам чип Наличие принципиальной схемы минимальной обвязки для данного MCU Пока нашел вот такую плату (NUCLEO-F103RB), цена не кусается. Цена на MCU в том же магазине - порядка 250р./шт., что тоже в целом приемлемо (с учётом того, что много их надеюсь не потребуется). Но, нигде не могу найти принципиальную схему с минимальной обвязкой, для сборки минимально функционирующей болванки (и оценки собственных возможностей по её сборке). Почитал DataSheet - нашел описание схемы питания и ещё много чего интересного, кроме описания минимально необходимой обвязки. Просветите пожалуйста по данной теме. Особенно интересует вопрос по минимальной обвязке чипа, что добавить в схему, что бы запустить чип, залить минимально возможную прошивку (пусть это будет "мигающий светодиод") и удостовериться в работоспособности всего этого добра? Лирическое отступление: с "BluePill"ами уже наигрался. Точнее говоря, уже наигрался с "китайскими платами на базе китайских чипов". Китайские платы - то горят как спички, то какие-то постоянные проблемы с памятью, то ещё чего-то... Другое дело "фирменная" отладочная плата STM32, одна из таких пережила целый ряд катаклизмов и не смотря на потрёпанный вид исправно функционирует вот уже много лет, а с китайскими поделками - не обучение, а одно расстройство и нервотрёпка. Чипы - аналогично, 5 разных чипов от разных продавцов - абсолютно новые - все 5 ведут себя по разному. Только вынутые из упаковки - какие-то не работают вообще, какие-то глючат, 1 из 5 заработал... P.S. Буду признателен за любую полезную информацию по теме. Не судите строго пожалуйста, я только учусь.
  10. Коллеги, доброго времени суток! Столкнулся со следующей проблемой: при попытке заливки прошивки в отладочную плату "BluePill" (на бору STM32 F103C8T6) получаю ошибку "Error: Not a genuine ST Device! Abort connection" (keil). Общий алгоритм действий был примерно такой: Взял первую BluePill, попробовал залить прошивку - не заливается. Зашел в ST-Link Utility, сделал сброс и на всякий случай сделал полную очиску чипа. Проверяю: подключение/отключение - ОК. С некоторой вероятностью, после этого, прошивка может заливаться 1-2 раза, потом снова та же ошибка Взял другой программатор (такой же, китайский клон StLink v2), эффект - полностью аналогичный Решил что проблема с платой, взял другую BluePill - ровно то же самое, распаковал (достал из пакета) 3-ю аналогичную плату - то же самое, смена программаторов тоже особых успехов не принесла Где-то на просторах сети нашел информацию о том, что данная проблема с большей вероятностью связана с тем, что программа прошивки не может получить доступ к памяти чипа. Что с этой информацией мне делать дальше - не понимаю. Подскажите пожалуйста, возможно кто-то сталкивался уже с подобным, какие есть способы решения подобных проблем или хотя бы в какую сторону копать? Спасибо!
  11. Коллеги, доброго времени суток! Помогите пожалуйста разобраться в вопросе. Есть уже готовый исправно работающий передатчик, который автор сего устройства собрал на базе Arduino Mega 2560, передатчик работает в паре с микросхемой NRF24L01. Единственное, на что я могу повлиять - попросить автора прошивки поменять настройки вещания передатчика. Для примера, простейший код передатчика на ардуине выглядит так: #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> //RF24 radio(9, 10); // "создать" модуль на пинах 9 и 10 Для Уно RF24 radio(9, 53); // "создать" модуль на пинах 9 и 10 Для Меги char counter; void setup() { radio.begin(); //активировать модуль radio.setAutoAck(1); //режим подтверждения приёма, 1 вкл 0 выкл radio.setRetries(0, 15); //(время между попыткой достучаться, число попыток) radio.enableAckPayload(); //разрешить отсылку данных в ответ на входящий сигнал radio.setPayloadSize(32); //размер пакета, в байтах radio.openWritingPipe(0xAABBCCDD11LL); // 0xAABBCCDD11LL radio.setChannel(0x00); //выбираем канал (в котором нет шумов!) radio.setDataRate (RF24_1MBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS radio.setPALevel(RF24_PA_MIN); radio.powerUp(); //начать работу radio.stopListening(); //не слушаем радиоэфир, мы передатчик } void loop() { radio.write(&counter, sizeof(counter)); counter++; delay(500); } Пример простейшего приёмника на NRF24L01 (ардуина): #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> RF24 radio(9, 10); // "создать" модуль на пинах 9 и 10 Для Уно void setup() { Serial.begin(9600); Serial.println("ready!!!!!"); radio.begin(); //активировать модуль radio.setAutoAck(1); //режим подтверждения приёма, 1 вкл 0 выкл radio.setRetries(0,15); //(время между попыткой достучаться, число попыток) radio.enableAckPayload(); //разрешить отсылку данных в ответ на входящий сигнал radio.setPayloadSize(32); //размер пакета, в байтах radio.openReadingPipe(1, 0xAABBCCDD11LL); // 0xAABBCCDD11LL radio.setChannel(0x00); //выбираем канал (в котором нет шумов!) radio.setDataRate (RF24_1MBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS radio.setPALevel(RF24_PA_MIN); radio.powerUp(); //начать работу radio.startListening(); //начинаем слушать эфир, мы приёмный модуль } void loop() { char pipeNo, gotByte; while(radio.available(&pipeNo)) { // слушаем эфир со всех труб radio.read(&gotByte, sizeof(gotByte)); // чиатем входящий сигнал if(gotByte!=0) Serial.println(gotByte); } } Между собой ардуины отлично работают, но, принимать и обрабатывать данные должен STM32-чип (передавать данные обратно в данный момент не требуется). Что я только не пытался сделать - STM32 не видит входящий сигнал, либо же видит, но не хочет его обрабатывать... На просторах сети нашел библиотеку и простейший пример для работы с чипами NRF32L01, немного доработал его под себя, вот что получилось: #include <mbed.h> #include "nRF24L01P.h" #define TRANSFER_SIZE 32 int main() { nRF24L01P my_nrf24l01p(A7, A6, A5, A4, B0, A10); // mosi, miso, sck, csn, ce, irq Serial serial(A2, A3); int count = 0; int frequency = 2400; char rxData[TRANSFER_SIZE]; char data = 0; my_nrf24l01p.powerUp(); my_nrf24l01p.setTransferSize(TRANSFER_SIZE); my_nrf24l01p.setReceiveMode(); my_nrf24l01p.setRxAddress(0xAABBCCDD11LL); my_nrf24l01p.setRfFrequency(2400); my_nrf24l01p.enable(); // Display the (default) setup of the nRF24L01+ chip serial.printf("nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency()); serial.printf("nRF24L01+ Output power : %d dBm\r\n", my_nrf24l01p.getRfOutputPower()); serial.printf("nRF24L01+ Data Rate : %d kbps\r\n", my_nrf24l01p.getAirDataRate()); serial.printf("nRF24L01+ TX Address : 0x%010llX\r\n", my_nrf24l01p.getTxAddress()); serial.printf("nRF24L01+ RX Address : 0x%010llX\r\n", my_nrf24l01p.getRxAddress()); while(true) { for(int j = 0; j < 200000; j++) { if (my_nrf24l01p.readable(0) || my_nrf24l01p.readable(1) || my_nrf24l01p.readable(2) || my_nrf24l01p.readable(3) || my_nrf24l01p.readable(4) || my_nrf24l01p.readable(5)) { serial.printf("DATA ACCEPTED!!\r\n"); } } if(frequency < 2525) { frequency++; } else { frequency = 2400; } my_nrf24l01p.setRfFrequency(frequency); serial.printf("CHANGE CHANNEL: %d\n\r", my_nrf24l01p.getRfFrequency()); } } Вариант того, что чип не правильно припаян, не работоспособен или нечто подобное - мало вероятен, так как при малейших ошибках и даже плохом контакте - я получал кучу ошибок о том, что NRF24L01 - "не завелась". Перепробовал всё что смогу придумать, в том числе изменял/отключал CRC. Раз в пару часов могут придти несколько мусорных пакетов данных (подряд), после чего опять "радио молчание", при этом лежащий рядом тестовый приёмник собранный на базе ардуины, любезно предоставленный автором исходной прошивки - принимает данные исправно. Пробовал менять NFR'ки местами -- результат всегда один и тот же. Среди прочего, я заметил, что прёмник собранный на ардуине - стабильно может принимать в том числе и различный мусор из эфира, например, помехи от роутера. Собранный же мой приёмник 99.9% времени не принимает вообще ничего. Подозреваю, что проблема в коде который писал я, только не могу понять, куда бы могла закрасться ошибка...
  12. Если Вы посмотрите на схему которую я присылал выше, там замкнуты контакты 20 и 17 (VSS), а между ними контакт 18 (VDD), что уже никоим образом не позволяет сделать "удобную разводку" на одной стороне, не прибегая к помощи "перемычек" или прочих подобных фокусов.
  13. Про сигнальные выводы - это разумеется, вниз их выводить едва ли есть смысл. Но, если мы соединим силовые выводы "под чипом" - это уже будет двусторонняя плата.
  14. Постараюсь ответить на Ваш вопрос. В приложенной схеме (скачана была, если мне паять не изменяет - с сайта производителя этих чипов) выводы 7, 15 и 18 - замкнуты. Прежде всего хочу поблагодарить Вас за ответ и совет! На примере - развязка ножек убрана прямо под сам чип, что очень удобно, сам бы я наверное не догадался... P.S. У меня была мысль, что возможно это связано даже не столько с тем, что бы пропускать необходимый ток (хотя такая мысль мне в голову тоже приходила) сколько с тем, что таким образом подводится питание на разные (внутренние) части схемы. Но тогда мне непонятно другое - если речь идёт исключительно про ток и толщину дорожек/контактов - почему бы не собрать все выводы на одной стороне чипа, для удобства? А если речь идёт про подвод питания на схему - почему бы не сделать эту распайку внутри самого чипа?
×
×
  • Создать...