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
Я получил этот код из другого поста на этом форуме. У меня проблемы, заставляя это работать. Я не знаю, какой пин -код использовать. Я использую 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
Вы упомянули 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
Я проверил все 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 -сериал ?
Точно, какая доска вы используете (ссылка, пожалуйста)
Знайте, используете ли вы загрузчик и USB -сериал ?
Xplosion
Пт, 09 июня 2017 г. 1:53
Да, я использую загрузчик и USB -сериал.
Rogerclark
Пт, 09 июня 2017 г. 2:07 утра
ХОРОШО. Эта доска известна здесь как синяя таблетка
Так.. Что вы связаны с чем (STM32 <--> Доска наворота)
КСТАТИ.
Я не совсем уверен, почему вы используете сериал программного обеспечения, так как есть 3 аппаратных серийных каналов
Так.. Что вы связаны с чем (STM32 <--> Доска наворота)
КСТАТИ.
Я не совсем уверен, почему вы используете сериал программного обеспечения, так как есть 3 аппаратных серийных каналов
Xplosion
Пн 12 июня 2017 г., 4:01
Привет, Роджер
Я подключил PA2 & PA3 в Hoverboard.
это код
Я подключил 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 -канальный логический анализатор, но теперь я никогда не использую логический анализатор.
В долгосрочной перспективе, если вы заинтересованы в выполнении других проектов микроконтроллера, стоит потратить 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) не отвечать и не работать
Я подключаю серийный адаптер к 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) не отвечать и не работать
Я подключаю серийный адаптер к RX & TX PIN -код и сериал.Начните (115200) Работать и отвечать, когда я печатаю, но сериал1.Begin (26300) или Serial2.начинать (26300) не отвечать и не работать
Xplosion
Вт 13 июня 2017 г. 12:47
Большое спасибо за вашу помощь. Я собираюсь попробовать сделать то, что вы сказали, и я вернусь к вам.