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

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

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

Сообщение 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);
Единица в конце это тоже символ или все-таки значение? Нужна ли запятая или она для терминала?
Я конечно все понимаю, но этого я не понимаю.
Реклама
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

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

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

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

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

Сообщение bezzabotna »

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

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

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

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

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

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

Сообщение 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"
Реклама
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

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

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

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

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

Сообщение 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у сигналы ходят.
Я конечно все понимаю, но этого я не понимаю.
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

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

Сообщение arkhnchul »

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

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

Сообщение 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 со стороны мк сигналы тоже доходят, но не было возможности их разобрать.

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

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

Сообщение arkhnchul »

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

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

Сообщение 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:
Сделала аппаратный сброс и модуль даже мне светодиодиком моргнул через пин состояния, но так и не определяется внешними устройствами зараза..
Я конечно все понимаю, но этого я не понимаю.
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

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

Сообщение arkhnchul »

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

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

Сообщение bezzabotna »

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

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

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

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

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

Сообщение afz »

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

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

Сообщение dosikus »

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

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

Сообщение afz »

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

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

Сообщение bezzabotna »

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

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

Сообщение dosikus »

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

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

Сообщение bezzabotna »

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

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