Радждардж
Вт 05 апреля 2016 г. 14:01
Я пытаюсь установить 2-й связи между STM32F103 и ESP8266 12-F
Итак, я подключил программный сериал на ESP (PINS 4 и 5) с TX2 и RX2 (PA2 и PA3). Я предполагаю, что это оборудование Uart.
Когда я отправляю различные сообщения с персонажем заголовка, а не настраиваю машину для состояния, я накапливаю все символы, пока не CR как «фраза» текста, а затем разбиться на смелые кусочки.:
Это код, который я использую:
Итак, я подключил программный сериал на ESP (PINS 4 и 5) с TX2 и RX2 (PA2 и PA3). Я предполагаю, что это оборудование Uart.
Когда я отправляю различные сообщения с персонажем заголовка, а не настраиваю машину для состояния, я накапливаю все символы, пока не CR как «фраза» текста, а затем разбиться на смелые кусочки.:
Это код, который я использую:
bool serial1Event(void) //NEEDS TO RESPOND TO SERIAL1
{
char d = (char) Serial1.read();//convert d into char
//Serial.print(d);
if(d == '\n')
return false;
if(d == '\r' ) // look for the carriage return
return true; //set complete flag to true.
else
strncat(ser_in_chrs,&d,1); //concantenate it, d isn't null terminated. so only 1 char.
return false;
}
Mrburnette
Вторник 05 апреля 2016 г., 15:10
Я не знаю, является ли это проблемой в ESP или STM32, но я подозреваю, что STM.
Радж @Raj
И это проблема...
Вы не знаете. Я бы предложил изолировать проблему, а затем попытаться исправить. Вы можете использовать USB -серийный адаптер и ваш ПК с терминальной программой для изоляции. Начните с ESP8266 и отправьте команды вручную, используя эмулятор терминала. Вы получаете то, что ожидаете? Такое же действие с STM32.
Это не необычная ситуация, когда вы работаете с анализатором и серийными коммуникациями. Я создал устройство просто для этой цели здесь.
Расположение звучит просто, пока человек не попадет в реальность необходимости иметь дело с потоком персонажей... Даже блокирование /CR /LF может быть проблематичной. Я добился успеха с несколькими проектами, выполняющими свой собственный анализ:
http: // www.хакерс.io/rayburne/tardis- ... сервер-GPS
http: // www.хакерс.io/rayburne/gps-clo ... T-FOR-PSOC
http: // www.хакерс.IO/Rayburne/Scientific-Calculator
https: // github.com/rogerclarkmelbourne/ ... Арсинг.Ино
Обратите внимание, что примеры не предназначены для того, чтобы быть очень эффективными ... Они больше для проектов, направленных на общую аудиторию Arduino... Не питания пользователей!
По сути, ваш приемный код просто должен отказаться и перерабатывать, когда он получает мусор.
Простой пример на нано:
Радж @Raj
И это проблема...
Вы не знаете. Я бы предложил изолировать проблему, а затем попытаться исправить. Вы можете использовать USB -серийный адаптер и ваш ПК с терминальной программой для изоляции. Начните с ESP8266 и отправьте команды вручную, используя эмулятор терминала. Вы получаете то, что ожидаете? Такое же действие с STM32.
Это не необычная ситуация, когда вы работаете с анализатором и серийными коммуникациями. Я создал устройство просто для этой цели здесь.
Расположение звучит просто, пока человек не попадет в реальность необходимости иметь дело с потоком персонажей... Даже блокирование /CR /LF может быть проблематичной. Я добился успеха с несколькими проектами, выполняющими свой собственный анализ:
http: // www.хакерс.io/rayburne/tardis- ... сервер-GPS
http: // www.хакерс.io/rayburne/gps-clo ... T-FOR-PSOC
http: // www.хакерс.IO/Rayburne/Scientific-Calculator
https: // github.com/rogerclarkmelbourne/ ... Арсинг.Ино
Обратите внимание, что примеры не предназначены для того, чтобы быть очень эффективными ... Они больше для проектов, направленных на общую аудиторию Arduino... Не питания пользователей!
По сути, ваш приемный код просто должен отказаться и перерабатывать, когда он получает мусор.
Простой пример на нано:
Serial.readBytes( Inst, 4);
Operation = Inst; Operation.trim();
for ( j= 0; j
Радждардж
Вт 05 апреля 2016 г., 11:18
Спасибо за самые полезные предложения:
Чтобы ответить на некоторые из ваших вопросов: да, он работает нормально, когда я допрашиваю ESP с моим компьютерным последовательным портом.
Я все еще тестирую наоборот.
Мне придется исследовать биты начала стоп-версии для серийной стороны и, возможно, даже посмотреть, есть ли способ получить сигналы DTR и RTS, чтобы повысить точность.
Теперь, когда я думаю об этом, контрольная сумма обязательно должна.
Прошло много времени с тех пор, как я сделал такие вещи, поэтому я забыл об этом. Спасибо, что напомнили мне.
Мне просто было интересно, достиг ли я предел возможности чипа и, если порт serial1, как чип, делает много других вещей и использует библиотеки, которые, вероятно, приводили в действие прерывание. Я также пытался выяснить, почему это были первые несколько байтов, и остальная часть серийной информации казалась в порядке.
Я работаю в 9600baud, но я намерен идти намного быстрее, так как есть много информации для передачи.
С CRC или проверкой, я могу...
По крайней мере, я знаю, с чего начать. Спасибо: 8)
Чтобы ответить на некоторые из ваших вопросов: да, он работает нормально, когда я допрашиваю ESP с моим компьютерным последовательным портом.
Я все еще тестирую наоборот.
Мне придется исследовать биты начала стоп-версии для серийной стороны и, возможно, даже посмотреть, есть ли способ получить сигналы DTR и RTS, чтобы повысить точность.
Теперь, когда я думаю об этом, контрольная сумма обязательно должна.
Прошло много времени с тех пор, как я сделал такие вещи, поэтому я забыл об этом. Спасибо, что напомнили мне.
Мне просто было интересно, достиг ли я предел возможности чипа и, если порт serial1, как чип, делает много других вещей и использует библиотеки, которые, вероятно, приводили в действие прерывание. Я также пытался выяснить, почему это были первые несколько байтов, и остальная часть серийной информации казалась в порядке.
Я работаю в 9600baud, но я намерен идти намного быстрее, так как есть много информации для передачи.
С CRC или проверкой, я могу...
По крайней мере, я знаю, с чего начать. Спасибо: 8)
Mrburnette
Вт 05 апреля 2016 г., 11:35 вечера
Радждардж написал:
<...>
Мне просто было интересно, достиг ли я предел возможности чипа и, если порт serial1, как чип, делает много других вещей и использует библиотеки, которые, вероятно, приводили в действие прерывание. Я также пытался выяснить, почему это были первые несколько байтов, и остальная часть серийной информации казалась в порядке.
Я работаю в 9600baud, но я намерен идти намного быстрее, так как есть много информации для передачи.
С CRC или проверкой, я могу...
По крайней мере, я знаю, с чего начать. Спасибо: 8)
Мне просто было интересно, достиг ли я предел возможности чипа и, если порт serial1, как чип, делает много других вещей и использует библиотеки, которые, вероятно, приводили в действие прерывание. Я также пытался выяснить, почему это были первые несколько байтов, и остальная часть серийной информации казалась в порядке.
Я работаю в 9600baud, но я намерен идти намного быстрее, так как есть много информации для передачи.
С CRC или проверкой, я могу...
По крайней мере, я знаю, с чего начать. Спасибо: 8)
Радждардж
Ср. 06, 2016, 2:13
Я создам свою собственную версию этого устройства, так как вы так любезно предоставлены коду.
Я думал, что в дополнение к отправке фиксированных данных с фиксированными скоростями передачи и возможностью увеличивать/уменьшать бод, чтобы добавить Add Checksum, Inc/уменьшение стартовой остановки и включите CRC 8, 16 32 (есть хорошая библиотека CRC By Пол Стоффеген, но я не знаю, это будет работать на ESP или STM) была бы хорошей идеей? У меня есть 3.3V Pro Minis, с которыми я мог бы попробовать и пару TFT, чтобы экспериментировать с.
Если это сработает, протокол автоматического поезда был бы неплохо, но далеко за пределами того, что я могу сделать с точки зрения программирования. До этого момента мне просто придется взломать это.
Я полагаю, мне также нужно прочитать общения в шумных условиях.
Что касается смущения, я полагаю, я уже пережил это, когда я отправил в Arduino.CC, где они поощряют вас опубликовать весь свой код, поэтому я сделал и выделил его на части модератором там. Тогда я действительно не понимал указателей - я понял концепцию, это просто синтаксис, который бросал меня (все еще бросает меня). Поэтому, когда я опубликовал свой код, просто «чтобы заставить вещи к чертовски. Я взял это на подбородку - и думал, что я достаточно мужчина, чтобы взять его. Но только сейчас я понял, что прошло 3 месяца, прежде чем я сделал больше программирования.
Еще раз спасибо, что дали мне руководящую руку. Разыгрывать проблему - единственный способ выучить.
Я думал, что в дополнение к отправке фиксированных данных с фиксированными скоростями передачи и возможностью увеличивать/уменьшать бод, чтобы добавить Add Checksum, Inc/уменьшение стартовой остановки и включите CRC 8, 16 32 (есть хорошая библиотека CRC By Пол Стоффеген, но я не знаю, это будет работать на ESP или STM) была бы хорошей идеей? У меня есть 3.3V Pro Minis, с которыми я мог бы попробовать и пару TFT, чтобы экспериментировать с.
Если это сработает, протокол автоматического поезда был бы неплохо, но далеко за пределами того, что я могу сделать с точки зрения программирования. До этого момента мне просто придется взломать это.
Я полагаю, мне также нужно прочитать общения в шумных условиях.
Что касается смущения, я полагаю, я уже пережил это, когда я отправил в Arduino.CC, где они поощряют вас опубликовать весь свой код, поэтому я сделал и выделил его на части модератором там. Тогда я действительно не понимал указателей - я понял концепцию, это просто синтаксис, который бросал меня (все еще бросает меня). Поэтому, когда я опубликовал свой код, просто «чтобы заставить вещи к чертовски. Я взял это на подбородку - и думал, что я достаточно мужчина, чтобы взять его. Но только сейчас я понял, что прошло 3 месяца, прежде чем я сделал больше программирования.
Еще раз спасибо, что дали мне руководящую руку. Разыгрывать проблему - единственный способ выучить.
Mrburnette
Ср. 06 апреля 2016 г., 3:20 утра
Радждардж написал:
<...>
Что касается смущения, я полагаю, я уже пережил это, когда я отправил в Arduino.CC, где они поощряют вас опубликовать весь свой код, поэтому я сделал и выделил его на части модератором там. Тогда я действительно не понимал указателей - я понял концепцию, это просто синтаксис, который бросал меня (все еще бросает меня).
Что касается смущения, я полагаю, я уже пережил это, когда я отправил в Arduino.CC, где они поощряют вас опубликовать весь свой код, поэтому я сделал и выделил его на части модератором там. Тогда я действительно не понимал указателей - я понял концепцию, это просто синтаксис, который бросал меня (все еще бросает меня).
Rogerclark
Ср. 06, 2016, 4:32
Вы используете загрузчик?
я.e Если вы используете загрузчик и имеете USB -сериал.
Тогда сериал - USSerial
Serial1 - HW Serial 1 на PA9 и PA10
Serial2 - HW Serial 2 (я не могу вспомнить, на каких контактах это, возможно, PA2 и PA3, но вам нужно проверить)
Пожалуйста, проверьте, какой серийный порт HW вы на самом деле используете, а какие контакты используются этим портом
я.e Если вы используете загрузчик и имеете USB -сериал.
Тогда сериал - USSerial
Serial1 - HW Serial 1 на PA9 и PA10
Serial2 - HW Serial 2 (я не могу вспомнить, на каких контактах это, возможно, PA2 и PA3, но вам нужно проверить)
Пожалуйста, проверьте, какой серийный порт HW вы на самом деле используете, а какие контакты используются этим портом
Радждардж
Ср. 06, 2016, 4:44
Я не использую загрузчик, я использую последовательный PA9 PA10, чтобы запрограммировать STM32 и подключение загрузки к заземлению (с упущенным резистором). Поставка 3.3 V к VIN и использование кнопок для размещения устройства в режим программирования. Я не использую загрузчик, так как никогда не мог заставить драйвер USB работать.
Я использую: Итак, я подключил программный сериал на ESP (PINS 4 и 5) с TX2 и RX2 (PA2 и PA3).
У меня есть 2 CP2102 на моем компьютере для каждого устройства.
Итак, когда я говорю сериал.Печать - я defo с помощью PA9 PA10
и serial1.распечатать, какой из них я тогда использую? Я ожидаю использовать PA2 PA3.
Поскольку я что -то получаю, это доказательство того, что я правильно подключил?
Радж
Я использую: Итак, я подключил программный сериал на ESP (PINS 4 и 5) с TX2 и RX2 (PA2 и PA3).
У меня есть 2 CP2102 на моем компьютере для каждого устройства.
Итак, когда я говорю сериал.Печать - я defo с помощью PA9 PA10
и serial1.распечатать, какой из них я тогда использую? Я ожидаю использовать PA2 PA3.
Поскольку я что -то получаю, это доказательство того, что я правильно подключил?
Радж
Rogerclark
Ср. 06, 2016, 4:50 утра
ХОРОШО
КСТАТИ. Драйвер Windows работает, в том числе на Windows 10..
Но если вы не используете загрузчик
Сериал - HW Serial 1
Serial1 HW Serial 2
(Извините, я не могу вспомнить, какие они выступают, вам нужно проконсультироваться с документами STM или посмотреть в коде основного кода для платы варианта, которую вы используете (STM32F103C)))
Если вы протестировали Serial1.Печать на USB -серийный адаптер, подключенный к вашему ПК, и который работает, как и ожидалось, но ESP8266 не отвечает, тогда проблема, вероятно, будет ESP8266
Вы проверили, доступен ли Software Serial на всех контактах I.E доступен на булавках, которые вы используете
Также я думаю, что вы подключили свой программный сериал от PINS ESP к USB -сериалу и проверили, что работает на вашем ПК.
TX подключен к RX и т. Д
КСТАТИ. Драйвер Windows работает, в том числе на Windows 10..
Но если вы не используете загрузчик
Сериал - HW Serial 1
Serial1 HW Serial 2
(Извините, я не могу вспомнить, какие они выступают, вам нужно проконсультироваться с документами STM или посмотреть в коде основного кода для платы варианта, которую вы используете (STM32F103C)))
Если вы протестировали Serial1.Печать на USB -серийный адаптер, подключенный к вашему ПК, и который работает, как и ожидалось, но ESP8266 не отвечает, тогда проблема, вероятно, будет ESP8266
Вы проверили, доступен ли Software Serial на всех контактах I.E доступен на булавках, которые вы используете
Также я думаю, что вы подключили свой программный сериал от PINS ESP к USB -сериалу и проверили, что работает на вашем ПК.
TX подключен к RX и т. Д
Радждардж
Ср. 06, 2016 6:33
КСТАТИ. Драйвер Windows работает, в том числе на Windows 10..
Я много боролся раньше с программированием с USB и установкой драйвера. Однако я хотел бы сделать еще один ход.
Есть ли как страница, которую я могу снова пройти процедуру, она на тонну удобнее, и это также означает, что я могу обновить прошивку, как только вещь установлена внутри коробки, готовой для использования.
Радж
Есть ли как страница, которую я могу снова пройти процедуру, она на тонну удобнее, и это также означает, что я могу обновить прошивку, как только вещь установлена внутри коробки, готовой для использования.
Радж
Rogerclark
Ср 6 апреля 2016 г. 6:55 утра
ХОРОШО
Есть файл BAT -установщика в /драйверы /победа
Запустите это и принимайте подсказки, поскольку он должен администрировать вещи для установки сертификатов драйверов (что EXE генерирует)
Flash Bootloader (через сериал).
Затем посмотрите в диспетчере устройств.
Вы, вероятно, увидите устройство Maple DFU, так как не будет никакого кода для его запуска, так как загрузчик будет перезаписать ваш существующий код
Если устройство не распознается, посмотрите в папку /драйвер /WIN, и в процессе установки добавлены 2 новые папки (не SRC или Win_xp_legacy) - извините, я не могу вспомнить имя папки, но они могут быть "Maple DFU" и "Maple Serial"
В любом случае, если драйвер для устройства DFU не распознается, зайдите в это устройство и выберите кнопку, чтобы обновить драйвер и выберите, что вы хотите просмотреть файл для драйвера, затем выберите соответствующую папку и попробуйте перезагрузить драйвер
Это обычно работает.
Теперь загрузите пустой набросок, и диспетчер устройств должен отображать серийное устройство Maple. Если это не признано, сделайте то же самое, что и раньше...
Примечание. Устройство загрузчика DFU и последовательное устройство Maple не работают одновременно, последовательный код Maple собирается как часть эскиза, он не является частью загрузчика
Также убедитесь, что вы выбираете правильный тип платы и корректируйте режим загрузки E.глин. загрузчик
Есть файл BAT -установщика в /драйверы /победа
Запустите это и принимайте подсказки, поскольку он должен администрировать вещи для установки сертификатов драйверов (что EXE генерирует)
Flash Bootloader (через сериал).
Затем посмотрите в диспетчере устройств.
Вы, вероятно, увидите устройство Maple DFU, так как не будет никакого кода для его запуска, так как загрузчик будет перезаписать ваш существующий код
Если устройство не распознается, посмотрите в папку /драйвер /WIN, и в процессе установки добавлены 2 новые папки (не SRC или Win_xp_legacy) - извините, я не могу вспомнить имя папки, но они могут быть "Maple DFU" и "Maple Serial"
В любом случае, если драйвер для устройства DFU не распознается, зайдите в это устройство и выберите кнопку, чтобы обновить драйвер и выберите, что вы хотите просмотреть файл для драйвера, затем выберите соответствующую папку и попробуйте перезагрузить драйвер
Это обычно работает.
Теперь загрузите пустой набросок, и диспетчер устройств должен отображать серийное устройство Maple. Если это не признано, сделайте то же самое, что и раньше...
Примечание. Устройство загрузчика DFU и последовательное устройство Maple не работают одновременно, последовательный код Maple собирается как часть эскиза, он не является частью загрузчика
Также убедитесь, что вы выбираете правильный тип платы и корректируйте режим загрузки E.глин. загрузчик
Радждардж
Ср 6 апреля 2016 г., 7:03
Не могли бы вы сделать вышеупомянутый ответ липким на форуме?
Как нуб, я изо всех сил пытался найти информацию, и первое место, которое я смотрел, было в этой доске.
Другая вещь, которую я бы сделал липкой, это этот пост: (по крайней мере, объяснительный пост Freddbox)
ViewTopic.PHP?F = 27&t = 690&P = 8049#P8049
Это было очень полезно, так как водитель не загрузился.
Я думаю, что это сэкономило бы много вопросов в будущем.... только мои 2
Как нуб, я изо всех сил пытался найти информацию, и первое место, которое я смотрел, было в этой доске.
Другая вещь, которую я бы сделал липкой, это этот пост: (по крайней мере, объяснительный пост Freddbox)
ViewTopic.PHP?F = 27&t = 690&P = 8049#P8049
Это было очень полезно, так как водитель не загрузился.
Я думаю, что это сэкономило бы много вопросов в будущем.... только мои 2
Радждардж
Ср. 06, 2016, 9:54 утра
Поэтому я попробовал еще раз, драйвер Maple DFU, которого я вижу под Libusb-Win32services, но во все времена попытки я никогда не получаю серийный порт.
На этот раз я использовал свежую синю.
Это очень позор
На этот раз я использовал свежую синю.
Это очень позор
Rogerclark
Ср. 06, 2016, 10:32 утра
Загрузите эскиз, который использует последовательный, и посмотрите, появляется ли сериал в виде устройства
Радждардж
Ср. 06, 2016, 23:03
ОК, попробую это.
Мой эскиз в настоящее время использует 83% доступной оперативной памяти (128 тыс.), Вероятно, потому, что я использую много шрифтов UCGlib (что я решил переделать). Но это не перезагружается, когда я нажимаю кнопку перезагрузки. Это плохо? Да, я знаю, что это плохо, потому что это означает, что эскиз не загружается при сбросе питания, так что мне придется выяснить, почему. Для данных DataLogger не выживание сброса является проблемой терминала.
У меня была аналогичная проблема, когда я перенес ее в ESP8266 (что является одной из причин, по которой я пошел на опцию 2 чипа). Я использую аппаратный SPI для запуска сенсорного экрана 320x240 TFT (все еще работая над кодом сенсорного экрана, так как я не могу заставить библиотеки Touch для работы только наброски XPT2024, который я нашел здесь).
Мой эскиз в настоящее время использует 83% доступной оперативной памяти (128 тыс.), Вероятно, потому, что я использую много шрифтов UCGlib (что я решил переделать). Но это не перезагружается, когда я нажимаю кнопку перезагрузки. Это плохо? Да, я знаю, что это плохо, потому что это означает, что эскиз не загружается при сбросе питания, так что мне придется выяснить, почему. Для данных DataLogger не выживание сброса является проблемой терминала.
У меня была аналогичная проблема, когда я перенес ее в ESP8266 (что является одной из причин, по которой я пошел на опцию 2 чипа). Я использую аппаратный SPI для запуска сенсорного экрана 320x240 TFT (все еще работая над кодом сенсорного экрана, так как я не могу заставить библиотеки Touch для работы только наброски XPT2024, который я нашел здесь).
Rogerclark
Чт, 07 апреля 2016 г., 12:29
Радждардж написал:
Мой эскиз в настоящее время использует 83% доступной оперативной памяти (128 тыс.).
Радждардж
Чт, 07 апреля 2016 г., 12:48
Да, извините. Неправильное слово. Но это плохо нет?
Rogerclark
Чт апреля 07, 2016 1:13
Но это не перезагружается, когда я нажимаю кнопку перезагрузки
Какую доску вы используете, есть ли на доске светодиод
Bootloader будет мигать светодиод, если он не вспыхивает, то загрузчик не работает
Bootloader будет мигать светодиод, если он не вспыхивает, то загрузчик не работает