STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Встал на лапы
Аватара пользователя
Сообщения: 134
Зарегистрирован: Пн ноя 07, 2016 12:14:14

Сообщение bezzabotna »

Здравствуйте!
Нужно сконфигурировать bluetooth модуль RN-42. В принципе он особо не отличается от HC, но тк я с этим сталкиваюсь в первый раз,у меня вопросы.
Модуль у меня впаян в плату и соединен с STM по USART, так что сконфигурирвать я его не могу, подключая к пк и пользуясь терминалом. По блютуз я тоже не могу его найти, видимо он в mastermode. Остается толькор конфигурировать командами STM. НО в документации на модуль все команды представлены в виде, например:
S7,1
То есть строка символов(команда), запятая для разделения, значение установки
Это для терминала. Я перевожу эту команду в команду для мк.
Правильно ли я делаю?

Код: Выделить всё

uint8_t cmd[2];
uint8_t val[1];
cmd[0]='S';
cmd[1]='7';
val[0]=1; 
HAL_UART_Transmit(&uart1, cmd, 2, 1);
HAL_UART_Transmit(&uart1, val, 1, 1);
Или подавать все 1 массивом?

Код: Выделить всё

uint8_t cmd[4];
cmd[0]='S';
cmd[1]='7';
cmd[2]=',';
cmd[3]='1';
HAL_UART_Transmit(&uart1, cmd, 4, 1);
Единица в конце это тоже символ или все-таки значение? Нужна ли запятая или она для терминала?
Я конечно все понимаю, но этого я не понимаю.
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Сообщение Ярослав555 »

ну если модуль принимает команды терминала как символы ASCII, то все данные должны быть символами. Более того - наверное в конце надо передать какие-то управляющие символы, типа /n/r.
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 134
Зарегистрирован: Пн ноя 07, 2016 12:14:14

Сообщение bezzabotna »

К сожалению об этом в документации не сказано ничего(
А не может терминал по своему интерпретировать вводимые с клавиатуры данные?
Например отправлять по очереди сначала строку SF потом символ 1?
Я конечно все понимаю, но этого я не понимаю.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Сообщение Ярослав555 »

терминал не передает никакие строки и отдельно символы, он даже тайминги никакие не считает. Вы нажимаете кнопку на клавиатуре - терминал передает какой-то символ в какой-то выбранной кодировке, скорее всего ASCII, по какому-то выбранному протоколу/интерфейсу. Если эта "консолька" разбирает вводимое на строки и отдельные символы, то это уже не терминал, а командная оболочка, например как bash.

Добавлено after 54 minutes 6 seconds:
судя по https://cdn.sparkfun.com/datasheets/Wir ... -v1.0r.pdf
там именно терминал, так что дао все в символах передавать, а чтобы устройство приняло команду в исполнение в конце передавать символы перевода каретки и новой строки.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Сообщение arkhnchul »

[uquote="bezzabotna",url="/forum/viewtopic.php?p=3438090#p3438090"]Модуль у меня впаян в плату и соединен с STM по USART, так что сконфигурирвать я его не могу, подключая к пк и пользуясь терминалом[/uquote]
а подпаяться к TX/RX никак?)

судя по мануалу, в режим настройки (command mode) еще войти надо
Once a connection is made, you can only enter command mode if the boot-up config-
uration timer has not expired (60 seconds). To remain in configuration mode, set the
configuration timer to 255.
....
Type $$$ into the terminal emulator to enter command mode.
The module returns the string CMD, which indicates that your connection and terminal
settings are correct. While in command mode, the module accepts ASCII bytes as com-
mands. When you enter a valid command, the module returns AOK. It returns ERR for an
invalid command and ? for unrecognized commands
Ярослав555 писал(а):в конце передавать символы перевода каретки и новой строки
мануал требует только CR

bezzabotna, раз передавать ASCII символы и CR - ваша команда из примера будет типа uint8_t cmd[]="S7,1\r"
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Сообщение Ярослав555 »

[uquote="arkhnchul",url="/forum/viewtopic.php?p=3438211#p3438211"]мануал требует только CR[/uquote]
ну я не вчитывался в тот мануал. В свое оправдание скажу, что когда в терминале жмакаешь энтер, то он оба символа передает, так что модуль и \n должен переваривать без проблем (игнорировать). Только что лишняя память на символ израсходуется... Но я бы оставил - можно стать на обмен данными и подслушать общение. А без новой строки весь обмен не увидишь.
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 134
Зарегистрирован: Пн ноя 07, 2016 12:14:14

Сообщение bezzabotna »

Сейчас делаю так. Посоветовали сделать сброс после установки скорости(какая реальная скорость настроена в модуле я не знаю). Делаю это аппаратно.
Подпаяться нет возможности.
Пробовала и \r\n и просто \r

Код: Выделить всё

int main(void){
uint8_t cmd[]={"$$$"};;
uint8_t reboot[]={"R,1\r"};	
uint8_t spd96[]={"SU,96\r"};
uint8_t def_settings[]={"SF,1\r"};

HAL_Init(); 
SystemClock_Config();
MX_USART1_UART_Init();
BT_ON;	
BT_RES_OFF;
HAL_UART_Transmit(&huart1, cmd, strlen(cmd), 0xFFFFFF);
HAL_Delay(500);		
HAL_UART_Transmit(&huart1, spd96, strlen(spd96), 0xFFFFFF);
BT_RES_ON;
HAL_Delay(500);
BT_RES_OFF;
HAL_Delay(500);
HAL_UART_Transmit(&huart1, def_settings, strlen(def_settings), 0xFFFFFF);
...
}

void MX_USART1_UART_Init(void)
{

  huart1.Instance = USART1;
  huart1.Init.BaudRate = 9600;//115200;
  huart1.Init.WordLength = UART_WORDLENGTH_8B;
  huart1.Init.StopBits = UART_STOPBITS_1;
  huart1.Init.Parity = UART_PARITY_NONE;
  huart1.Init.Mode = UART_MODE_TX_RX;
  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  if (HAL_UART_Init(&huart1) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

}

Но никакие устройства мой модуль так и не видят. Модуль рабочий, по USARTу сигналы ходят.
Я конечно все понимаю, но этого я не понимаю.
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Сообщение arkhnchul »

в cmd тоже \r надо
ну и "по USARTу сигналы ходят" - а чего модуль на команды отвечает?
Встал на лапы
Аватара пользователя
Сообщения: 134
Зарегистрирован: Пн ноя 07, 2016 12:14:14

Сообщение bezzabotna »

To find the power setting:
1. Type $$$ in a console to put the module into command mode.
2. Type SF,1 <cr> to restore the factory defaults.
3. Type R,1 <cr> to reboot the module.
4. Type $$$ to go into command mode.
5. Type GY <cr> to view the power setting.
Вроде не нужен.
ПО RX со стороны мк сигналы тоже доходят, но не было возможности их разобрать.

Меня беспокоит то , что я не знаю на какую скорость настроен модуль. Понимает ли он первую команду.
Я конечно все понимаю, но этого я не понимаю.
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Сообщение arkhnchul »

ну вот собственно надо разобрать, чо там модуль в порт пишет.
Встал на лапы
Аватара пользователя
Сообщения: 134
Зарегистрирован: Пн ноя 07, 2016 12:14:14

Сообщение bezzabotna »

Код: Выделить всё

HAL_UART_Transmit(&huart1, cmd, strlen(cmd), 0xFFFFFF);
	HAL_Delay(2000);		
	HAL_UART_Receive(&huart1, reply, 3, 0xFFFFFF);
	HAL_UART_Transmit(&huart1, def_settings, strlen(def_settings), 0xFFFFFF);

	HAL_UART_Transmit(&huart1, reboot, strlen(reboot), 0xFFFFFF);
застревает на HAL_UART_Receive в функции UART_WaitOnFlagUntilTimeout
крутится в бесконечном цикле в ожидании флага. В reply ничего не записывается. Я правильно пытаюсь информацию принять?

Добавлено after 50 minutes 19 seconds:
Сделала аппаратный сброс и модуль даже мне светодиодиком моргнул через пин состояния, но так и не определяется внешними устройствами зараза..
Я конечно все понимаю, но этого я не понимаю.
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Сообщение arkhnchul »

подпаяйте уже два проводка к tx/rx. Вот я ничуть не верю, что это никак совершенно не возможно сделать.
потом залейте не использующую uart прошивку и подцепитесь с компа к модулю.
Встал на лапы
Аватара пользователя
Сообщения: 134
Зарегистрирован: Пн ноя 07, 2016 12:14:14

Сообщение bezzabotna »

у меня нет переходника(
Я конечно все понимаю, но этого я не понимаю.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Сообщение Ярослав555 »

[uquote="bezzabotna",url="/forum/viewtopic.php?p=3438274#p3438274"]у меня нет переходника([/uquote]
купить? FT232 и спаять? было дело я и на цифровом осциле пакеты разбирал! Во весело было! Неделю сидел в шоке - мой снифер данные оригинального устройства показывает, я имитирую 1в1, а мастер не признает! Оказалось 9й бит не парность вовсе, а первый байт в пакете помечает.
afz
Опытный кот
Аватара пользователя
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Сообщение afz »

Я бы, по-простому, прицепил терминалку к свободному USART'у и засунул в МК простейшую программу, которая принимает байт с терминального USART'а и отдает его на bluetooth'ный. Ну, и наоборот. После этого спокойно разбираем терминалкой все, что может сказать и что может принять этот bluetooth.
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

afz, боюсь для ТС это слишком сложная задача, присмотритесь к последнему выложенному коду.
afz
Опытный кот
Аватара пользователя
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Сообщение afz »

Да ладно, справится она. Если что - поможем. Все-таки единственная дама в нашем суровом мужском коллективе эмбеддеров...
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Встал на лапы
Аватара пользователя
Сообщения: 134
Зарегистрирован: Пн ноя 07, 2016 12:14:14

Сообщение bezzabotna »

dosikus, что не так с кодом?
Я конечно все понимаю, но этого я не понимаю.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Вы работу UART вообще представляете?
Встал на лапы
Аватара пользователя
Сообщения: 134
Зарегистрирован: Пн ноя 07, 2016 12:14:14

Сообщение bezzabotna »

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

Вернуться в «ARM»