Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
MaxAle
0 / 0 / 0
Регистрация: 11.11.2015
Сообщений: 12
1

TrueStudio + w5500 Ethrnet

15.01.2019, 23:32. Просмотров 434. Ответов 2
Метки нет (Все метки)

по мотивам описанного http://www.nazim.ru/2386
пытаюсь соединится с модулем w5500 использую truestudio
пинга нет...
чтоб не грузить форум проект положил тут https://yadi.sk/d/ziwb6XWZO8gkTA
плиз хелп.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2019, 23:32
Ответы с готовыми решениями:

Что вы думаете о W5500?
цена вопроса 2-3 доллара. полное решение для скажем сервера на камне. стоит ли мутить стеки на...

stm32f3Discovery TrueStudio не работает дебагер.
С ARM только начал разбираться - так для души. По работе имею дело с промышленными контроллерами -...

ATOLLIC TrueSTUDIO for ARM Lite 4.0.1
Товарищи, помогите пожалуйста! Начал программировать для платы STM32FDISCOVERY в среде разработки...

Atollic TrueStudio, проблема с путями к библиотекам.
Скачал свежую версию Atotlic TrueStudyo, импортирую проект из примеров STM32Cube_FW_F4_V1.12.0...

Atollic TrueSTUDIO версия light стала без ограничения кода
Но вроде уже не так актуально В новой версии 5.4.0, если нет никакой лицензии, то по умолчанию...

2
ValeryS
Модератор
7446 / 5638 / 716
Регистрация: 14.02.2011
Сообщений: 19,206
Завершенные тесты: 1
16.01.2019, 06:25 2
Цитата Сообщение от MaxAle Посмотреть сообщение
чтоб не грузить форум
а правила почитать?
п 4.11
Картинки и любые другие файлы загружайте на форум, во избежание их удаления или потери на сторонних ресурсах. По этой же причине коды программ также должны находиться на форуме.
1
MaxAle
0 / 0 / 0
Регистрация: 11.11.2015
Сообщений: 12
18.01.2019, 01:14  [ТС] 3
Спасибо. перевыложу.

Добавлено через 44 минуты
напишу по порядку.
правильно ли я делаю:

//тут пока работает
для работы с w5500 рыбу в кубе, включаю spi фулдуплексмастер и ногу pb12 на выход
, тактирование кварцем кристал керамик, уарт1, отладку в сис-дебаг-сериал варе.
юзаю .хал
добавил мигание диодом, вывел в терминал ...
рыба пока работает.

//тут непонятно
добавил файлы из офф библиотеки на модуль
wizchip_conf.h, w5500.h, socket.h в папку Inc
wizchip_conf.c, w5500.c, socket.c в папку Src
в main.c дописал инклюды хедеров
C
1
2
3
4
/* USER CODE BEGIN Includes */
#include "wizchip_conf.h"
#include "w5500.h"
#include "socket.h"
(ругалась при компиляции на пути к файлу w5500.h, так как искала его в дополнительной папке w5500, поправил путь удалив папку скомпелировалось )

возникает вопрос достаточно ли проделанного для "подключения" библиотеки?

далее...добавил в main.c как и у автора статьи
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/* USER CODE BEGIN PFP */
/* Private function prototypes -----------------------------------------------*/
// включить модуль W5500 сигналом SCNn=0
void cs_sel()
{
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET); //CS LOW
}
// выключить модуль W5500 сигналом SCNn=1
void cs_desel()
{
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET); //CS HIGH
}
// принять байт через SPI
uint8_t spi_rb(void)
{
    uint8_t rbuf;
    HAL_SPI_Receive(&hspi2, &rbuf, 1, 0xFFFFFFFF);
    return rbuf;
}
// передать байт через SPI
void spi_wb(uint8_t b)
{
    HAL_SPI_Transmit(&hspi2, &b, 1, 0xFFFFFFFF);
}
//далее вставил это , может не туда?
C
1
2
3
 /* USER CODE BEGIN Init */
  reg_wizchip_cs_cbfunc(cs_sel, cs_desel);
  reg_wizchip_spi_cbfunc(spi_rb, spi_wb);
//писать отдельный файл, как у автора, tcp.c не стал поставил его код в main.c

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/* USER CODE BEGIN WHILE */
  while (1)
  {
         // а вот это как раз моя функция вывода сообщений через модуль UART-USB
           // если вместо -1 поставить число, она и его отобразит.
           // в недрах этой функции работающая строка будет
           // HAL_UART_Transmit(&huart1, (uint8_t*)buf, strlen(buf), 0xFFFF);
           //trace(-1,"Try open socket\r\n");
 
           // открываем сокет 0 как TCP_SOCKET, порт 5000 */
           if((retVal = socket(0, Sn_MR_TCP, 5000, 0)) != 0)
           {
             //trace(-1, "Error open socket\r\n");
              HAL_UART_Transmit(&huart1,(uint8_t*)buf, strlen(buf), 0xFFFF);
             return 0;
           }
           //trace(-1,"Socket opened, try listen\r\n");
           HAL_UART_Transmit(&huart1,(uint8_t*)buf, strlen(buf), 0xFFFF);
 
           // устанавливаем сокет в режим LISTEN. Так будет создан tcp сервер
           if((retVal = listen(0)) != SOCK_OK)
           {
            // trace(-1, "Error listen socket\r\n");
              HAL_UART_Transmit(&huart1,(uint8_t*)buf, strlen(buf), 0xFFFF);
             return 0;
           }
 
          // trace(-1,"Socked listened, wait for input connection\r\n");
           HAL_UART_Transmit(&huart1,(uint8_t*)buf, strlen(buf), 0xFFFF);
           // ждем входящих соединений. здесь мы немножко крутимся в бесконечном цикле
           // и чтобы не заскучать одновременно мигаем светодиодом
           while((sockStatus = getSn_SR(0)) == SOCK_LISTEN)
           {
             HAL_Delay(200);
             HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
           }
 
           // раз мы попали сюда, значит выскочили из цикла. входящее соединение!
          // trace(-1,"Input connection\r\n");
           HAL_UART_Transmit(&huart1,(uint8_t*)buf, strlen(buf), 0xFFFF);
 
           if((sockStatus = getSn_SR(0)) != SOCK_ESTABLISHED)
           {
             //trace(-1, "Error socket status\r\n");
              HAL_UART_Transmit(&huart1,(uint8_t*)buf, strlen(buf), 0xFFFF);
             return 0;
           }
           // из сокета вытаскиваем информацию: кто к нам пришел, откуда
           // можете также отобразить инфу в трассировке
           uint8_t remoteIP[4];
           uint16_t remotePort;
           getsockopt(0, SO_DESTIP, remoteIP);
           getsockopt(0, SO_DESTPORT, (uint8_t*)&remotePort);
 
           // посылаем клиенту приветствие и закрываем сокет
           if((retVal = send(0, (uint8_t*)MSG, strlen(MSG))) == (int16_t)strlen(MSG))
             // нехорошо так писать код. TODO: добавить фигурные скобки даже для одной строчки )
            // trace(-1, "Msg sent\r\n");
              HAL_UART_Transmit(&huart1,(uint8_t*)buf, strlen(buf), 0xFFFF);
           else
            // trace(-1, "Error socket send\r\n");
              HAL_UART_Transmit(&huart1,(uint8_t*)buf, strlen(buf), 0xFFFF);
 
           // закрываемся. когда нас снова вызовут, мы всегда готовы кработе
           disconnect(0);
          close(0);
}
у автора есть своя функция вывода через уарт для отладки, тело ее не нашел, закоментировал строки содержащие функцию.

компелируется, прошивается в дебаг выходит но не пингуется
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2019, 01:14

ZXV10 H108L как точка доступа wi-fi для ethrnet провайдера (имеется 2 сетевых карты)
В общем-то весь вопрос практически и состоит в названии темы. Есть ADSL модем ZXV10 H108L, есть...

Работа с W5500
Доброго времени суток. Пытаюсь запустить Ethernet микруху W5500. Настройки работают, IP и порт...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru