Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LwIP стек в STM32F217
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Страницы: 1, 2
MALLOY2
Цитата
Например работа с ADC, DAC, цифровая обработка сигналов с ADC?


Странный вопрос, цифровая обработка сигналов может быть такая что он и сам не потянет не то что еще и стек sm.gif, на этот вопрос вам никто и никогда не даст ответа.
Acvarif
Цитата(MALLOY2 @ Jan 20 2012, 20:05) *
Странный вопрос, цифровая обработка сигналов может быть такая что он и сам не потянет не то что еще и стек sm.gif, на этот вопрос вам никто и никогда не даст ответа.

Не совсем верно поставил вопрос.
Допустим
1 поток - 16 каналов ADC КИХ фильтры (предполагается, что stm32f217 справится)
2 поток - выдача обработанных результатов (все 16 каналов) на комп через LwIP (между выборками)
3 поток - выдача результатов прокрутки каждой выборки через КИХ на DAC
Twen
Добрый день. Я разбираюсь с реализацией веб0сервера на LwIp стеке. Сейчас меня интересует верхний уровень, сам HTTP. У примере под stm32F207 реализован HTTP с поддержкой POST и GET запросов.
Но с POST запросами есть один нюанс, после объявления константы, как:
#define LWIP_HTTPD_SUPPORT_POST 1
компилятор показывает, что в проекте не определены 3 функции:

err_t httpd_post_receive_data(void *connection, struct pbuf *p);


void httpd_post_finished(void *connection, char *response_uri, u16_t response_uri_len);


err_t httpd_post_begin(void *connection, const char *uri, const char *http_request,
u16_t http_request_len, int content_len, char *response_uri,
u16_t response_uri_len, u8_t *post_auto_wnd);

Для начала я их определил , как пустыми, возвращающими return ERR_OK(все норм.)...я так понимаю их нужно самому дописывать, может кто-нибудь посоветовать что-то по поводу их правильного описания.


За раннее, спасибо!
Алллексей
Цитата(Twen @ Jan 28 2012, 12:46) *
Добрый день. Я разбираюсь с реализацией веб0сервера на LwIp стеке. ...


Добрый вечер! Вам удалось разобраться с этим вопросом?
Log_in
Доброго времени суток. Пытаюсь разобраться с работой стека, следуя по стопам Acvarif, но застрял почти на начале.) Используя пример указанный в самом начале, UDP сообщение так и посылается.
CODE
struct udp_pcb *upcb;
struct pbuf *p;
struct ip_addr DestIPaddr;
char tdata[] = {"Test"};
char *data = tdata;

/* Create a new UDP control block */
upcb = udp_new();
/*assign destination IP address */
IP4_ADDR( &DestIPaddr, DEST_IP_ADDR0, DEST_IP_ADDR1, DEST_IP_ADDR2, DEST_IP_ADDR3 );
/* configure destination IP address and port */
udp_connect(upcb, &DestIPaddr, UDP_SERVER_PORT);
/* allocate pbuf from pool*/
p = pbuf_alloc(PBUF_TRANSPORT,strlen((char*)data), PBUF_POOL);
/* copy data to pbuf */
pbuf_take(p, (char*)data, strlen((char*)data));
/* send udp data */
udp_send(upcb, p);

По IP адресу отправляется ARP запрос, ПК шлет ответ (смотрю Wireshark), но присланный МАС адрес ПК не добавляется в таблицу. Я так понимаю, что нужно включить обработчик приема сообщений, но не знаю как. Кто знает, подскажите как это сделать, либо укажите где не прав.)
Golikov A.
Цитата(Log_in @ Dec 20 2013, 15:44) *
Доброго времени суток. Пытаюсь разобраться с работой стека, следуя по стопам Acvarif, но застрял почти на начале.) Используя пример указанный в самом начале, UDP сообщение так и посылается.

По IP адресу отправляется ARP запрос, ПК шлет ответ (смотрю Wireshark), но присланный МАС адрес ПК не добавляется в таблицу. Я так понимаю, что нужно включить обработчик приема сообщений, но не знаю как. Кто знает, подскажите как это сделать, либо укажите где не прав.)


чтобы стэк работал, надо постоянно вызывать функцию
TCP_IP_Process(),
несмотря на название для UDP тожеsm.gif

а также
timer_tick () с заданным интервалом
Log_in
Дело в том, что у меня F107, и в связи с этим в библиотеке этих функций нет. Может Вы можете назвать аналоги для этого контроллера? Или следует рассмотреть работу этих функций в для f2xx и самому потом сориентироваться?
Golikov A.
ОЙ блин!
не,... надо ваще забыть про мое сообщение - это я от другого стэка вам функции сказал%(...

в LwIP тоже есть функции, которые надо постоянно дергать что все крутилось и пакеты обрабатывались.
это
tcp_fasttmr()
tcp_slowtmr()

одну часто, она стэк крутит
а другую пореже, она таймауты считает и убивает закрытые сокеты
Log_in
Использовал функцию LwIP_Periodic_Handle, вызывающую tcp_tmr, которая в свою очередь tcp_fasttmr и tcp_slowtmr с заданной периодичностью. Но ситуация не особо изменилась. В ходе просмотра выполнения функций было обнаружено, что переменная tcp_active_pcbs, используемая в tcp_fasttmr, всегда принимает значение равное нулю. В связи с этим функция сразу вываливается из цикла без каких либо действий. Вроде эта структура означает все доступные соединения. Есть какие-нибудь соображения? Неужели соединение некорректно установлено? Интересно, что не мне удалось бы найти функции, где бы происходило присвоение каких либо значений. И не могли бы Вы также пояснить, где в конкретно происходила бы обработка ARP ответов при штатной работе стека?

Использовал функцию LwIP_Pkt_Handle(), вызывающую ethernetif_input, сразу после udp_send(upcb, p) и стек смог принять и корректно обработать ARP ответ, добавив МАС адрес в таблицу, после чего UDP дошла до ПК, но хотелось бы более элегантное и разумное решение для приема. Да и с tcp_active_pcbs неясность осталась.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.