Общаюсь с Blue Pill через ST-Link. USB свободен. Захотелось кой какие данные выводить на ПК. Подскажите, пожалуйста, как для этой платы организовать виртуальный Com порт на ПК? 1. какие драйвера поставить на компьютер и 2. что залить в платку?
Не очень понимаю при чём в данном случае ST-LINK. С ним у меня проблем нет. Через него спокойно программирую платку. Сей час речь идёт об организации вывода данных через USB. И ошибка выдаётся при запуске инстолятора драйверов, взятого от сюда. Просьба откликнуться тех, кто работает в XP - драйверы устанавливаются правильно? Решил потанцевать с бубном. В папке драйверов отыскал все файлы с расширением inf, их оказалось три. Запустился только один, относящийся к maple-dfu. В диспетчере устройств появилась "чистое", без жёлтых вопросов устройство, соответствующее maple-dfu. Правда проверить не смог по причине поздного времени. Сегодня вечером попробую. Но меня это всё равно не спасает поскольку не знаю, как организовать подключение программ, работающих с виртуальным COM портом, то есть надо в диспетчере увидеть номер COM порта.
Но меня это всё равно не спасает поскольку не знаю, как организовать подключение программ, работающих с виртуальным COM портом, то есть надо в диспетчере увидеть номер COM порта.
Не надо ничего организовывать, надо чтобы после того как найдется DFU установился виртуальный сом порт, у меня он установился, но не сразу ))) пару десятков раз пришлось платку подёргать, XP SP3, загрузчик IDE в плату естественно прошит!?
Ставил mapple-serial x86 (installer_x86.exe)
Не надо ничего организовывать, надо чтобы после того как найдется DFU установился виртуальный сом порт, у меня он установился, но не сразу ))) пару десятков раз пришлось платку подёргать,
Такая мысль была, но сил уже не было попробовать
ua6em пишет:
XP SP3, загрузчик IDE в плату естественно прошит!?
Не могу догадаться о чём идёт речь. По инструкции в плату загружал generic_boot20_pc13.bin. Это оно?
Виртуальный COM порт установить удалось. С помощью STM32 ST-LINK Utility загрузил в плату, как вы говорите, загрузчик IDE (generic_boot20_pc13.bin) предварительно поставив Boot 0 в 1. Вернул Boot 0 в 0 и подключил к ПК по USB кабелю. В диспетчере устройств появился maple-dfu. Это не удивило, поскольку рнее драйвер для него мне удалось установить (см. пост 606). Запустил Ардуино, в Uploader metod установил STM32duino bootloader и попробовал залить рабочий скетчь. На этапе загрузки IDE сказала что то про сериал порт и предложила установить драйвер. Средствами Windows в ручную указал папку maple-serial, инсталлер подхватил и произвёл установку и дозалил скетч. Программа заработала адекватно. В диспетчере устройств появился виртуальный COM порт maple-serial. Ранее, без запуска ардуино, на все установочные файлы Windows ругался. Я так понимаю, что что то им без ардуино не хватало. В общем я рад за себя и спасибо всем кто направлял.
На этапе загрузки IDE сказала что то про сериал порт и предложила установить драйвер. Средствами Windows в ручную указал папку maple-serial, инсталлер подхватил и произвёл установку и дозалил скетч. Программа заработала адекватно. В диспетчере устройств появился виртуальный COM порт maple-serial. Ранее, без запуска ардуино, на все установочные файлы Windows ругался. Я так понимаю, что что то им без ардуино не хватало. В общем я рад за себя и спасибо всем кто направлял.
Вот, Вы реализовали еще один способ установки драйвера, а кто говорил, что существует 99 способов )))
Спасибо, помогло. Но я в недоумении. В одном случае нормально компилируется с функцией размещённой после loop(), а в этом - только перед loop(). В чём прикол? Может, все функции надо размещать перед loop()?
Спасибо, помогло. Но я в недоумении. В одном случае нормально компилируется с функцией размещённой после loop(), а в этом - только перед loop(). В чём прикол? Может, все функции надо размещать перед loop()?
В общем подразобрался. Ардуино дописывает сам не хватающие обьявление, но не всегда.
Ардуино не дописывет объявления, а переносит их наверх (там, где они и должны быть). Но не надо полагаться на Arduino IDE, самостоятельно ВСЕГДА объявляйте функции вверху (выше первого использования).
В общем подразобрался. Ардуино дописывает сам не хватающие обьявление, но не всегда.
Ардуино не дописывет объявления, а переносит их наверх (там, где они и должны быть). Но не надо полагаться на Arduino IDE, самостоятельно ВСЕГДА объявляйте функции вверху (выше первого использования).
Понятно. Просто поскольку нигде не видел обьявление функции не мог с ходу сообразить как правильно это делать.
Кстати, 103 камни уже староваты (есть глюки), лучше юзать что-то поновей.
А новые это какие ? Имеется введу STM32F4xx ?
прежде чем спрашивать, вы бы на дату смотрели.... Кстати, в том старом сообщении, откуда вы выдернули фразу - и ответ есть.
Платы на STM32F103 в основном используют не потому. что они очень крутые - а потому что супердешевые, Такая платка дешевле стандартной Нано. а по возможностям кроет ее и в хвост и в гриву. Платы на STM32F4xx в 4 -10 раз дороже и начинать с них нет смысла. Использовать их стоит только тем, кто освоил дешевые варианты и понял. что ему не хватает функционала.
Платы на STM32F103 в основном используют не потому. что они очень крутые - а потому что супердешевые, Такая платка дешевле стандартной Нано. а по возможностям кроет ее и в хвост и в гриву. Платы на STM32F4xx в 4 -10 раз дороже и начинать с них нет смысла. Использовать их стоит только тем, кто освоил дешевые варианты и понял. что ему не хватает функционала.
В серии STM32F4xx глюки с I2C остались, как были в 103 ?
В серии STM32F4xx глюки с I2C остались, как были в 103 ?
Загляните в референсы и сравните регистры сами. В более новых Ф0хх и Ф3хх I2C сделали просто другой, типа совсем. Да и в 103-ем, если разобраться, то с I2C не всё ещё так плохо. Если же это всё напрягает в режиме мастера, напишите свой I2C на таймере или через SPI.
В серии STM32F4xx глюки с I2C остались, как были в 103 ?
Загляните в референсы и сравните регистры сами. В более новых Ф0хх и Ф3хх I2C сделали просто другой, типа совсем. Да и в 103-ем, если разобраться, то с I2C не всё ещё так плохо. Если же это всё напрягает в режиме мастера, напишите свой I2C на таймере или через SPI.
Без DMA ? Ну так и пришлось обходить. А почему F0xx новее F1xx ?
Потому что сначала были 10х, потом 20х, потом 40х, потом 05х и 30х. СТМ долго тянула с М0 из-за СТМ8, но НХП и другие своими М0+ всё таки подстегнули СТМ с выпуском Ф0хх. А Ф30х-ми просто заполнили нишу между Ф20х и Ф40х, где скорость не так важна, но нужен был ФПУ. Поэтому 0хх и 3хх более новые и периферия у них поновее и получше.
Я не внимателен или для этой платы функции EEPROM.get() и EEPROM.put() не поддерживаются? Компилятор на них ругается. Библиотека EEPROM.h подключена. Если не поддерживаются, то как записывать и читать данные, типа float?
Я не внимателен или для этой платы функции EEPROM.get() и EEPROM.put() не поддерживаются? Компилятор на них ругается. Библиотека EEPROM.h подключена. Если не поддерживаются, то как записывать и читать данные, типа float?
не поддерживаются. Там ведь, говоря по-честному, и ЕЕПРОМ-а нет :)
Писать флоаты - "вручную" побайтно, примеров в архивах ардуино-форумов полно.
по описанию с хабра (ссылка в сообщении #602) прошивать пробовали? Я загрузчик шил обычным переходником USB-USART. СТ-линк там не нужен, я его себе сделал, только когда СТМ8 занялся :)
Сам автор пишет о неустойчивости работы: "Не совсем понятно почему после первого подключения плата определяется по-разному", "прошивка то загрузилась успешно, хотя не всегда так", "А теперь про «ложку дёгтя»" и т.д.
Драйвера там по ссылке те же, что и в других ссылках - у меня уже, кажется, в папке Downloads скопилось штук 6-8 экземпляров этого архива, скачанных по ссылкам из разных мест.
Но, в принципе, хорошо, что напомнили, я сейчас это и попробую.
Сам автор пишет о неустойчивости работы: "Не совсем понятно почему после первого подключения плата определяется по-разному", "прошивка то загрузилась успешно, хотя не всегда так", "А теперь про «ложку дёгтя»" и т.д.
о, кстати, тоже напомнили. Практически во всех "голубых платах" на USB не тот резистор напаян - 10к вместо 1к. Поэтому платы определяются компом неустойчиво - какие-то легко, какие-то через раз, а некоторые вообще нет. Решение простое - от пина РА12 надо кинуть на +3.3в резюк 1.8К. как на картинке
Кстати, еще проверьте простую вещь - на каком пине у вас светодиод. В разных платах они на разных пинах, а тогда, как понимаете, блинк не заработает. Адрес светодиода обычно написан прямо рядом с ним на плате.
1. Резистор 1к8 я впаял ранее (хотя забыл написать об этом).
2. Светодиод: на плате рядом со светодиодом написано "PC13", но, в отличие от того, что указано по Вашей ссылке, он красного (а не зеленого) цвета. И еще: Я проверил blink на всех имеющихся ногах - ни на одной не работает.
3. Прошил через USB-UART. Кстати, в архиве "Дешевая..." имеется другой закгрузчик, с тем же именем - generic_boot20_pc13.bin, но 7 кБайт, а не 21. Прошивал именно его. Ничего не изменилось. Считал прошитое при помощи ST-Link'а, сравнил побайтно - все сходится. Но результата нет :(.
4. По Вашей ссылке снова обнаружил указание на дополнительный менеджер плат (ранее уже встречал упоминание, но не устанавливал). Теперь - подключил дополнительный и установил STM32: в меню выбора плат появилась вторая копия всех STM-плат. Выбрал Generic STM32F103C series. Откомпилил и залил blink с установкой платы из второй копии. Ничего не изменилось.
В итоге плата начала определяться? Загрузчик и скетч - прошиваются без ошибок? - тогда скорее всего все должно работать... ищите что-то простое, типа какой-нить описки в коде блинк...
Плата продолжает определяться как неизвестное устройство, из диспетчера устройств драйвера (3 штуки в пакете Arduino STM32) не устанавливаются: говорит, не требуются. И USB-UART и ST-Link рапортуют о нормальной прошивке, более того, как уже писал, то, что записано USB-UART'ом, было считано ST-Link'ом и результат совпал байт в байт.
blink я загружал многократно в различных вариантах (с миганием на 1, 2, 5 или 6 ножках), кроме того, подключал внешние светодиоды к ножкам. Переделки blink не сохранял - все новые начинал с чистого листа, так что, если и были ошибки, они не попали в следующие версии blink'а.
И, возвращаясь: почему после восстановления родной прошивки частота мигания упала вдвое? От чего это вообще могло произойти?
andriano, раз блинк не мигает, и как USB девайс плата не определяется то похоже, что МК либо не стартует вообще, либо стартует, но не на той частоте. Соответсно первое,что приходит в голову -проверить есть ли подтяжка на ресете, и проверить что на ногах кварца есть 8МГц. У меня с этой платкой вообще никаких проблем небыло..
Да, исследуемая плата ведет себя не так, как другая, с которой я ничего не делал (кроме того, что скопировал с нее оригинальную прошивку):
На "другой": на ноге кварца со стороны PB6 - примерно 2В, со стороны PA2 - переменное напряжение менее вольта с постоянной составляющей около 2 В. На исследуемой: со стороны PB6 - 0В, со стороны PA2 - примерно 2В (переменную составляющую не видно).
При этом в исследуемую плату при измерении была залита прошивка с "другой", и светодиод на ней мигал на частоте вдвое меньшей.
В общем, непонятно: если генератор не работает (обрыв около PB6?), то почему с платы можно прочитать прошивку, можно записать и мигает светодиод (хоть и не с той частотой)?
Мне пришло 5 плат и на всех не стартовали часовые кварцы. На блинк это не влияет, но как симптом впаянных компонентов. А как среду - attollic true studio стала бесплатной для STM.
Мне пришло 5 плат и на всех не стартовали часовые кварцы. На блинк это не влияет, но как симптом впаянных компонентов.
не, у них проблемы именно с часовыми кварцами - у меня тоже примерно на половине плат не стартуют. Но все остальное нормально, только на одной плате кнопка РЕСЕТ отвалилась. пришлось подпаивать.
Спасибо, dimax, пошарудил паяльником около вывода кварца (на котором 0В), после подключения - светодиод замигал с нужной частотой.
Зашил снова бутлоадер, драйвера, вроде, инициализировались, в диспетчере устройств появился Maple DFU, но пока Arduino IDE не видит COM-порт. В общем, буду разбираться дальше...
Никогда не думал, что придется шарудить паяльником по внутренностям отладочной платы (кроме внешней гребенки).
Надо передавать из платы в свою программу на ПК переменные типа float так, как они записаны, то есть 4 байта. Создал свою программу
float Iss = 1.2;
unsigned char raw[4];
(float&)raw = Iss;
for (int i = 0; i < 4; i++)
Serial.print(raw [i], HEX);
Serial.println("");
Чего то передаётся, но вводит в полное недоумение то, что для разных чисел количество принимаемых байт разное от 3 до 4. Получается, что количество байт, отводимое для этого формата в ардуино, меняется в зависимости от количества значащих цифр. Как тогда понимать структуру этого формата?
Разобрался. В отличие от IEEE 754 в ардуино float одинарной точности хранится хотя и в 4 байтах, но в обратном байтовом порядке.
// запись float в COM порт
void COM_float_write(float num) {
char raw[4];
(float&)raw = num;
for(int8 i = 3; i >= 0; i--)
Serial.write(raw[i]);
Serial.println("");
}
Общаюсь с Blue Pill через ST-Link. USB свободен. Захотелось кой какие данные выводить на ПК. Подскажите, пожалуйста, как для этой платы организовать виртуальный Com порт на ПК? 1. какие драйвера поставить на компьютер и 2. что залить в платку?
Драйвера ставятся, когда добавляете поддержку СТМ32 в Ардуино ИДЕ. Их можно взять в этой статье
Вывод в Serial на СТМ32 точно такой же, как и в любой ардуине - Serial.print("Hello world!");
Драйвера ставятся, когда добавляете поддержку СТМ32 в Ардуино ИДЕ. Их можно взять в этой статье
Вывод в Serial на СТМ32 точно такой же, как и в любой ардуине - Serial.print("Hello world!");
Спасибо. Неожиданная заморочка. При запуске install_drivers.bat выдаётся сообщение ".....wdi-simple.exe не является приложением Win32. ОС Windows XP.
Драйвера ставятся, когда добавляете поддержку СТМ32 в Ардуино ИДЕ. Их можно взять в этой статье
Вывод в Serial на СТМ32 точно такой же, как и в любой ардуине - Serial.print("Hello world!");
Спасибо. Неожиданная заморочка. При запуске install_drivers.bat выдаётся сообщение ".....wdi-simple.exe не является приложением Win32. ОС Windows XP.
а у вас точно - ST-LINK_USB_V2_1_Driver
При запуске install_drivers.bat выдаётся сообщение ".....wdi-simple.exe не является приложением Win32. ОС Windows XP.
тут ничего сказать не могу - в Win7 x64 драйвера ставятся сами, как только первый раз втыкаешь плату в порт
а у вас точно - ST-LINK_USB_V2_1_Driver
Не очень понимаю при чём в данном случае ST-LINK. С ним у меня проблем нет. Через него спокойно программирую платку. Сей час речь идёт об организации вывода данных через USB. И ошибка выдаётся при запуске инстолятора драйверов, взятого от сюда. Просьба откликнуться тех, кто работает в XP - драйверы устанавливаются правильно? Решил потанцевать с бубном. В папке драйверов отыскал все файлы с расширением inf, их оказалось три. Запустился только один, относящийся к maple-dfu. В диспетчере устройств появилась "чистое", без жёлтых вопросов устройство, соответствующее maple-dfu. Правда проверить не смог по причине поздного времени. Сегодня вечером попробую. Но меня это всё равно не спасает поскольку не знаю, как организовать подключение программ, работающих с виртуальным COM портом, то есть надо в диспетчере увидеть номер COM порта.
а у вас точно - ST-LINK_USB_V2_1_Driver
Но меня это всё равно не спасает поскольку не знаю, как организовать подключение программ, работающих с виртуальным COM портом, то есть надо в диспетчере увидеть номер COM порта.
Не надо ничего организовывать, надо чтобы после того как найдется DFU установился виртуальный сом порт, у меня он установился, но не сразу ))) пару десятков раз пришлось платку подёргать, XP SP3, загрузчик IDE в плату естественно прошит!?
Ставил mapple-serial x86 (installer_x86.exe)
Такая мысль была, но сил уже не было попробовать
Не могу догадаться о чём идёт речь. По инструкции в плату загружал generic_boot20_pc13.bin. Это оно?
Не могу догадаться о чём идёт речь. По инструкции в плату загружал generic_boot20_pc13.bin. Это оно?
ОНО
Виртуальный COM порт установить удалось. С помощью STM32 ST-LINK Utility загрузил в плату, как вы говорите, загрузчик IDE (generic_boot20_pc13.bin) предварительно поставив Boot 0 в 1. Вернул Boot 0 в 0 и подключил к ПК по USB кабелю. В диспетчере устройств появился maple-dfu. Это не удивило, поскольку рнее драйвер для него мне удалось установить (см. пост 606). Запустил Ардуино, в Uploader metod установил STM32duino bootloader и попробовал залить рабочий скетчь. На этапе загрузки IDE сказала что то про сериал порт и предложила установить драйвер. Средствами Windows в ручную указал папку maple-serial, инсталлер подхватил и произвёл установку и дозалил скетч. Программа заработала адекватно. В диспетчере устройств появился виртуальный COM порт maple-serial. Ранее, без запуска ардуино, на все установочные файлы Windows ругался. Я так понимаю, что что то им без ардуино не хватало. В общем я рад за себя и спасибо всем кто направлял.
На этапе загрузки IDE сказала что то про сериал порт и предложила установить драйвер. Средствами Windows в ручную указал папку maple-serial, инсталлер подхватил и произвёл установку и дозалил скетч. Программа заработала адекватно. В диспетчере устройств появился виртуальный COM порт maple-serial. Ранее, без запуска ардуино, на все установочные файлы Windows ругался. Я так понимаю, что что то им без ардуино не хватало. В общем я рад за себя и спасибо всем кто направлял.
Вот, Вы реализовали еще один способ установки драйвера, а кто говорил, что существует 99 способов )))
Пока не разобрался, что то с синтаксисом, помогите, пожалуйста. При компиляции говорит, что функция HX711 не декларированна.
поставьте описание функции выше loop()
Спасибо, помогло. Но я в недоумении. В одном случае нормально компилируется с функцией размещённой после loop(), а в этом - только перед loop(). В чём прикол? Может, все функции надо размещать перед loop()?
В чём прикол? Может, все функции надо размещать перед loop()?
А вот же оно, только что было: http://arduino.ru/forum/programmirovanie/razbienie-koda-na-chasti#comment-381010
Как файл называется, в котором выдаёт ошибку?
Я, до разбиения на файлы, вообще, наверняка не дойду. В общем подразобрался. Ардуино дописывает сам не хватающие обьявление, но не всегда.
Спасибо, помогло. Но я в недоумении. В одном случае нормально компилируется с функцией размещённой после loop(), а в этом - только перед loop(). В чём прикол? Может, все функции надо размещать перед loop()?
функции требуют объявления, видимо :-)
можно размещать и после, но объявить надо до...
В общем подразобрался. Ардуино дописывает сам не хватающие обьявление, но не всегда.
Ардуино не дописывет объявления, а переносит их наверх (там, где они и должны быть). Но не надо полагаться на Arduino IDE, самостоятельно ВСЕГДА объявляйте функции вверху (выше первого использования).
В общем подразобрался. Ардуино дописывает сам не хватающие обьявление, но не всегда.
Ардуино не дописывет объявления, а переносит их наверх (там, где они и должны быть). Но не надо полагаться на Arduino IDE, самостоятельно ВСЕГДА объявляйте функции вверху (выше первого использования).
Понятно. Просто поскольку нигде не видел обьявление функции не мог с ходу сообразить как правильно это делать.
Платку прикупил STM32F407 и вопрос, как её прикрутить к IDE?
прежде чем спрашивать, вы бы на дату смотрели.... Кстати, в том старом сообщении, откуда вы выдернули фразу - и ответ есть.
Платы на STM32F103 в основном используют не потому. что они очень крутые - а потому что супердешевые, Такая платка дешевле стандартной Нано. а по возможностям кроет ее и в хвост и в гриву. Платы на STM32F4xx в 4 -10 раз дороже и начинать с них нет смысла. Использовать их стоит только тем, кто освоил дешевые варианты и понял. что ему не хватает функционала.
Платку прикупил STM32F407 и вопрос, как её прикрутить к IDE?
Да их много и разных. Смотря для чего, какие задачи. Из копеечных - F030-е, F070-е (недотестированные F042-е), F072-е. И вплоть до Н7хх.
В серии STM32F4xx глюки с I2C остались, как были в 103 ?
не в курсе. что за глюки. Делал один проект на F103 с использованием i2c - все работало без проблем.
В серии STM32F4xx глюки с I2C остались, как были в 103 ?
Загляните в референсы и сравните регистры сами. В более новых Ф0хх и Ф3хх I2C сделали просто другой, типа совсем. Да и в 103-ем, если разобраться, то с I2C не всё ещё так плохо. Если же это всё напрягает в режиме мастера, напишите свой I2C на таймере или через SPI.
Да их много и разных. Смотря для чего, какие задачи. Из копеечных - F030-е, F070-е (недотестированные F042-е), F072-е. И вплоть до Н7хх.
В серии STM32F4xx глюки с I2C остались, как были в 103 ?
Загляните в референсы и сравните регистры сами. В более новых Ф0хх и Ф3хх I2C сделали просто другой, типа совсем. Да и в 103-ем, если разобраться, то с I2C не всё ещё так плохо. Если же это всё напрягает в режиме мастера, напишите свой I2C на таймере или через SPI.
А почему F0xx новее F1xx ?
Потому что сначала были 10х, потом 20х, потом 40х, потом 05х и 30х. СТМ долго тянула с М0 из-за СТМ8, но НХП и другие своими М0+ всё таки подстегнули СТМ с выпуском Ф0хх. А Ф30х-ми просто заполнили нишу между Ф20х и Ф40х, где скорость не так важна, но нужен был ФПУ. Поэтому 0хх и 3хх более новые и периферия у них поновее и получше.
Я не внимателен или для этой платы функции EEPROM.get() и EEPROM.put() не поддерживаются? Компилятор на них ругается. Библиотека EEPROM.h подключена. Если не поддерживаются, то как записывать и читать данные, типа float?
Я не внимателен или для этой платы функции EEPROM.get() и EEPROM.put() не поддерживаются? Компилятор на них ругается. Библиотека EEPROM.h подключена. Если не поддерживаются, то как записывать и читать данные, типа float?
не поддерживаются. Там ведь, говоря по-честному, и ЕЕПРОМ-а нет :)
Писать флоаты - "вручную" побайтно, примеров в архивах ардуино-форумов полно.
Захотел передать в порт float "как есть", написал такую подпрограмму.
Компилятор ругнулся сообщением: "call of overloaded 'println(byte [4])' is ambiguous". Что не так? Как правильно?
При попытке установки поддержки STM32 в Arduino IDE возникли проблемы.
Сначала пытался установить на IDE версии 1.6.5 в Windows XP/32 - не удалось: не запускаестя файл установки драйверов.
Повторил попытку с той же версией IDE в Windows 7/64, проблемы не исчезли.
Тогда попытался установить по новой в новую версию IDE (гарантированно поддерживается, начиная с 1.6.10), следуя иструкциям: http://wiki.stm32duino.com/index.php?title=Installation
Установлена новая версия Ардуино 1.8.5: http://arduino.cc/en/Main/Software
по описанию с хабра (ссылка в сообщении #602) прошивать пробовали? Я загрузчик шил обычным переходником USB-USART. СТ-линк там не нужен, я его себе сделал, только когда СТМ8 занялся :)
И, кстати. в этой статье и драйвера есть.
Статью, естественно, читал.
Сам автор пишет о неустойчивости работы: "Не совсем понятно почему после первого подключения плата определяется по-разному", "прошивка то загрузилась успешно, хотя не всегда так", "А теперь про «ложку дёгтя»" и т.д.
Драйвера там по ссылке те же, что и в других ссылках - у меня уже, кажется, в папке Downloads скопилось штук 6-8 экземпляров этого архива, скачанных по ссылкам из разных мест.
Но, в принципе, хорошо, что напомнили, я сейчас это и попробую.
Статью, естественно, читал.
Сам автор пишет о неустойчивости работы: "Не совсем понятно почему после первого подключения плата определяется по-разному", "прошивка то загрузилась успешно, хотя не всегда так", "А теперь про «ложку дёгтя»" и т.д.
о, кстати, тоже напомнили. Практически во всех "голубых платах" на USB не тот резистор напаян - 10к вместо 1к. Поэтому платы определяются компом неустойчиво - какие-то легко, какие-то через раз, а некоторые вообще нет. Решение простое - от пина РА12 надо кинуть на +3.3в резюк 1.8К. как на картинке
Или так :)
Подробнее тут
Кстати, еще проверьте простую вещь - на каком пине у вас светодиод. В разных платах они на разных пинах, а тогда, как понимаете, блинк не заработает. Адрес светодиода обычно написан прямо рядом с ним на плате.
Люди в этой ветке уже накалывались - см #561
1. Резистор 1к8 я впаял ранее (хотя забыл написать об этом).
2. Светодиод: на плате рядом со светодиодом написано "PC13", но, в отличие от того, что указано по Вашей ссылке, он красного (а не зеленого) цвета. И еще: Я проверил blink на всех имеющихся ногах - ни на одной не работает.
3. Прошил через USB-UART. Кстати, в архиве "Дешевая..." имеется другой закгрузчик, с тем же именем - generic_boot20_pc13.bin, но 7 кБайт, а не 21. Прошивал именно его. Ничего не изменилось. Считал прошитое при помощи ST-Link'а, сравнил побайтно - все сходится. Но результата нет :(.
4. По Вашей ссылке снова обнаружил указание на дополнительный менеджер плат (ранее уже встречал упоминание, но не устанавливал). Теперь - подключил дополнительный и установил STM32: в меню выбора плат появилась вторая копия всех STM-плат. Выбрал Generic STM32F103C series. Откомпилил и залил blink с установкой платы из второй копии. Ничего не изменилось.
В итоге плата начала определяться? Загрузчик и скетч - прошиваются без ошибок? - тогда скорее всего все должно работать... ищите что-то простое, типа какой-нить описки в коде блинк...
Плата продолжает определяться как неизвестное устройство, из диспетчера устройств драйвера (3 штуки в пакете Arduino STM32) не устанавливаются: говорит, не требуются. И USB-UART и ST-Link рапортуют о нормальной прошивке, более того, как уже писал, то, что записано USB-UART'ом, было считано ST-Link'ом и результат совпал байт в байт.
blink я загружал многократно в различных вариантах (с миганием на 1, 2, 5 или 6 ножках), кроме того, подключал внешние светодиоды к ножкам. Переделки blink не сохранял - все новые начинал с чистого листа, так что, если и были ошибки, они не попали в следующие версии blink'а.
И, возвращаясь: почему после восстановления родной прошивки частота мигания упала вдвое? От чего это вообще могло произойти?
ну тогда уж и не знаю... прошивка грузится, но не работает? - странно.
Вы джампер BOOT0 на место не забыли вернуть?
andriano, раз блинк не мигает, и как USB девайс плата не определяется то похоже, что МК либо не стартует вообще, либо стартует, но не на той частоте. Соответсно первое,что приходит в голову -проверить есть ли подтяжка на ресете, и проверить что на ногах кварца есть 8МГц. У меня с этой платкой вообще никаких проблем небыло..
Да, исследуемая плата ведет себя не так, как другая, с которой я ничего не делал (кроме того, что скопировал с нее оригинальную прошивку):
На "другой": на ноге кварца со стороны PB6 - примерно 2В, со стороны PA2 - переменное напряжение менее вольта с постоянной составляющей около 2 В. На исследуемой: со стороны PB6 - 0В, со стороны PA2 - примерно 2В (переменную составляющую не видно).
При этом в исследуемую плату при измерении была залита прошивка с "другой", и светодиод на ней мигал на частоте вдвое меньшей.
В общем, непонятно: если генератор не работает (обрыв около PB6?), то почему с платы можно прочитать прошивку, можно записать и мигает светодиод (хоть и не с той частотой)?
Подтяжка ресета есть - напряжение 3.3В.
Мне пришло 5 плат и на всех не стартовали часовые кварцы. На блинк это не влияет, но как симптом впаянных компонентов. А как среду - attollic true studio стала бесплатной для STM.
Мне пришло 5 плат и на всех не стартовали часовые кварцы. На блинк это не влияет, но как симптом впаянных компонентов.
не, у них проблемы именно с часовыми кварцами - у меня тоже примерно на половине плат не стартуют. Но все остальное нормально, только на одной плате кнопка РЕСЕТ отвалилась. пришлось подпаивать.
Спасибо, dimax, пошарудил паяльником около вывода кварца (на котором 0В), после подключения - светодиод замигал с нужной частотой.
Зашил снова бутлоадер, драйвера, вроде, инициализировались, в диспетчере устройств появился Maple DFU, но пока Arduino IDE не видит COM-порт. В общем, буду разбираться дальше...
Никогда не думал, что придется шарудить паяльником по внутренностям отладочной платы (кроме внешней гребенки).
Надо передавать из платы в свою программу на ПК переменные типа float так, как они записаны, то есть 4 байта. Создал свою программу
Чего то передаётся, но вводит в полное недоумение то, что для разных чисел количество принимаемых байт разное от 3 до 4. Получается, что количество байт, отводимое для этого формата в ардуино, меняется в зависимости от количества значащих цифр. Как тогда понимать структуру этого формата?
Вау. Размножение в темах. Используй union для одновременно расположения в памяти двух разных типов и посмотри что получится.
Разобрался. В отличие от IEEE 754 в ардуино float одинарной точности хранится хотя и в 4 байтах, но в обратном байтовом порядке.