Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

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

Чт авг 16, 2018 08:45:25

Здравствуйте!
Нужно сконфигурировать 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);


Единица в конце это тоже символ или все-таки значение? Нужна ли запятая или она для терминала?

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

Чт авг 16, 2018 10:02:04

ну если модуль принимает команды терминала как символы ASCII, то все данные должны быть символами. Более того - наверное в конце надо передать какие-то управляющие символы, типа /n/r.

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

Чт авг 16, 2018 10:14:42

К сожалению об этом в документации не сказано ничего(
А не может терминал по своему интерпретировать вводимые с клавиатуры данные?
Например отправлять по очереди сначала строку SF потом символ 1?

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

Чт авг 16, 2018 11:24:22

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

Добавлено after 54 minutes 6 seconds:
судя по https://cdn.sparkfun.com/datasheets/Wir ... -v1.0r.pdf
там именно терминал, так что дао все в символах передавать, а чтобы устройство приняло команду в исполнение в конце передавать символы перевода каретки и новой строки.

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

Чт авг 16, 2018 12:57:48

Модуль у меня впаян в плату и соединен с STM по USART, так что сконфигурирвать я его не могу, подключая к пк и пользуясь терминалом

а подпаяться к 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"

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

Чт авг 16, 2018 13:20:36

мануал требует только CR

ну я не вчитывался в тот мануал. В свое оправдание скажу, что когда в терминале жмакаешь энтер, то он оба символа передает, так что модуль и \n должен переваривать без проблем (игнорировать). Только что лишняя память на символ израсходуется... Но я бы оставил - можно стать на обмен данными и подслушать общение. А без новой строки весь обмен не увидишь.

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

Чт авг 16, 2018 13:38:36

Сейчас делаю так. Посоветовали сделать сброс после установки скорости(какая реальная скорость настроена в модуле я не знаю). Делаю это аппаратно.
Подпаяться нет возможности.
Пробовала и \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у сигналы ходят.

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

Чт авг 16, 2018 13:46:24

в cmd тоже \r надо
ну и "по USARTу сигналы ходят" - а чего модуль на команды отвечает?

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

Чт авг 16, 2018 13:59:20

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

Меня беспокоит то , что я не знаю на какую скорость настроен модуль. Понимает ли он первую команду.

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

Чт авг 16, 2018 14:30:10

ну вот собственно надо разобрать, чо там модуль в порт пишет.

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

Чт авг 16, 2018 15:31:29

Код:
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:
Сделала аппаратный сброс и модуль даже мне светодиодиком моргнул через пин состояния, но так и не определяется внешними устройствами зараза..

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

Чт авг 16, 2018 15:41:09

подпаяйте уже два проводка к tx/rx. Вот я ничуть не верю, что это никак совершенно не возможно сделать.
потом залейте не использующую uart прошивку и подцепитесь с компа к модулю.

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

Чт авг 16, 2018 15:46:47

у меня нет переходника(

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

Чт авг 16, 2018 16:00:22

у меня нет переходника(

купить? FT232 и спаять? было дело я и на цифровом осциле пакеты разбирал! Во весело было! Неделю сидел в шоке - мой снифер данные оригинального устройства показывает, я имитирую 1в1, а мастер не признает! Оказалось 9й бит не парность вовсе, а первый байт в пакете помечает.

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

Чт авг 16, 2018 16:09:44

Я бы, по-простому, прицепил терминалку к свободному USART'у и засунул в МК простейшую программу, которая принимает байт с терминального USART'а и отдает его на bluetooth'ный. Ну, и наоборот. После этого спокойно разбираем терминалкой все, что может сказать и что может принять этот bluetooth.

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

Чт авг 16, 2018 16:20:50

afz, боюсь для ТС это слишком сложная задача, присмотритесь к последнему выложенному коду.

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

Чт авг 16, 2018 16:56:54

Да ладно, справится она. Если что - поможем. Все-таки единственная дама в нашем суровом мужском коллективе эмбеддеров...

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

Пт авг 17, 2018 07:15:12

dosikus, что не так с кодом?

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

Пт авг 17, 2018 11:42:45

Вы работу UART вообще представляете?

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

Пт авг 17, 2018 11:57:49

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