Sé que es viejo, pero el año pasado lo hice con cierta especificación, así que lo resumiré para beneficio de otras personas.
Primero, no usaría el W5100, pero es su hermano W5500 , que es básicamente una revisión, y utiliza el SPI mucho mejor. También consideraría cambiar a una parte que tiene DMA, especialmente si desea que sea solo UDP.
En ambos casos, probablemente utilice la pila TCP / IP MLA de Microchip, Wiznet proporciona parches para esto.
Desafortunadamente, todas las variantes de la pila TCP / IP de Microchip parecen bloquear la comunicación a través de SPI (sin DMA, sin modo de búfer mejorado) . Intenté cortarlo solo a UDP y recorté la parte completa del microchip (usando el controlador subyacente de wiznet directamente y reescribiéndolo en el proceso).
También estoy de acuerdo con MJH en que el PIC18F97J60 habilitado para DMA es una mejor opción que un PIC más barato con ENC (a menos que los números sean realmente altos), pero me decepcionó un poco que TCP / IP realmente no utilice los beneficios del J60, apegándose al mínimo común denominador.
Las ventajas de usar una parte de IP en lugar de una parte de Ethernet es que puede limitar un socket a un puerto determinado, y no tendrá que transferir ningún tráfico no relacionado a través de su enlace SPI. El W5500 tiene 4KB por socket, y uso un socket separado para recibir y enviar para maximizar la utilización del búfer.
Mi pila UDP actual reacciona solo ante la interrupción de wiznet, y no descarga los datos de carga útil que no necesita. Lo uso UDP, basado en paquetes (sin transmisión), y uso difusiones en puertos para enviar (para evitar tener que almacenar datos MAC en caché para fines de ARP, aunque en retrospectiva tal vez no sea la mejor opción).
En el dspice 60MIPS, un viaje de ida y vuelta (recibir un paquete pequeño, responder con un paquete pequeño) toma alrededor de 100-120us, de los cuales aproximadamente 10-12us es el tiempo de CPU en tres partes diferentes (recepción previa (3-5us)), post recibir y pre-enviar (5 a 7 dependiendo de nosotros) y enviar por correo (2us). Una vez cada 2kb tengo que hacer un mantenimiento que es aproximadamente 40us tiempo de pared y 5us tiempo de CPU.
Los comandos cortos se realizan utilizando un búfer mejorado. Ya no se usa DMA (en dspice, DMA necesita 2 bits de tiempo entre bytes (o palabras en modo de 16 bits), el búfer mejorado no lo hace).
La suite no está (todavía) abierta, pero si sb necesita punteros, responda en los comentarios. Planeo portar la pila a pic32 (mk) en el próximo año.