another_one 0 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба угу, открываю в UDP, S0_SSR почему-то не читается, - читаются ZZZZ... СS формируются правильно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба 2 hours ago, another_one said: угу, открываю в UDP, S0_SSR почему-то не читается, - читаются ZZZZ... СS формируются правильно. посмотрите Sn_SR (Socket n Status Register). если сокет открыт он должен вернуть 0x22 SOCK_UDP This indicates Socket n is opened in UDP mode Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
another_one 0 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба я как раз его и смотрю но читаю с него неопределенное состояние Попробовал поиграться с адресами, все тоже самое Из этого вывод - что ошибка в алгоритме Я читаю регистр почти сразу после установки режима UDP, когда как согласно даташиту необходимо ждать пока не установится режим Только вот я не понял зачем закрывать сокет пока он не будет установлен в UDP, - противоречие, или я не правильно понимаю приведенный код ниже { START: Sn_MR = 0x02; /* sets UDP mode */ Sn_PORT R = source_port; /* sets source port number */ Sn_CR = OPEN; /* sets OPEN command */ /* wait until Sn_SSR is changed to SOCK_UDP */ if (Sn_ SSR != SOCK_UDP) Sn_CR = CLOSE; goto START; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 7 февраля, 2019 Опубликовано 7 февраля, 2019 (изменено) · Жалоба 11 hours ago, another_one said: я как раз его и смотрю но читаю с него неопределенное состояние Попробовал поиграться с адресами, все тоже самое Из этого вывод - что ошибка в алгоритме Я читаю регистр почти сразу после установки режима UDP, когда как согласно даташиту необходимо ждать пока не установится режим Только вот я не понял зачем закрывать сокет пока он не будет установлен в UDP, - противоречие, или я не правильно понимаю приведенный код ниже а почему не воспользоваться рабочим алгоритмом, который я предоставил? Изменено 7 февраля, 2019 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
another_one 0 13 февраля, 2019 Опубликовано 13 февраля, 2019 · Жалоба Я вроде тот же и делаю разницы особо нет с тем что в даташите. что у Вас, что у меня, разница только в том что я делаю это для ПЛИС Я приведенной ниже конфигурацией решил снова послать данные Данные шлются, приходит SEND_OK, вижу их в wiresharke, только вот почему все таки не устанавливается SOCK_UDP после открытия сокета не пойму???( 1) nRESET pin hold in low 10 2) After nRESET release(going to HIGH) wait 10 ms 4) Write to MR (address 0x000) = 0x0000 ; 5) Write to IMR (address 0x004) = 0x70FF ; 6) Write to SHAR (address 0x008) = 0x0008 ; 7) Write to SHAR2 (address 0x00A) = 0xDC01 ; 8) Write to SHAR4 (address 0x00C) = 0x0203 ; 9) Write to GAR (address 0x010) = 0xA9FE ; 10) Write to GAR2 (address 0x012) = 0x0001 ; 11) Write to SUBR (address 0x014) = 0xFFFF ; 12) Write to SUBR2 (address 0x016) = 0x0000 ; 13) Write to SIPR (address 0x018) = 0xA9FE ; 14) Write to SIPR2 (address 0x01A) = 0x0003 ; 15) Write to RTR (address 0x01C) = 0x0FA0 ; 16) Write to RCR (address 0x01E) = 0x0007 ; 17) Write to MTYPER (address 0x030) = 0xFFFF ; 18) Write to TMS01R (address 0x020) = 0x4000 ; 19) Write to TMS23R (address 0x022) = 0x0000 ; 20) Write to TMS45R (address 0x024) = 0x0000 ; 21) Write to TMS67R (address 0x026) = 0x0000 ; 22) Write to RMS01R (address 0x028) = 0x0C00 ; 23) Write to S0_IMR (address 0x204) = 0x001C ; 24) Write to S0_DIP (address 0x214) = 0xA9FE ; 25) Write to S0_DIP2 (address 0x216) = 0xD955 ; 26) Write to S0_DPORTR(address 0x212) = 0x1388 ; 27) Write to S0_MR (address 0x200) = 0x0002 ; 28) Write to S0_PORTR (address 0x20A) = 0x1388 ; 29) Write to S0_CR (address 0x202) = 0x0001 ; 30) Write to S0_TX_WRSR(address 0x220) = 0x0001 ; 31) Write to S0_TX_WRSR2(address 0x222) = 0x0000 ; 32) Write to S0_TX_FIFOR(address 0x22E) = 0x1234 ; 33) Write to S0_CR(address 0x202) = 0x0020 ; В связи с этим вопрос, является ли это потенциальной проблемой или нет и можно двигаться дальше? Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
another_one 0 28 февраля, 2019 Опубликовано 28 февраля, 2019 · Жалоба Попробовал двигаться дальше, но снова проблема. Когда записываю одно слово в fifo , как показано выше, я его wiresharkом вижу, но когда записываю последовательно более чем одно слово в Fifo, посылку не наблюдаю. Все инструкции такие же, за исключением последовательной записи в fifo 92 слов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dsl2640free 0 18 марта, 2019 Опубликовано 18 марта, 2019 · Жалоба // чтение из регистра W5300 uint16_t ReadReg (uint16_t Addr) { uint16_t data; GPIOD->MODER = 0x00000000; // порт для данных сделать входом GPIOE->ODR = Addr; GPIOB->ODR = 0x00009800; // WRC data = GPIOD->IDR; GPIOB->ODR = 0x0000F800; // WRC GPIOE->ODR = Addr; GPIOD->MODER = 0x55555555; // порт D сделать выходом return (data); } // запись в регистр W5300 void WriteReg (uint16_t Addr, uint16_t Data) { GPIOE->ODR = Addr; GPIOD->ODR = Data; GPIOB->ODR = 0x00005800; // WRC __NOP(); GPIOB->ODR = 0x0000F800; // WRC GPIOE->ODR = 0x0000; GPIOD->ODR = 0x0000; } Тут я думаю, ничего сложного. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
another_one 0 4 апреля, 2019 Опубликовано 4 апреля, 2019 · Жалоба On 2/7/2019 at 9:30 AM, jenya7 said: а почему не воспользоваться рабочим алгоритмом, который я предоставил? Что-то в исходниках W5300 я не увидел передачу по UDP, только прием Теперь SOCK_UDP вижу но данный передавать по нормальному так и не научился, хотелось бы посмотреть рабочий пример с передачей по UDP Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 7 апреля, 2019 Опубликовано 7 апреля, 2019 · Жалоба On 4/4/2019 at 6:59 PM, another_one said: Что-то в исходниках W5300 я не увидел передачу по UDP, только прием Теперь SOCK_UDP вижу но данный передавать по нормальному так и не научился, хотелось бы посмотреть рабочий пример с передачей по UDP int32_t WIZNET_RunUdp(uint8_t sn, uint8_t* buf, uint16_t port) { int32_t ret; uint16_t size, sentsize; uint8_t destip[4] = {192, 168, 3, 10}; uint16_t destport = 2700; switch(getSn_SR(sn)) { case SOCK_UDP : if((size = getSn_RX_RSR(sn)) > 0) { if(size > DATA_BUF_SIZE) size = DATA_BUF_SIZE; ret = recvfrom(sn, buf, size, destip, (uint16_t*)&destport); if(ret <= 0) { #ifdef _LOOPBACK_DEBUG_ printf("%d: recvfrom error. %ld\r\n",sn,ret); #endif return ret; } else { //LAN TO UART USART_SendBuf(USART1, buf, ret); } size = (uint16_t) ret; sentsize = 0; while(sentsize != size) { ret = sendto(sn, buf+sentsize, size-sentsize, destip, destport); if(ret < 0) { #ifdef _LOOPBACK_DEBUG_ printf("%d: sendto error. %ld\r\n",sn,ret); #endif return ret; } sentsize += ret; // Don't care SOCKERR_BUSY, because it is zero. } } break; case SOCK_CLOSED: #ifdef _LOOPBACK_DEBUG_ //printf("%d:UDP loopback start\r\n",sn); #endif if((ret = socket(sn, Sn_MR_UDP, port, 0x00)) != sn) return ret; #ifdef _LOOPBACK_DEBUG_ printf("%d:Opened, UDP loopback, port [%d]\r\n", sn, port); #endif break; default : break; } return 1; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
another_one 0 2 марта, 2020 Опубликовано 2 марта, 2020 · Жалоба Возникла необходимость вернутся к этой задаче, но рабочий проект перестал пинговатся. Думал дело в автонастррйке IPV4 адреса. Подмениваю адреса в прошивке под его изменения, но пинга нет. Может я что-то не так настраиваю стороны компа, со стороны визнета отладочные светодиоды говорят что все ок в части инициализации. Физически плата непосредственна подключена к компу без шлюза или маршрутизатора. В сетевых подключения есть включенный контроллер ethernet, и при подключении устройства возникает неопознная сеть. IPconfig говорит что ipv4 адрес 169.254.217.85., маска 255.255.0.0. Адрес основного шлюза не показывает. Соответственно я конфигурирую GAR 169.254.217.89, SUBR 255.255.0.0, SIPR 169.254.217.87., S0_DIPR 169.254.217.85. В итоге при пинге 169.254.217.87, 169.254.217.85 отвечает что заданный узел недоступен.( Прошу подсказать, кто знает, в чем может быть причина. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 7 марта, 2020 Опубликовано 7 марта, 2020 · Жалоба On 3/2/2020 at 10:37 AM, another_one said: Прошу подсказать, кто знает, в чем может быть причина. отключите файервол и антивирус. мне помогало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
another_one 0 7 марта, 2020 Опубликовано 7 марта, 2020 · Жалоба Отключал брендмаузер(, антивирусов нет. Может что со шлюзом не так, так как его физически нет(соединение плата - кабель - комп) может не записывать в регистры GAR ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 8 марта, 2020 Опубликовано 8 марта, 2020 (изменено) · Жалоба On 3/7/2020 at 9:41 AM, another_one said: Отключал брендмаузер(, антивирусов нет. Может что со шлюзом не так, так как его физически нет(соединение плата - кабель - комп) может не записывать в регистры GAR ? посмотрел свой код инициализации. я записываю setSHAR(pnetinfo->mac); setGAR(pnetinfo->gw); setSUBR(pnetinfo->sn); setSIPR(pnetinfo->ip); Изменено 8 марта, 2020 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться