Как взломать usart hoverboard

Xplosion
Чт, 08 июня 2017 г. 22:05
Привет
Я получил этот код из другого поста на этом форуме. У меня проблемы, заставляя это работать. Я не знаю, какой пин -код использовать. Я использую PIN -PIN PA2 & PA3, PA6 (MISO1) & PA7 (MOSI1), PA14 (MISO1) & PA15 (MOSI1) и я не могу получить его работать. Я хотел бы использовать 2 порта USART для управления каждым двигателем с 1 портом USART в общем. Я получил работу на Arduino Pro Mini, но у Pro Mini есть только 1 порт USART, и у меня возникают проблемы при использовании 2 Pro Mini на IC2 для управления каждым двигателем. Я использую Mini STM32. Спасибо за помощь

Я хочу сделать хакерский взлом.
http: // drewspewsmuse.блог.сопутствующий.Великобритания/201 ... утер.HTML
#include #include "HardwareSerial.h" void setup() { // put your setup code here, to run once: Serial.begin(115200); Serial1.begin(26300); Serial2.begin(26300); USART1->regs->CR1 |= USART_CR1_M_9N1 ; USART2->regs->CR1 |= USART_CR1_M_9N1 ; GPIOA->regs->BSRR = 1; } char c = ' '; signed int sp = 0; void loop() { Serial.println(c); if (c == ' ') { sp = 0; } else if (c == 'q') { sp -= 10; } else if (c == 'w') { sp += 10; } else if (c == '2') { sp += 100; } else if (c == '1') { sp -= 100; } Serial.print("speed "); Serial.println(sp); Serial.print(" low byte "); Serial.print((sp & 0xFF), HEX); Serial.print(" high byte "); Serial.println((sp >> 8) & 0xFF, HEX); do { Serial1.write(256); Serial1.write(sp & 0xFF); Serial1.write((sp >> 8) & 0xFF); Serial1.write(sp & 0xFF); Serial1.write((sp >> 8) & 0xFF); Serial1.write(85); delayMicroseconds(300); } while (!Serial.available()); c = Serial.read(); }

Rogerclark
Чт, 08 июня 2017 г., 22:33
Можете ли вы прояснить вещи

Вы упомянули 3 набора булавок, а также использовали термины SPI MOSI и MISO

Вы используете UARTS и SPI?

Предполагая, что вы используете загрузчик, Serial-USB-сериал.

Serial1 - UART1 на PA9 и PA10
Serial2 находится на UART2 (я не уверен, но это может быть PA2 и PA3 - но вы должны дважды проверить)

Если вам нужен сериал на других булавках, все UARTS можно переделать на альтернативные булавки, но это не полностью гибко. это всего лишь выбор из 2 комплектов для каждого UART

Xplosion
Пт, 09 июня 2017 г. 12:21
Спасибо за ответ, Роджер

Я проверил все 3 набора булавок, чтобы увидеть, заставлю ли я его работать, и я не получил никаких ответов. Это код, который я использовал в Pro Mini, и он использует выводы SPI. Должен ли я использовать булавки SPI в Mini STM32? Я использую PA9 & PA10 для USB
#include #define MOSI 11 #define MISO 12 #define TX MOSI #define RX MISO #define LEDPIN 13 SoftwareSerial9 mySerial(RX,TX); void setup() { mySerial.begin(26315); Serial.begin(115200); } char c = ' '; signed int sp=0; void loop() { Serial.println(c); if(c == ' ') { sp=0; } else if(c == '-') { sp -= 10; } else if(c == '+') { sp += 10; } else if(c == '2') { sp += 100; } else if(c == '1') { sp -= 100; } Serial.print("speed "); Serial.println(sp); Serial.print(" low byte "); Serial.print((sp & 0xFF), HEX); Serial.print(" high byte "); Serial.println((sp >> 8) & 0xFF, HEX); do { mySerial.write9(256); mySerial.write9(sp & 0xFF); mySerial.write9((sp >> 8) & 0xFF); mySerial.write9(sp & 0xFF); mySerial.write9((sp >> 8) & 0xFF); mySerial.write9(85); delayMicroseconds(300); } while(!Serial.available()); c=Serial.read(); }

Rogerclark
Пт, 09 июня 2017 г. 1:21
Вернуться к основам

Точно, какая доска вы используете (ссылка, пожалуйста)
Знайте, используете ли вы загрузчик и USB -сериал ?

Xplosion
Пт, 09 июня 2017 г. 1:53
Изображение

Да, я использую загрузчик и USB -сериал.

Rogerclark
Пт, 09 июня 2017 г. 2:07 утра
ХОРОШО. Эта доска известна здесь как синяя таблетка

Так.. Что вы связаны с чем (STM32 <--> Доска наворота)

КСТАТИ.
Я не совсем уверен, почему вы используете сериал программного обеспечения, так как есть 3 аппаратных серийных каналов

Xplosion
Пн 12 июня 2017 г., 4:01
Привет, Роджер

Я подключил PA2 & PA3 в Hoverboard.

это код #include #include #include "HardwareSerial.h" void setup() { // put your setup code here, to run once: Serial.begin(115200); Serial1.begin(26300); Serial2.begin(26300); //Serial3.begin(26300); USART1->regs->CR1 |= USART_CR1_M_9N1 ; USART2->regs->CR1 |= USART_CR1_M_9N1 ; USART3->regs->CR1 |= USART_CR1_M_9N1 ; GPIOA->regs->BSRR = 1; } char c = ' '; signed int sp = 0; void loop() { Serial.println(c); if (c == ' ') { sp = 0; } else if (c == 'q') { sp -= 10; } else if (c == 'w') { sp += 10; } else if (c == '2') { sp += 100; } else if (c == '1') { sp -= 100; } Serial.print("speed "); Serial.println(sp); Serial.print(" low byte "); Serial.print((sp & 0xFF), HEX); Serial.print(" high byte "); Serial.println((sp >> 8) & 0xFF, HEX); do { Serial1.write(256); Serial1.write(sp & 0xFF); Serial1.write((sp >> 8) & 0xFF); Serial1.write(sp & 0xFF); Serial1.write((sp >> 8) & 0xFF); Serial1.write(85); // Serial2.write(256); Serial2.write(sp & 0xFF); Serial2.write((sp >> 8) & 0xFF); Serial2.write(sp & 0xFF); Serial2.write((sp >> 8) & 0xFF); Serial2.write(85); delayMicroseconds(300); } while (!Serial.available()); c = Serial.read(); }

Rogerclark
Пн 12 июня 2017 г., 6:07
Serial2 должен вывести в PA2 / PA3

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

Стивестронг
Пн 12 июня 2017 г. 8:59
Вы можете использовать в своем коде более простой способ передать параметры сериалу:
Serial1.begin(26300, SERIAL_9N1);

Xplosion
Пн 12 июня 2017 г. 15:36
Роджер, у меня нет логического анализатора, есть другой способ проверить это?

Стив, это правильный способ упростить код? #include #include #include "HardwareSerial.h" // //disableDebugPorts(); //enableDebugPorts(); void setup() { // put your setup code here, to run once: Serial.begin(115200); Serial1.begin(26300, SERIAL_9N1); Serial2.begin(26300, SERIAL_9N1); } char c = ' '; signed int sp = 0; void loop() { Serial.println(c); if (c == ' ') { sp = 0; } else if (c == 'q') { sp -= 10; } else if (c == 'w') { sp += 10; } else if (c == '2') { sp += 100; } else if (c == '1') { sp -= 100; } Serial.print("speed "); Serial.println(sp); Serial.print(" low byte "); Serial.print((sp & 0xFF), HEX); Serial.print(" high byte "); Serial.println((sp >> 8) & 0xFF, HEX); do { Serial1.write(256); Serial1.write(sp & 0xFF); Serial1.write((sp >> 8) & 0xFF); Serial1.write(sp & 0xFF); Serial1.write((sp >> 8) & 0xFF); Serial1.write(85); // Serial2.write(256); Serial2.write(sp & 0xFF); Serial2.write((sp >> 8) & 0xFF); Serial2.write(sp & 0xFF); Serial2.write((sp >> 8) & 0xFF); Serial2.write(85); delayMicroseconds(300); } while (!Serial.available()); c = Serial.read(); }

Стивестронг
Пн 12 июня 2017 г., 19:37
Кажется, так.

Но я думаю, что у вас есть неожиданное поведение, когда вы пишете Serial1.write(256);

Rogerclark
Пн 12 июня 2017 г., 21:41
Если у вас есть USB -серийный адаптер, вы можете просто подключить его PIN -код RX к данным TX из STM32.

В долгосрочной перспективе, если вы заинтересованы в выполнении других проектов микроконтроллера, стоит потратить 10 долларов на один из тех анализаторов логики USB, которые можно найти на eBay, Aliexpress и т. Д.

эн.G что -то вроде этого

http: // www.eBay.компонент.AU/ITM/USB-24MHZ-8C ... SW3YJZOJOW

Или, если у вас есть больше денег, вы можете получить 16 -канальный канал (и, что более важно, 100 МГц) USB -анализатор примерно за 50 долларов.

У меня также есть цифровой объем хранения (100 МГц), который имеет 16 -канальный логический анализатор, но теперь я никогда не использую логический анализатор.

Xplosion
Пн 12 июня 2017 г. 22:57
Спасибо, Роджер. Я собираюсь заказать анализатор логики USB.

Я подключаю серийный адаптер к RX & TX PIN -код и сериал.Начните (115200) Работать и отвечать, когда я печатаю, но сериал1.Begin (26300) или Serial2.начинать (26300) не отвечать и не работать

Rogerclark
Вт 13 июня 2017 г. 12:15 утра
Xplosion написал:Спасибо, Роджер. Я собираюсь заказать анализатор логики USB.

Я подключаю серийный адаптер к RX & TX PIN -код и сериал.Начните (115200) Работать и отвечать, когда я печатаю, но сериал1.Begin (26300) или Serial2.начинать (26300) не отвечать и не работать

Xplosion
Вт 13 июня 2017 г. 12:47
Большое спасибо за вашу помощь. Я собираюсь попробовать сделать то, что вы сказали, и я вернусь к вам.

5 В ШИМ ?