|
Wi-fi модуль SPB800 hd-wireless, проблемы с инициализацией |
|
|
|
Sep 6 2011, 13:13
|
Частый гость
 
Группа: Участник
Сообщений: 160
Регистрация: 5-04-06
Из: Москва
Пользователь №: 15 847

|
Цитата(mpr @ Aug 8 2011, 11:36)  Здравствуйте, Имеется wi-fi модуль spb800. по uart соединен с stm32f103 . применяю wlp_api в документации на инициализацию написано, что на переданный хостом символ 'w', модуль должен им же ответить. но модуль молчит. т.е. при включении выдает положенные пять точек, но на инициализацию не реагирует. может кто встречался с этим устройством? ps uart в порядке замыкаю tx на rx и вижу свою посылку, скорость 57600 А где Вы такое прочитали ? Я подключил его к компу и через uart управляю им… Настройки всякие и обмен по Telnet прекрасно работает… Я так понял что для дальнейший работы м ним нужно откомпилировать проект owl_pico под avr или linux и далее смотреть. Вам удалось это сделать или вы катко другим путём идете…
|
|
|
|
|
Oct 4 2011, 11:13
|
Группа: Новичок
Сообщений: 3
Регистрация: 6-06-07
Пользователь №: 28 218

|
Доброго времени дня, Подскажите на какое расстояние мжет передавать wi-fi модуль spb800? Спасибо.
|
|
|
|
|
Apr 25 2012, 07:35
|
Группа: Новичок
Сообщений: 3
Регистрация: 20-12-11
Пользователь №: 68 994

|
Цитата(sevastianovd @ Oct 19 2011, 05:23)  (Это я, mpr) algidim> у модуля 2 варианта команд 1 - аналог AT -то что вы видете через терминал 2 - их библиотечные битовые команды, то чем будет он управлятся при компиляции проекта owlpico
мой вопрос я решил - нужно его перешить. в результате я добился работы модуля, поднял на нем http сервер (очень простой) на хосте Cortex-m библиотека очень сырая, косяков много. Удалось откомпилировать только IAR (вначале пытался на avr собрать). а так штука не плохая. будут вопросы - пишите. gkpavl - дальность работы по стандарту (до 300м на прямой видимости с внешней антенной). Могли бы подсказать? приобрел и только начал разбиратся =) можно ли настроить SPB800 c прошивкой spb800-serial_to_wifi_rxxx.hlf что бы слушать всю служебную информацию в момент подключения к сети по порту UDP ?
|
|
|
|
|
Apr 27 2012, 03:56
|
Частый гость
 
Группа: Свой
Сообщений: 78
Регистрация: 8-04-08
Из: Омск
Пользователь №: 36 562

|
Цитата(swt @ Apr 25 2012, 13:35)  можно ли настроить SPB800 c прошивкой spb800-serial_to_wifi_rxxx.hlf что бы слушать всю служебную информацию в момент подключения к сети по порту UDP ? не работал в режиме serial-to-wifi, и вашей задачи себе не ставил смотрите, здесь есть немного про UDP http://linux.hd-wireless.se/bin/view/Pico/Commands
|
|
|
|
|
Jan 16 2013, 05:48
|

Частый гость
 
Группа: Свой
Сообщений: 92
Регистрация: 1-02-05
Пользователь №: 2 343

|
Цитата(sevastianovd @ Oct 19 2011, 08:23)  будут вопросы - пишите. Уже третий день борюсь с модулем и службой тех поддержки H&D, может вы поможете, раз уже есть положительный опыт? Суть вопроса в следующем. Дествительно пришлось пару раз перепрощить модуль одной и тойже прошивкой чтобы он начал реагировать на символ 'w' Но на этом всё и закончилось - больше ни на какую команду из стека PICO API щт не отвечает. Т.е. вызываю функцию wlp_init - она отрабатывает - под отладчиком вижу что она получает в ответ 'w' Далее вызываю любую другую функцию ( wlp_set_mode(WL_MODE_AP), wlp_reset(), wlp_set_ipaddr, wlp_linkup) - никакой реакции. Данные в модуль уходят (осцилом проверял), а обратно тишина. Думал уже что может он переключается на другую скорость после wlp_init, пробывал перейти на 57600 - не помогло. Была тоже мысль что он начинает контролировать CTS/RTS сигналы, CTS замкнул на землю - тоже не помогает. Прошивку залил последнюю с сайта (pserver-spb800-r5073.hfl) Что делать?
|
|
|
|
|
Jan 16 2013, 07:33
|

Частый гость
 
Группа: Свой
Сообщений: 92
Регистрация: 1-02-05
Пользователь №: 2 343

|
wlp_init возвращает 0 - если ее код смотреть она ничего другого и не возвращает
int wlp_init(int interface, int (*readf)(void *ctx, void *data, int len), int (*writef)(void *ctx, const void *data, int len), void (*selectf)(void *ctx, int select), void *ctx) { char c = 'w';
owl_dbg("interface:%d readf:%p writef:%p ctx:%p", interface, readf, writef, ctx); priv = &wlp_ctx; owl_os_memset(priv, 0, sizeof(*priv));
priv->read = readf; priv->write = writef; priv->select = selectf; priv->rw_ctx = ctx;
if (interface == WLP_INTERFACE_SPI) { priv->flags |= WLP_FLAG_SPI; owl_dbg("init complete"); return 0; } bus_claim(); bus_write(&c, 1); do { bus_read(&c, 1); if(c == '.') owl_dbg("ignore dot"); } while(c!='w'); bus_release();
owl_dbg("init complete"); return 0; }
новые прошивки все работают сразу на 115200 поэтому я скорость не меняю, да и вопросов к wlp_init у меня нету - она посылает 'w' и получив в ответ от модуля 'w' выходит.
Вопрос у меня к другим функциям: настройки IP адреса, режима работы, сброса в конце концов. Они не отрабатывают. ТОчнее они отсылают что то модулю, но в ответ модуль ничего им не отсылает (проверено на осцилографе). Такое ощущение, что они либо что то не то ему шлют, либо не на той скорости какой надо, либо еще что...
я тут в main вставил кусочек по обмену с модулем вот отрывок:
//-----------------WLP------------------------------------------------------- wlp_init( WLP_INTERFACE_UART, uart1_read_f, /* function that will read buffer from uart */ uart1_write_f, /* function that will write buffer to uart */ select, NULL /* context passed to uart_read_f and uart_write_f */);
wlp_set_link_cb(link_f, /* function that will be called when the link status changes */ NULL /* context passed to link_f */); wlp_set_ipaddr_cb(addr_f, /* function that will be called when the IP address changes */ NULL /* context passed to addr_f */); wlp_set_mode(WL_MODE_AP); //<<<<<-----------------------------------тут код виснет, так как ждет 8 символов из UART, а от туда ничего не приходит wlp_reset(); struct ip_addr ip, netmask, gateway, dnsserver; IP4_ADDR(&ip, 192, 168, 2, 22); IP4_ADDR(&netmask, 255, 255, 255, 0); IP4_ADDR(&gateway, 192, 168, 2, 1); IP4_ADDR(&dnsserver, 192, 168, 2, 1); wlp_set_ipaddr(&ip, &netmask, &gateway, &dnsserver); /* configure SPB800 ip address */ wlp_set_dhcpd(1); /* start dhcp server */
struct wl_ssid_t ssid; strcpy(ssid.ssid, "MY-FI"); /* specifiy the ssid */ ssid.len = strlen("MY-FI"); /* the number of valid bytes in the ssid */
unsigned char mode;
wlp_get_mode(&mode); if (mode == WL_MODE_STA) printf("operation mode: sta\n\r"); else if (mode == WL_MODE_AP) printf("operation mode: ap\n\r");
wlp_linkup(&ssid, NULL, 1); /* start access point with SSID "spb800 access point", no encryption, channel 1 */
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|