Кто работал с этим чудом - отзовитесь пожалуста Не могу с ним связаться по SPI В лучшем случае после трансмита 4 байта единиц .... Разное пробывал: 1 на микроконтроллере MI MO соединял - работает - дело в w5500 2 CS на землю бросал - не помогло 3 ресет w5500 делал 4 подключал с витой паре 5 другие регистры пробывал читать ... ничего не помогло А самое главное - как он должен реагировать когда режим SPI не правильный или когда формат команды не тот (тоже вроде всё перепробывал)?
Вообще, w5500 по большей части беспроблемный чип. Читается-пишется на скоростях до 20МГц точно (быстрее не требовалось разгонять, но по Datasheet'у - до 33МГц (гарантированно) и 80МГц (теоретически)). Для проверки пробуйте читать его регистр версии (0x39) - должно возвращаться значение "4" Ну и вся посылка (для проверки) должна выглядеть так: (биты выталкиваются от старшего к младшему). 0x00, 0x39, 0x01, 0x00 Чип должен ответить: 0x??, 0x??, 0x??, 0x04 Не забудьте добавить слабую подтяжку линии MISO к земле, чтобы не ловить помехи. Ну и направление собственно пина проверьте. Сам на эти грабли наступал.
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
судя по даташиту он работаеть должен с ARM_SPI_CPOL0_CPHA0 (The W5500 supports SPI Mode 0 and Mode 3)?
"Не забудьте добавить слабую подтяжку линии MISO к земле, чтобы не ловить помехи." - а почему это нужно ? резистор мегаомный? (может там открытый коллектор и к питанию нужно притянуть?) "Ну и направление собственно пина проверьте." - замыкал на микроконтроллере MI и MO - получил что отправил вроде проверил
спасибо!
Добавлено after 37 minutes 11 seconds: упс! работает ... просто с частотой часиков в микроконтроллере намудрил... утро вечера мудренеее... Всем спасибо!
проблемный чип!!! Если получать и отправлять до 4 байт, то всё нормально (в заголовке размер указывается) А вот если надо больше 4х байт за раз - то CS сигнал хардовый с STM32 почемуто ему не нравится, после него выдаёт бред... Это все по 4 байта читают или у когото работает?
А не подскажите он DHCP поддерживает или нет? И что в него отправить чтоб автоматом IP с маской получал?
DHCP это же протокол а не настройка. Хотя, если оно в ICMP умеет, то есть вероятность что и в DHCP тоже умеет. Надо в букваре смотреть.
_________________ Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ Актуальность репозитория: 1 июля 2025 года Если чего-то не хватает с сайта st.com - пишите, докачаю.
Так TCP тоже протокол поверх сырых сокетов ... почему одни протоколы есть, а других нету
Без DHCP жить можно а без TCP - нет. А внутри места, видимо, не так много. Я работал с W5300, но не было надобности в DHCP. Вот тут тема с вопросом про DHCP, посмотри, может чего интересного найдёшь.
_________________ Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ Актуальность репозитория: 1 июля 2025 года Если чего-то не хватает с сайта st.com - пишите, докачаю.
roman.com! Да Вы как я погляжу аскет... и даже каждый раз ip c маской вводить не ленитесь при перенастройке сети... Может скажите почему ему хардовый CS не понравился с STM32F401CCU6?
Спасибо, насмешил. Когда человек употребляет "вумное" слово, не понимая его смысл - хороший ржач. Но телепатически я уловил содержимое: имел в виду "эстет".
просбома с CS решилась - просто програмно пин дёргаю ... работает
- я использую формат работы по SPI с управлением по CS...
VVVa писал(а):
CS на землю бросал - не помогло
в этом режиме CS на землю бросал нельзя... в этом режиме надо после передачи каждой команды поднимать CS... (устанавливать высокий уровень на выводе CS). высокий уровень на выводе CS модуль W5500 воспринимает как окончание команды... проверьте формат работы по SPI в своей программе...
Добавлено after 4 minutes 23 seconds: чтоб не ходить далеко... вот рабочая схема...
//////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////W5500 PHY: //перед настройкой PHY сделать программный Cброс PHY: PORTB.2=0; // SS W5500 tx=0x00; SPI(); tx=0x2E; SPI(); tx=0x04; SPI(); // Address Registers + Control Registers tx=0x00; SPI(); // Data -0x00 tx=0x00; SPI(); // Data -0x00 PORTB.2=1; // SS W5500 //пишем режим PHY: // 1... .... RST - 1. // .1.. .... программная настройка режима - 1 // ..0. .... 10BT Full-duplex, Auto-negotiation disabled / Power Down mode // ...0 .... 10BT Full-duplex, Auto-negotiation disabled / Power Down mode // .... 1... 10BT Full-duplex, Auto-negotiation disabled / Power Down mode // .... .1.. Duplex Status // .... ..0. Speed Status // .... ...1 Link Status PORTB.2=0; // SS W5500 tx=0x00; SPI(); tx=0x2E; SPI(); tx=0x04; SPI(); // Address Registers + Control Registers tx=0xC8; SPI(); // Data -0xC8 (10 Мбит/с, Full-duplex) tx=0x00; SPI(); // Data -0x00 PORTB.2=1; // SS W5500 //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////Socket_0 - MACRAW: //протокол: пишем протокол MACRAW Socket_0: PORTB.2=0; // SS W5500 tx=0x00; SPI(); tx=0x00; SPI(); tx=0x0C; SPI(); // Address Registers + Control Registers tx=0x04; SPI(); // Data -0x04 // MACRAW // Socket_0 PORTB.2=1; // SS W5500 //пишем команду OPEN Socket_0: PORTB.2=0; // SS W5500 tx=0x00; SPI(); tx=0x01; SPI(); tx=0x0C; SPI(); // Address Registers + Control Registers tx=0x01; SPI(); // Data -0x01 (команда OPEN) PORTB.2=1; // SS W5500 //////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////Socket_0 - INT: //INT Mask Socket_0: пишем INT Mask Socket_0: (SIMR) 0x0018 PORTB.2=0; // SS W5500 tx=0x00; SPI(); tx=0x18; SPI(); tx=0x04; SPI(); // Address Registers + Control Registers tx=0x01; SPI(); // Data 0x01 -Enable INT Socket_0. PORTB.2=1; // SS W5500 //INT Mask Socket_0 RECV: пишем INT Mask завершение приёма Socket_0: (Sn_IMR) 0x002C PORTB.2=0; // SS W5500 tx=0x00; SPI(); tx=0x2C; SPI(); tx=0x0C; SPI(); // Address Registers + Control Registers tx=0x04; SPI(); // Data 0x04 -INT Mask завершение приёма. PORTB.2=1; // SS W5500 } ////////////////////////////////////////////////////////////////////////////////
и т.д.
- тут я использую режим MACRAW. в этом режиме W5500 тупо принимает и отправляет Ethernet пакеты. больше ничего W5500 в этом режиме не делает)) а все Интернет протоколы у меня зашиты в МК типа ATmega328.
- другие режимы есть по ссылке что я давал выше...
Может скажите почему ему хардовый CS не понравился с STM32F401CCU6?
У меня работает с аппаратным /CS. Разве что он включается-выключается при включении-выключении бита разрешения работы SPI-блока в контроллере.
Поднял исходники, мигрирующие по разным чипам, с которыми работал... и я отправляю данные в режиме VDM (Variable length Data Mode) и проблем нет.
Если что-то не работает - первым делом проверяйте код. А вообще обзаведитесь логическим анализатором, хотя бы простейшим, чтобы понимать, что происходит на шине.
DHCP - да, требуется программный, либо статика. А сам чип его не умеет делать (да и не надо).
Спойлер
Код:
volatile uint8_t TX_BUF_1[8]; // Заголовок и первый байт (если один) volatile uint8_t RX_BUF_1[8]; // Буфер под ответ (если 1 байт данных)
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения