Перейти к содержанию
    

угу, открываю в UDP, S0_SSR почему-то не читается, - читаются ZZZZ...

СS формируются правильно.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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



 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я как раз его и смотрю но читаю с него неопределенное состояние

Попробовал поиграться с адресами, все тоже самое

Из этого вывод - что ошибка в алгоритме

Я читаю регистр почти сразу после установки режима 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;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 hours ago, another_one said:

я как раз его и смотрю но читаю с него неопределенное состояние

Попробовал поиграться с адресами, все тоже самое

Из этого вывод - что ошибка в алгоритме

Я читаю регистр почти сразу после установки режима UDP, когда как согласно даташиту необходимо ждать пока не установится режим

Только вот я не понял зачем закрывать сокет пока он не будет установлен в UDP, - противоречие, или я не правильно понимаю приведенный код ниже

 

 а почему не воспользоваться рабочим алгоритмом, который я предоставил?

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я вроде тот же и делаю разницы особо нет с тем что в даташите. что у Вас, что у меня, разница только в том что я делаю это для ПЛИС

Я приведенной ниже конфигурацией решил снова послать данные

Данные шлются, приходит 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    ;

 

В связи с этим вопрос, является ли это потенциальной проблемой или нет и можно двигаться дальше?

 

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробовал двигаться дальше, но снова проблема.

Когда записываю одно слово в fifo , как показано выше, я его wiresharkом вижу, но когда записываю последовательно более чем одно слово в Fifo, посылку не наблюдаю.

Все инструкции такие же, за исключением последовательной записи в fifo 92 слов.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

  1. // чтение из регистра W5300
  2. uint16_t ReadReg (uint16_t Addr)
  3. {
  4. uint16_t data;
  5. GPIOD->MODER = 0x00000000; // порт для данных сделать входом
  6. GPIOE->ODR = Addr;
  7. GPIOB->ODR = 0x00009800; // WRC
  8. data = GPIOD->IDR;
  9. GPIOB->ODR = 0x0000F800; // WRC
  10. GPIOE->ODR = Addr;
  11. GPIOD->MODER = 0x55555555; // порт D сделать выходом
  12. return (data);
  13. }
  1. // запись в регистр W5300
  2. void WriteReg (uint16_t Addr, uint16_t Data)
  3. {
  4. GPIOE->ODR = Addr;
  5. GPIOD->ODR = Data;
  6. GPIOB->ODR = 0x00005800; // WRC
  7. __NOP();
  8. GPIOB->ODR = 0x0000F800; // WRC
  9. GPIOE->ODR = 0x0000;
  10. GPIOD->ODR = 0x0000;
  11. }

Тут я думаю, ничего сложного.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 2/7/2019 at 9:30 AM, jenya7 said:

 а почему не воспользоваться рабочим алгоритмом, который я предоставил?

Что-то в исходниках W5300 я не увидел передачу по UDP, только прием

Теперь SOCK_UDP вижу но данный передавать по нормальному так и не научился, хотелось бы посмотреть рабочий пример с передачей по UDP

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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; 
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возникла необходимость вернутся к этой задаче, но рабочий проект перестал пинговатся. Думал дело в автонастррйке 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 отвечает что заданный узел недоступен.( 

Прошу подсказать, кто знает, в чем может быть причина.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 3/2/2020 at 10:37 AM, another_one said:

Прошу подсказать, кто знает, в чем может быть причина.

отключите файервол и антивирус. мне помогало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отключал брендмаузер(, антивирусов нет.

Может что со шлюзом не так, так как его физически нет(соединение плата - кабель - комп) может не записывать в регистры GAR ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 3/7/2020 at 9:41 AM, another_one said:

Отключал брендмаузер(, антивирусов нет.

Может что со шлюзом не так, так как его физически нет(соединение плата - кабель - комп) может не записывать в регистры GAR ?

посмотрел свой код инициализации. я записываю

setSHAR(pnetinfo->mac);
setGAR(pnetinfo->gw);
setSUBR(pnetinfo->sn);
setSIPR(pnetinfo->ip);

 

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...