VS1003_STM Портированная библиотека

Вассилис
Пт 22 мая 2015 г. 13:04
Привет,

Я перенес arduino VS1003b Библиотека с примером "Hello" для STM32F103 MCU.
Я опубликовал библиотеку на GitHub https: // github.com/serasidis/stm32duino.

Инструкции по установке включены в ReadMe.MD -файл на GitHub.

Я намерен организовать библиотеки «Портированные» в папке Serasidis.
Функции портовых библиотек (сделанные мной) будут скопированы в Serasidis Папка тоже.

Если вам не нравится библиотечная организация, которую я выбираю, и вы предпочитаете независимую папку для каждой портированной библиотеки, пожалуйста, скажите мне, чтобы изменить ее.

Надеюсь, вам понравится новый порт : D
Vassilis serasidis

-= Редактировать =-
Короткая видео -демонстрация библиотеки на YouTube можно найти здесь.

Zoomx
Пт 22 мая 2015 г. 13:42
Вассилис,

Может быть, лучше иметь отдельную папку для каждой библиотеки под папкой Serasidis. Вы также можете назвать свои библиотеки префиксом serasidis, как Adafruit.

Вассилис
Пт 22 мая 2015 г. 13:56
Ты прав Zoomx. Я думаю, что лучше иметь отдельную папку для каждой библиотеки, потому что она помогает перераспределению библиотеки.
Я изменим это.

Rogerclark
Вторник 26 мая 2015 г., 6:47
Вассиллис

Я просто скопирую ваши файлы в репо, потому что я не могу добавить их в качестве подмодуля из вашего репо, так как файлы не находятся в собственном репо.

Если вы хотите переместить их в отдельное репо, я могу удалить файлы и ссылки через подмодуль позже, но, по крайней мере, ваши файлы будут доступны для всех в то же время

Ваше здоровье

Роджер

Редактировать. Я включил ваши файлы в репо.

Примечание мне пришлось изменить пример при использовании PC7, который не доступен на платах серии F103C. Так что код теперь использует PC14 вместо этого

Мадиас
Чт 28 мая 2015 г., 19:15
Потому что я ударил это случайно: модуль VS1003 для 7.5 долларов США:
http: // www.aliexpress.com/item/vs1003-m ... .18.Bmzrbq
Я предполагаю, что это мягкая доска 1053 LC. (Итак, должен быть сделан небольшой аппаратный мод)

Вассилис
Чт 28 мая 2015 г. 20:25
Изображение
Эта плата использует чип VS1003B.

Изображение
Эта плата использует чип VS1053B.

А VS1003B_STM Библиотека работает на обеих досках (и чипсах). У меня есть обе доски, и я успешно проверяю библиотеку на них обоих.

Основные различия заключаются в том, что VS1053B может декодировать больше аудио форматов (AAC) и может декодировать аудио форматы с более высокой скоростью битов.

Мадиас
Пт 29 мая 2015 г., 7:03
Хорошо, кажется, что все бодры VS1003 распроданы, и даже если это в описании «VS1003 VS1003B MP3 Модуль», вы получите наверняка vs1053.
Поэтому для всех, кто покупает этот модуль, сначала прочитайте эту статью, потому что в этом модуле есть небольшая ошибка макета (она начнется в режиме MIDI, а не в режиме MP3)
http: // www.Баджди.com/lcsoft-vs1053-mp3-module/

Rogerclark
Пт 29 мая 2015 г., 7:25 утра
(РЖУ НЕ МОГУ)

Я забыл, что мне нужно изменить свою доску.

Это объясняет, почему это не работает ;-)

Ахулл
Пт 29 мая 2015 г. 9:39
Если вы прочитаете комментарии приведенной выше статьи (Пользователь: Ian 21/04/2015 в 15:00), вы увидите, что, похоже, можно сформулировать доску VS1053 в режим MP3, вы можете посмотреть на добавление этого трюк в библиотеку.

Rogerclark
Пт 29 мая 2015 г., 10:17
Энди

Что ж, теперь я паял свой (но мне пришлось использовать USB -микроскоп, так как булавки были такими маленькими)

В любом случае, я подумал, что могу также скопировать инструкции из ответа на эту запись в блоге здесь


Хотя я получил свой VS1053, работая, прожив кусок проволоки между булавками 33 & 34, я не думал, что мои навыки пайки были адекватны для того, чтобы сделать это постоянным решением. К счастью, оказывается, есть другое решение.

На веб -сайте VLSI кто -то спросил, есть ли способ выйти из режима MIDI. Оценка можно инициировать программное обеспечение перезагрузки и переоценить состояние PIN 34. Это описанный метод:

“Вы можете обнаружить режим RTMIDI после сброса аппаратного/программного обеспечения, проверив Audata. Если вы видите 44100/44101, rtmidi активирован, и вы можете написать gpio_ddr = 3 и gpio_odata = 0, затем дать сброс программного обеспечения для загрузки в обычный режим декодирования.”

Я пробовал это & оно работает. Для получения информации адрес gpio_ddr равен 0xc017, а адрес gpio_odata равен 0xc019.

В ответ на мой предыдущий вопрос - включает ли доска LCSoft блокирование конденсаторов на аудио - я сейчас совершенно уверен, что она не.
Позор, они не опубликовали какой -нибудь код, так как я уверен, что они написали некоторые

Вассилис
Пт 29 мая 2015 г. 10:18
Изображение
На рисунке вышесированные контакты 33-34 припаяются вместе.
На моей доске VS1053B (технология LC) PINS 34-35 припаяны вместе, и работает.

Как я вижу из таблицы VS1053, булавки:

Gpio0 | PIN 33 | Dio Gen. фирм. IO 0 (Spiboot), используйте резистор на 100 кОм
Gpio1 | PIN 34 | DIO General Actud IO
Gnd | PIN 35 | DGND ввода/вывод

Вассилис
Пт, 29 мая 2015 12:57
Я написал обновление для библиотеки VS1003B, которая решает проблему на технологиях VS1053B LC.

Теперь нет необходимости в пайках 33-34 или 34-35 ;)

Вассилис
Пт, 29 мая 2015 г., 13:37
Патч/исправление готово и опубликовано здесь Для тех, кто спешит.

Я сделал запрос на привлечение Роджеру за то, что он включил патч/исправление в репозиторий.

Рик Кимбалл
Пт 29 мая 2015 г., 13:45
Я просто смотрел этот код. Почему переосмысление Progmem и использование манипуляции с струнными струнами AVR Flash?

Вассилис
Пт 29 мая 2015 г. 14:41
Рик Кимбалл написал:Я просто смотрел этот код. Почему переосмысление Progmem и использование манипуляции с струнными струнами AVR Flash?

victor_pv
Сб 30 мая 2015 г. 15:55
Вассилис спасибо за библиотеку.
Можете ли вы порекомендовать любую дешевую доску с eBay или AliexPress от продавца, которого вы уже использовали, и была хорошей доской?

еще раз спасибо.

Вассилис
Сб 30 мая 2015 г., 17:33
victor_pv написал:Вассилис спасибо за библиотеку.
Можете ли вы порекомендовать любую дешевую доску с eBay или AliexPress от продавца, которого вы уже использовали, и была хорошей доской?

еще раз спасибо.

Мадиас
Сб 30 мая 2015 г., 18:22
@Vassilis, просто не интересно: вы когда -нибудь записывали аудио с этим модулем в SD?
И большое спасибо за метод взлома программного обеспечения: это немного головокружение, чтобы припаять две контакты, так что хорошо, что есть возможность избежать этого.
@VICTOR: Кажется, что все доступные модули VS10x3 от "LC Soft". У меня есть много разных «мягких» досок LC, некоторые из них уродливые припаянные, но все они работают. Это разумная идея для Google сначала разыскиваемый «LC Soft XYZ модуль» перед покупкой, некоторые из них имеют аппаратные недостатки (например, VS1053, потому что дистрибьютор только что припаял VS1053 на той же макете доски, что и для VS1003)

victor_pv
Сб 30 мая 2015 г. 22:20
Как я могу распознать лучшую доску, если есть?

Ахулл
Сб 30 мая 2015 г., 22:51
Интересно, как легко было бы построить достоинство (я.эн. используется для использования хобби) измеритель уровня звука с одной из этих досок. Похоже, у них большая часть того, что требуется. Калибровка, конечно, может быть ключом к загадке.

Ахулл
Сб 30 мая 2015 г., 22:54
victor_pv написал:Как я могу распознать лучшую доску, если есть?

Rogerclark
Пт, 05 июня 2015 г. 10:16 утра
Может ли кто -нибудь еще подтвердить, работает ли режим на их VS1053 ?

У меня есть 2 доски VS1053, одна из которых я припаивал к контактам и ту, где у меня не было.

На данный момент, только доска, где я паяла, работает вместе, работает, но может быть то, что одна доска неисправна.

Я знаю, что Василлис проверил это на его доске, но я не уверен, что это VS1003 или VS1053

Вассилис
Пт, 05 июня 2015 г., 13:39
Я проверил патч на доске VS1053B, и он работал нормально.

1. Я протестировал свою доску VS1053B с библиотекой без патча, но с двумя булавками паяными. Правление была сработала (я слышал звук).
2. Я отказался от двух булавок, и я снова попробовал библиотеку без прохождения. Нет звука :(
3. Я исправил библиотеку и снова проверил доску. Я слышал звук : D

Rogerclark
Пт, 05 июня 2015 г., 21:22
Спасибо Василлис

Я думаю, что мне нужно будет припаять булавки на моей 2 -й доске, просто чтобы доказать, что это не неисправно.

Rogerclark
Пт, 05 июня 2015 г., 22:55
Привет, Василлис,

Я дважды проверил, палясь на мою 2 -ю доску.

Когда я припаяю булавки вместе, это работает.

Когда я удаляю припой, он не работает.

Вы уверены, что выдвинули все свои изменения обратно в GitHub ? в вилке моего репо.

Код модульного перевода, который у меня есть void VS1003::modeSwitch(void) { //GPIO_DDR write_register(SCI_WRAMADDR, 0xc017); write_register(SCI_WRAM, 0x0003); //GPIO_ODATA write_register(SCI_WRAMADDR, 0xc019); write_register(SCI_WRAM, 0x0000); delay(100); write_register(SCI_MODE, (1<

Rogerclark
SAT 06 июня 2015 1:33
Василлис

Хотя библиотека воспроизводит пример файла, я не думаю, что какой -либо код, который читает и пишет регистры, работает.

Я не могу установить громкость,

А также, если я понеслю возврат; в функцию begin () сразу после DigitalWrite (reset_pin, High); это не имеет никакого значения.


эн.глин.
// release from reset digitalWrite(reset_pin,HIGH); return;

Rogerclark
SAT 6 июня 2015 г. 9:06 утра
Я обновил эту библиотеку, чтобы она соответствовала новой структуре библиотеки и имеет файл ключевых слов.

Я также изменил конструктор, чтобы вы могли передать экземпляр другого канала SPI, кроме по умолчанию, который является SPI.

эн.глин.

Используйте нормальный SPI
VS1003 player(PC14, PB10, PA8, PA9); // cs_pin, dcs_pin, dreq_pin, reset_pin, SPI channel - defaults to SPI

Rogerclark
Солнце 07 июня 2015 12:12
Я написал какой -то код, который играет в VS1003 / VS1053 из SD

Однако есть большая оговорка.

У меня было много проблем с SD

Случайно файл.Читать (бафф, длина), кажется, терпит неудачу и возвращает -1, и если вы попытаетесь сразу же попробовать еще раз, он продолжает сбой
Единственная хака.

Этот взлом в основном работает, но иногда он все еще иногда висит ;-(

Но, по крайней мере, это доказывает, что вы можете отправить обычный mp3 -файл в VS1003, и он играет в нем хорошо.

Я постараюсь получить одну из более новых надежных версий SD E.глин. SDFAT для работы, но на данный момент я попробовал только версию SDFAT Виктора, и это вообще не работает для меня :-(

#include #include #include VS1003 player(PC14, PB10, PA8, PA9, SPIClass(2)); // cs_pin, dcs_pin, dreq_pin, reset_pin /* * VS1003 development board connected by it's header pins the following way: * * GND - GND - * XDCS - D6 - PB10 * DREQ - D7 - PA8 * XRES - D8 - PA9 * XCS - D9 - PC14 * SCLK - D13 - PA5 * SI - D11 - PA7 * SO - D12 - PA6 * GND - GND - * 5V - 5V - */ void setup () { Serial.begin(115200); // while (!Serial.available());/// Wait for key entry.. For debugging // see if the card is present and can be initialized: while (!SD.begin(PA4)) { Serial.println("Card failed, or not present");// don't do anything more: delay(100); } Serial.println("card initialized."); player.begin(); player.modeSwitch(); //Change mode from MIDI to MP3 decoding (Vassilis Serasidis). player.setVolume(64); } int currentFileNum = 0; // Hack because SD only allows one file handle open at a time :-( void loop() { playFile("music.mp3");// Lets just play the music ;-) delay(1000); return; } #define BUFF_LEN 128 void playFile(char *fileName) { uint8_t buff[BUFF_LEN]; File dataFile; int bytesRead; int fileSize; int totalBytesRead = 0; dataFile = SD.open(fileName); if (!dataFile) { Serial.println("Error opening file"); return; } Serial.print("Playing "); Serial.println(fileName); fileSize = dataFile.size(); // need to know the size of the file // loop until end of file while (totalBytesRead != fileSize) { do { bytesRead = dataFile.read(buff, BUFF_LEN);// try to read a buffers worth if (bytesRead == -1) // Oops. SD didnt manage to read anything .... { delay(10);// Workaround for problem in SD lib. } } while (bytesRead == -1);// loop around if last read failed player.playChunk(buff, bytesRead); totalBytesRead += bytesRead;// keep track of how much of the file we've played } dataFile.close(); }

tj_style
Ср. 01 июля 2015 13:30
Я играл с этой библиотекой, попробуйте сыграть в файл FLAC с 44.Скорость выборки 1 кГц на глубине 16 бит.
Патч загружен нормально, также можно воспроизвести файл FLAC.
Но звук изменен, более изменчиво, чем использование того же модуля VS1053, используя Arduino Uno (маленький рыхлый).

Я думаю, что проблема с изменчивым звуком заключается в том, что проблема с передачей SPI из библиотеки SD -карт я использую тот же набросок, который Rogert опубликовал в этой теме.
Так что он использует библиотеку SD по умолчанию.
Другое предложение неспокойное звучание на функции PINC DREQ.
Я отправил запрос на развлечение Roger Repo,
Благодаря неуместным "#define useflac" в vs1003_stm.H Flac Patch будет загружен во время начала.

Rogerclark
Ср. 1 июля 2015 г., 21:18
@tj_style

Спасибо.
Я посмотрю на просьбу о том, чтобы сегодня утром.

Re: прерывистый звук

Изначально у меня были проблемы с воспроизведением MP3 -файлами, которые я отслеживал проблему с PIN -код CS, не работает на PA4.

Однако мой MP3 -плеер, кажется, ошибается после Олайга на несколько часов, и я подозреваю, что проблема в SD -карте.

Модуль Micro SD -карты, который я использую, кажется, имеет чип переводчика уровня, но, похоже, он работает нормально. Но я согласен, было бы лучше получить Micro SD -адаптер, у которого нет переводчика уровня.

Вассилис
Чт, 2 июля 2015 г., 22:55
@tj_style
Я попробовал патч Flac, но нет модуля Sound Out VS1053 :(

Не могли бы вы показать мне код эскиза и звуковой файл FLAC, который вы использовали для тестирования плагина FLAC ?

Rogerclark
Чт, 2 июля 2015 г., 23:12
Вассилис

Спасибо.

Это было что -то в моем списке, я тоже, я.E имеет пример использования FLAC

tj_style
Солнце 5 июля 2015 г. 5:44
Вассилис написал:@tj_style
Я попробовал патч Flac, но нет модуля Sound Out VS1053 :(

Не могли бы вы показать мне код эскиза и звуковой файл FLAC, который вы использовали для тестирования плагина FLAC ?

Вассилис
Sun 5 июля 2015 г., 21:30
Я знал эту проблему имени файла, и я уже переименовал расширение файла FLAC. Все еще нет звука :-(

tj_style
Солнце 5 июля 2015 г. 22:15
Вассилис написал:Я знал эту проблему имени файла, и я уже переименовал расширение файла FLAC. Все еще нет звука :-(

Rogerclark
Солнце 5 июля 2015 г. 22:46
Есть ли способ иметь действительно маленький файл FLAC в качестве двоичного массива, который собирается в код, я.E так же, как и Vassilis ?

Таким образом, люди могут запустить пример без необходимости SD и т. Д.

Вы можете сделать массив, используя такой инструмент, как шестигранник

https: // github.com/tristan2468/hexy

tj_style
Солнце 5 июля 2015 г. 11:42
Rogerclark написал:Есть ли способ иметь действительно маленький файл FLAC в качестве двоичного массива, который собирается в код, я.E так же, как и Vassilis ?

Таким образом, люди могут запустить пример без необходимости SD и т. Д.

Вы можете сделать массив, используя такой инструмент, как шестигранник

https: // github.com/tristan2468/hexy

Rogerclark
Солнце 5 июля 2015 г. 11:53
Вот 1 -секунда чирп в качестве FLAC, спасенного как массив
Это всего лишь 16 тыс

Вассилис
Сб 29 августа 2015 г., 19:42
VS1003 (VS1053B) MIDI пример скоро появится !

РЕДАКТИРОВАТЬ: VS1053B MIDI Player Example

Вассилис
Вторник 08 сентября 2015 г. 11:58 утра
Я обновил свой репо STM32Duino на своем компьютере, и я увидел, что в библиотеке SPI было много различий.
Это вызывает проблему для библиотеки VS1003. Примеры не работают, как они.

Например, если я заменяю часть из hello_stm.Ино Пример кода, затем пример работает.

Более конкретно, у нас есть код ...
//* Пример того, как использовать VS1003, прикрепленный к SPI 2
VS1003 Player (PC14, PB10, PA8, PA9, Spiclass (2)); // cs_pin, dcs_pin, dreq_pin, reset_pin, используйте SPI 2
...
Это не работает на Maple Mini (настройка IDE как "Generic STM32F103 C Series").

Если я заменю его на код ниже ...
Spiclass spi2 (2); // Создать экземпляр SPI в порту SPI2.
//* Пример того, как использовать VS1003, прикрепленный к SPI 2
VS1003 Player (PC14, PB10, PA8, PA9, SPI2); // cs_pin, dcs_pin, dreq_pin, reset_pin, используйте SPI 2
...
оно работает!

Какие изменения вы предлагаете мне внести в библиотеку VS1003 для правильной работы ?

РЕДАКТИРОВАТЬ:
Сериал.начинать (9600) не работает на серийном порту 1
Я должен написать serial1.начало (9600);

Кажется слишком сложным мигрировать в новейшее репо... :?

Мадиас
Вторник 08 сентября 2015 12:25
Какую доску вы используете и какую доску вы выбрали?
В файле: доска.CPP в каждом STM32F1/VARIANTS/POARD XY/
У вас есть внизу следующие записи, которые вы можете изменить для выбора заказа последовательного порта:
#ifdef SERIAL_USB DEFINE_HWSERIAL(Serial1, 1); DEFINE_HWSERIAL(Serial2, 2); DEFINE_HWSERIAL(Serial3, 3); DEFINE_HWSERIAL_UART(Serial4, 4); DEFINE_HWSERIAL_UART(Serial5, 5); #else DEFINE_HWSERIAL(Serial, 1); DEFINE_HWSERIAL(Serial1, 2); DEFINE_HWSERIAL(Serial2, 3); DEFINE_HWSERIAL_UART(Serial3, 4); DEFINE_HWSERIAL_UART(Serial4, 5); #endif

Вассилис
Вторник 08 сентября 2015 12:41
Я использую Maple Mini Доска настроила это как "Generic STM32F103 C Series".

а Arduino_stm32 \ stm32f1 \ variants \ generic_stm32f103c \ poard.CPP Файл есть
/****************************************************************************** * The MIT License * * Copyright (c) 2011 LeafLabs, LLC. * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, copy, * modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. *****************************************************************************/ /** * &file wirish/boards/maple_mini/board.cpp * &author Marti Bolivar * &brief Maple Mini board file. */ #include #include #include /* Roger Clark. Added next to includes for changes to Serial */ #include #include #include #include /* Since we want the Serial Wire/JTAG pins as GPIOs, disable both SW * and JTAG debug support, unless configured otherwise. */ void boardInit(void) { #ifndef CONFIG_MAPLE_MINI_NO_DISABLE_DEBUG disableDebugPorts(); #endif } // Note. See the enum of pin names in board.h extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS] = { {&gpioa, &timer2, &adc1, 0, 1, 0}, /* PA0 */ {&gpioa, &timer2, &adc1, 1, 2, 1}, /* PA1 */ {&gpioa, &timer2, &adc1, 2, 3, 2}, /* PA2 */ {&gpioa, &timer2, &adc1, 3, 4, 3}, /* PA3 */ {&gpioa, NULL, &adc1, 4, 0, 4}, /* PA4 */ {&gpioa, NULL, &adc1, 5, 0, 5}, /* PA5 */ {&gpioa, &timer3, &adc1, 6, 1, 6}, /* PA6 */ {&gpioa, &timer3, &adc1, 7, 2, 7}, /* PA7 */ {&gpioa, &timer1, NULL, 8, 1, ADCx}, /* PA8 */ {&gpioa, &timer1, NULL, 9, 2, ADCx}, /* PA9 */ {&gpioa, &timer1, NULL, 10, 3, ADCx}, /* PA10 */ {&gpioa, &timer1, NULL, 11, 4, ADCx}, /* PA11 */ {&gpioa, NULL, NULL, 12, 0, ADCx}, /* PA12 */ {&gpioa, NULL, NULL, 13, 0, ADCx}, /* PA13 */ {&gpioa, NULL, NULL, 14, 0, ADCx}, /* PA14 */ {&gpioa, NULL, NULL, 15, 0, ADCx}, /* PA15 */ {&gpiob, &timer3, &adc1, 0, 3, 8}, /* PB0 */ {&gpiob, &timer3, &adc1, 1, 4, 9}, /* PB1 */ {&gpiob, NULL, NULL, 2, 0, ADCx}, /* PB2 */ {&gpiob, NULL, NULL, 3, 0, ADCx}, /* PB3 */ {&gpiob, NULL, NULL, 4, 0, ADCx}, /* PB4 */ {&gpiob, NULL, NULL, 5, 0, ADCx}, /* PB5 */ {&gpiob, &timer4, NULL, 6, 1, ADCx}, /* PB6 */ {&gpiob, &timer4, NULL, 7, 2, ADCx}, /* PB7 */ {&gpiob, &timer4, NULL, 8, 3, ADCx}, /* PB8 */ {&gpiob, &timer4, NULL, 9, 4, ADCx}, /* PB9 */ {&gpiob, NULL, NULL, 10, 0, ADCx}, /* PB10 */ {&gpiob, NULL, NULL, 11, 0, ADCx}, /* PB11 */ {&gpiob, NULL, NULL, 12, 0, ADCx}, /* PB12 */ {&gpiob, NULL, NULL, 13, 0, ADCx}, /* PB13 */ {&gpiob, NULL, NULL, 14, 0, ADCx}, /* PB14 */ {&gpiob, NULL, NULL, 15, 0, ADCx}, /* PB15 */ {&gpioc, NULL, NULL, 13, 0, ADCx}, /* PC13 */ {&gpioc, NULL, NULL, 14, 0, ADCx}, /* PC14 */ {&gpioc, NULL, NULL, 15, 0, ADCx}, /* PC15 */ }; extern const uint8 boardPWMPins[BOARD_NR_PWM_PINS] __FLASH__ = { PB0, PA7, PA6, PA3, PA2, PA1, PA0, PB7, PB6, PA10, PA9, PA8 }; extern const uint8 boardADCPins[BOARD_NR_ADC_PINS] __FLASH__ = { PB0, PA7, PA6 , PA5 , PA4 , PA3 , PA2 , PA1 , PA0 }; // Note. These defines are not really used by generic boards. They are for Maple Serial USB #define USB_DP PA12 #define USB_DM PA11 // NOte. These definitions are not really used for generic boards, they only relate to boards modified to behave like Maple boards extern const uint8 boardUsedPins[BOARD_NR_USED_PINS] __FLASH__ = { USB_DP, USB_DM }; /* * Roger Clark * * 2015/05/28 * * Moved definitions for Hardware Serial devices from HardwareSerial.cpp so that each board can define which Arduino "Serial" instance * Maps to which hardware serial port on the microprocessor */ #ifdef SERIAL_USB DEFINE_HWSERIAL(Serial1, 1); DEFINE_HWSERIAL(Serial2, 2); DEFINE_HWSERIAL(Serial3, 3); #else DEFINE_HWSERIAL(Serial, 1); DEFINE_HWSERIAL(Serial1, 2); DEFINE_HWSERIAL(Serial2, 3); #endif

Мадиас
Вторник 08 сентября 2015 12:47
Я думаю, что в серии Generic STM32F103 C нет определенного serial_usb, так что это может быть проблемой.
Есть ли причина, по которой вы выбираете эту доску для Maple Mini?
В вариантах STM32F1 / VARIANTS / GENARIC_STM32F103C / Плата.H Файл. (Может быть, булавки одинаковы: в Maple Mini они определены как 26,25 в общем файле как PA9 и PA10 --- Странная вещь)
РЕДАКТИРОВАТЬ: Я не могу найти, определена ли serial_usb, но вы можете попробовать это: #ifdef SERIAL_USB DEFINE_HWSERIAL(Serial1, 2); DEFINE_HWSERIAL(Serial2, 1); DEFINE_HWSERIAL(Serial3, 3); #else DEFINE_HWSERIAL(Serial, 2); DEFINE_HWSERIAL(Serial1, 1); DEFINE_HWSERIAL(Serial2, 3); #endif

Вассилис
Вторник 08 сентября 2015 13:01
Мадиас написал:Есть ли причина, по которой вы выбираете эту доску для Maple Mini?

Мадиас
Вторник 08 сентября 2015 13:07
К поста я не могу найти определение для serial_usb, так что вы можете изменить это: ifdef SERIAL_USB DEFINE_HWSERIAL(Serial, 1); DEFINE_HWSERIAL(Serial1, 2); DEFINE_HWSERIAL(Serial2, 3); #else DEFINE_HWSERIAL(Serial, 1); DEFINE_HWSERIAL(Serial1, 2); DEFINE_HWSERIAL(Serial2, 3); #endif

Вассилис
Вторник 08 сентября 2015 13:10
Мадиас написал:К поста я не могу найти определение для serial_usb, так что вы можете изменить это: ifdef SERIAL_USB DEFINE_HWSERIAL(Serial, 1); DEFINE_HWSERIAL(Serial1, 2); DEFINE_HWSERIAL(Serial2, 3); #else DEFINE_HWSERIAL(Serial, 1); DEFINE_HWSERIAL(Serial1, 2); DEFINE_HWSERIAL(Serial2, 3); #endif

victor_pv
Вторник 08 сентября 2015 г. 13:18
Я считаю, что «серийный» - это сериалсб для каждой доски сейчас.
Первый UART должен быть Serial1 и так далее.
Что касается serialusb, если вы используете Maple Mini, но не компилируете его, выбирая Maple Mini в меню IDE, то USB -перечисление, вероятно, теперь будет работать, так как Maple Mini имеет специальную схему для управления резистором 1K5.

Насколько я знаю, для Maple Mini сериал всегда был Serialusb, а Serial1 всегда был первым UART, но для других плат, возможно, не были такими, поэтому изменения, помимо добавления поддержки для Serialusb к общему Доски, сделали именование согласованным для всех из них, поэтому сериал всегда сериал.

Об изменениях в SPI, Роджер сделал много изменений для поддержки SetModule. Это могло повлиять на то, что вы описываете. Возможно, до того, как объект SPI2 был создан в ядре, а не сейчас. Не уверен, но выглядит так.
Я думаю, что ваше решение является правильным, создайте новый объект для SPI2, Call IS SPI2 или SPIVS или что -то для вас удобно, и используйте его таким образом.

Вассилис
Вторник 08 сентября 2015 13:22
Я нашел это!

Роджер, кажется, назначил имя Сериал в порту USB_SERIAL.
Аппаратные серийные порты получают имена Serial1, Serial2 и Serial3.
Я сгорел загрузчик Maple Mini, я подключил USB -кабель к Maple Mini, а после сброса я увидел сериал USB в своих устройствах Windows.
Затем я снова забежал сериал.начинать(...) и я увидел данные на последовательном терминале, который я связан с USB_SERIAL PORT.

РЕДАКТИРОВАТЬ
Виктор, ты очень быстрый! : D

Мадиас
Вторник 08 сентября 2015 14:10
ОК, извините :) Я думаю, что нашел настоящую проблему:
Он контролируется через флаг -дсериал_усб, и это находится в arduino_stm32 / stm32f1 / щиты.TXT -файл:
Смотрите различия: первый блок каждой платы определяет:
Maple Mini mapleMini.build.board=MAPLE_MINI mapleMini.build.core=maple mapleMini.build.cpu_flags=-DMCU_STM32F103CB -DSERIAL_USB mapleMini.build.variant=maple_mini mapleMini.upload.usbID=1EAF:0003

Вассилис
Вторник 08 сентября 2015 г., 19:43
Мадиас написал:ОК, извините :) Я думаю, что нашел настоящую проблему:
Он контролируется через флаг -дсериал_усб, и это находится в arduino_stm32 / stm32f1 / щиты.TXT -файл:
Смотрите различия: первый блок каждой платы определяет:
Maple Mini mapleMini.build.board=MAPLE_MINI mapleMini.build.core=maple mapleMini.build.cpu_flags=-DMCU_STM32F103CB -DSERIAL_USB mapleMini.build.variant=maple_mini mapleMini.upload.usbID=1EAF:0003

Мадиас
Вторник 08 сентября 2015 г., 19:55
...Если вы не на Mavericks, и MacBook Pro 2009, установка загрузчика на каждую плату - хорошая идея :)
(У меня реальные проблемы с серийной загрузкой на Mac, но это специфично для моего MacBook. Загрузки в порядке для 3-10x, и тогда я всегда должен нажимать кнопку сброса на плате снова и снова... Единственное, что помогает: перезагрузка Mac, очень раздражающая вещь, но у меня слишком много конкретных установленных программ, чтобы снова переустановить OSX)

Rogerclark
Вторник 08 сентября 2015 г. 20:52
Я изменил сериал на сериал, по крайней мере, 6 месяцев назад.

Это именование соответствует Arduino Leonardo и т. Д., Которые имеют USB -серийный, а также аппаратный сериал.

Re: Stlink

Мы можем добавить это в качестве опции для Maple Mini, но вы можете просто выбрать Generic STM32F103C, затем выберите F103CB 128K и STLINK загрузку.


КСТАТИ. Если ваша библиотека все еще сломана, проблема также может быть изменением карты PIN

Вассилис
Вторник 08 сентября 2015 г., 21:03
Rogerclark написал:Я изменил сериал на сериал, по крайней мере, 6 месяцев назад.

Это именование соответствует Arduino Leonardo и т. Д., Которые имеют USB -серийный, а также аппаратный сериал.

Re: Stlink

Мы можем добавить это в качестве опции для Maple Mini, но вы можете просто выбрать Generic STM32F103C, затем выберите F103CB 128K и STLINK загрузку.


КСТАТИ. Если ваша библиотека все еще сломана, проблема также может быть изменением карты PIN

Rogerclark
Вторник 08 сентября 2015 г., 21:07
Все, что работает для вас, в порядке.
Пришлите мне пиар ;-)

victor_pv
Вторник 08 сентября 2015 11:58
Вассилис написал:
Если имя «последовательного» назначено в порт USB, это было бы небольшой проблемой, если мы не хотим устанавливать загрузчик в платы STM32.Без загрузчика у нас нет «серийного» порта. Только serial1, serial2 и serial3.

В любом случае. Я планирую использовать «STM32Duino Bootloader» в качестве по умолчанию во всех моих платах STM32, потому что флэш -память достаточно большая 64 КБ +, чтобы потратить несколько Kbytes в загрузчике ;)
Кроме того, загрузчик дает нам дополнительный последовательный порт !

Итак, стоит его использовать!

Rogerclark
Ср. 09 сентября 2015 12:05 утра
В качестве дополнительной записки.

Serialusb включен для STM32duino-Bootloader и STLINK, но не для серийных загрузок

(Я не могу вспомнить, что такое настройка для BMP)

Я не включил серийный USB для серийных загрузок, так как я предполагаю, что если вы загружаете через сериал, вы хотите использовать сериал для отладки, но, возможно, это не верный аргумент.

Вассилис
Ср. 09 сентября 2015 г. 9:22 утра
Я использовал простой серийный эскиз на этих досках (без загрузки) сгорел с помощью ST-Link.

- Maple Mini
- синяя таблетка
- STM32F103 Vet6
- и уродливая доска

Я ранее стерла STM32, чтобы быть пустым. USB -сериал работал только на доске Vet6. На других досках я не видел никакого дополнительного последовательного порта в своей системе Windows->Устройства, когда я подключил USB -разъем к своему ПК.

После этого я протестировал загрузки. Посылки по ботинкам успешно работают на всех вышеупомянутых досках.
Только уродливая доска не перезагружается из-за известного USB-резистора. У меня есть каждый раз, чтобы сбросить чип вручную. Нет проблем с этим !

Я решил сжечь загрузчик на каждой плате, которую я использую из-за его простоты. Нет необходимости в дополнительных USB-кабелях/программистах/USB-в серии преобразователей :)

Rogerclark
Ср. 09 сентября 2015 г. 9:38 утра
Вассилис

У уродливой платы иногда есть и другие проблемы, когда она не начинается с холодной загрузки, чтобы запустить эскиз (непосредственно на 0x800000), либо запустить загрузчик.

Уродливая доска, которую я имею, делает это, и кто -то еще сообщил об этой ошибке.
Иногда уродливая плата запускает эскиз, но только если вы загружаете через USB Serial, где STM32Flash отправляет команду Run 0x800000 после завершения загрузки

Я думаю, что эта проблема является аппаратной проблемой на уродливой плате, что, возможно, что внешний генератор не запускается правильно с холодной загрузки

Я намерен исследовать, Когда у меня есть время, и, возможно, найдите для этого исправление программного обеспечения.

Стевех
Чт 10 сентября 2015 г., 3:47
Rogerclark написал:Вассилис

У уродливой платы иногда есть и другие проблемы, когда она не начинается с холодной загрузки, чтобы запустить эскиз (непосредственно на 0x800000), либо запустить загрузчик.

Уродливая доска, которую я имею, делает это, и кто -то еще сообщил об этой ошибке.
Иногда уродливая плата запускает эскиз, но только если вы загружаете через USB Serial, где STM32Flash отправляет команду Run 0x800000 после завершения загрузки

Я думаю, что эта проблема является аппаратной проблемой на уродливой плате, что, возможно, что внешний генератор не запускается правильно с холодной загрузки

Я намерен исследовать, Когда у меня есть время, и, возможно, найдите для этого исправление программного обеспечения.

Rogerclark
Чт 10 сентября 2015 г. 7:23 утра
Главный кристалл - 8 МГц PLL
Мультипликатор часов - 9
USB -часы 1.5
Я не проверял значения прокалера GPIO Clock, но это значения в коде, которые, кажется, указывают на то, что APBH1 находится на 2 / Prescaler, а APBH2 не предварительно.E (/1)

Я не уверен в других, но есть только одна доска, у которой есть проблемы, поэтому я подозреваю, что это эта доска, которая имеет неисправный дизайн осциллятора