Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Другие темы раздела
ARM, Cortex, STM32 микроконтроллер Небольшой кусок кода, перевод из ассемблера в СИ http://www.cyberforum.ru/arm/thread2388356.html
Поскольку в ассемблере я полный ноль, хочу перевести следующие инструкции в СИ. Stack_Size EQU 0x00000400 ;Размер стека AREA STACK, NOINIT, READWRITE, ALIGN=3...
ARM, Cortex, STM32 микроконтроллер Stm32 без HAL Всех приветствую! Всех с Новым Годом! Решил поиграться с stm32. Имеется Board Nucleo-64 с ST-Link. Хотел попробовать создать проекты без генератора CUBEMX, Только у меня так не получается, т.к. не... http://www.cyberforum.ru/arm/thread2387989.html
ARM, Cortex, STM32 микроконтроллер Генератор сигналов
Всем привет. Решил тут запилить для себя генератор прямоугольных сигналов на STM32RBT6. Частота должна быть 0-300Гц. Но вся суть в том что у меня есть переменный резистор, и я хочу в зависимости от...
Список используемых линковщиком файлов ARM, Cortex, STM32 микроконтроллер
Приветствую! Скорее всего у меня проблема в том, что я не могу верно сформулировать вопрос, иначе бы гугл выручил. В чем суть. Есть проект для STM32. В нем используется много разных библиотек,...
ARM, Cortex, STM32 микроконтроллер Stm32f407 приходти битая строка по USART http://www.cyberforum.ru/arm/thread2384622.html
Приветствую. Подскажите пожалуйста что делаю не так, по USART приходит строка битая, как будто не соответствие скоростей. Подскажите в чем ошибка. #include "stm32f407xx.h" #include "FreeRTOS.h"...
ARM, Cortex, STM32 микроконтроллер Программирование микроконтроллеров на базе STM32F407VET Имеется плата... подробнее
MaxAle
0 / 0 / 0
Регистрация: 11.11.2015
Сообщений: 12
18.01.2019, 01:14  [ТС] 0

TrueStudio + w5500 Ethrnet

18.01.2019, 01:14. Просмотров 492. Ответов 2
Метки (Все метки)

Ответ

Спасибо. перевыложу.

Добавлено через 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);
}
у автора есть своя функция вывода через уарт для отладки, тело ее не нашел, закоментировал строки содержащие функцию.

компелируется, прошивается в дебаг выходит но не пингуется

Вернуться к обсуждению:
TrueStudio + w5500 Ethrnet
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2019, 01:14

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

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

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