Por lo que entiendo, adaptando el código este que he pasado al micro de renesas tendria la pila pero con lo ultimo que me has dicho me he perdido, ¿una explicación para tontos de cual es el principio de funcionamiento de este tipo de comunicación o lo que necesitas?
Para comprender y muy basico, lamento el que este leyendo esto y tenga conocimientos, pero es una explicacion para que quede masomenos parado
Vos tenes varias capas, que respetan al menos o proximamente a las capas OSI, el MAC/PHY es lo que gobierna la parte "fisica" de la transmision, el PHY seria de forma burda el driver de salida y el MAC el controlador (que enviar, que recibir) del mismo. En si es aca donde cambia de una red a otra, ejemplo el Wi-Fi posee simplemente otro formato de MAC/PHY, el cual el MAC posee algunos que otros parametros de deteccion de error, etc
En fin, supongamos que vos necesitas enviar un dato. Hay 2 protocolos principales que son TCP y UDP, resumiendolos el TCP es con aviso de entrega y reenvio ante un fallo. Y el UDP es enviar y que tengas suerte.
Entonces vos envias el dato por UDP por ejemplo. La capa de UDP (Transport) le va a agregar informacion a tu dato, que va a ser util para la capa UDP del receptor.
Pasando esta capa, la capa IP (Internet) va a agregar mas datos, que son el IP de destino, origen, entre otras cosas.
Luego pasa a la MAC ( Link ), la cual va a preocuparse por la parte fisica del envio, aca tambien agrega informacion, como MAC destino, MAC inicio, CRC, etc
Y finalmente el PHY quien actua sobre el cable, antena, etc
Una imagen que lo resumen es :
Entonces es el MAC/PHY quien define por donde se envia (cable/aire/optico), todo lo demas son datos... ESOS datos es lo que envias por SPI, es decir mirando la imagen arriba, eso que ves como capa INTERNET es lo que enviarias vos al ENC o a tu modulo Ethernet de un micro.
¿Por que necesito una IP automatica? no se la puedo asignar yo como haría con una direccion de bus cualquiera?
La pregunta es ... donde lo pensas usar y que cantidad.. Si yo tuviera un sensor que se conecta a Ethernet, lo llevaria con cable a un SWITCH (y de aca a un servidor) o router.
NO usaria un cable directo. Si buscas comunicarte con un cable directo avisame y reformulamos todo de vuelta ( mira al final )El router de por si ya posee DHCP.. Y voy a ir con un ejemplo...
Tu computadora seguramente esta conectada por cable, sino pensalo asi.
El router es el servidor DHCP, es quien define el rango de IPs y entrega segun necesidad. Vos encendes la compu, se auto conecta al router y como no tiene IP, mediante DHCP le pide al router que le de uno, el router busca cual esta disponible y se lo da. Genial, no tengo que pensar en nada mas, ya tengo una IP. Quiero conectar otro equipo? No hay problema, le da otra IP libre.
¿Cual es la desventaja de esto?
Un equipo jamas tendria un mismo IP, ya que depende del orden de conexion y decision del router
¿Que pasaria si poseo IP fija? Puedo tener las siguientes ventajas/desventajas:
- Si tengo muchos equipos necesito darle un IP a cada uno ( reprogramarlos o con un switch en la placa).
- Si no tiene el mismo rango de IP/subnet del router no te vas a poder comunicar (mas complicado de solucionar con un switch en la placa)
- Lo bueno que tenes es que siempre esa placa va a tener ese IP, incluso en un router podes delimitar cual se den por DHCP asi dejar una franja de 100 direcciones por ejemplo para tus placas
- 2 placas con el mismo IP fijo produciendo problemas en la red.
Todo depende de que estas buscando.... Si por ejemplo es 1 placa nomas y configuras vos las conexiones por ethernet, entonces pones un IP fijo.
así que mi pregunta sería si alguno conoce algún transceptor Ethernet pero que ya incluya la pila TCP/UDP/IP que descargue de toda la tarea al micro principal, como haría en caso del WiFi los ESP8266 o los ESP32
No, no conozco y no creo que exista, puede que lo tenga en una ROM interna, pero no realizada en hardware. El problema es que ante un bug eso se vuelve imposible de cambiar. Por eso no creo que alguien lo haga. Los ESP8266 tenes una buena cantidad de firmware para el Wi-Fi, que seguramente esten los stacks ahi, explicado de otra forma, el IDE o la forma de programar hacen que no lo veas como un archivo aparte.
Ademas esto te permite cargar únicamente lo que vos necesites.
Lo que si hay son micros con MAC/PHY juntos, sin necesidad de buscar un PHY separado. Pero eso no te salva de los magneticos
Lo que quiero es comunicar una placa con otra como si por ejemplo lo hiciera por uart.
Si vos lo que queres hacer es comunicarte como si fuera un RS232 entonces no necesitas un stack TCP/IP
Si leiste lo anterior el MAC me servia para la comunicacion de equipo a punto a punto sin ninguna red y por cable esto no tiene sentido.
Entonces para un cable directo solo necesito la MAC/PHY que lo tengo en el ENC, PERO necesitas programar/inicializar el ENC
Y es acá donde se te "complicaria", deberias leer o buscar un codigo de incializacion del ENC28J60, esto es, seteo de buffers de rx y tx, es lo mas facil que se me ocurre.
Por suerte con ese codigo + el paso a paso para iniciar el MAC y el PHY que te da el datasheet (en caso de que quieras cambiar algun parametro del codigo de incianilizacion), habilitar el calculo de CRC automatico. Lo unico que deberias "llenar" en los buffer es:
MAC destino - 6 bytes ( usar FF:FF:FF:FF:FF:FF que es el multicast, ya que tenes 1 solo no va a importar)
MAC inicio - 6 bytes - direccion a tu gusto
Largo de datos - 2 bytes - siempre que te mantengas a menos de 1500 esto va a representar el largo.
Payload o datos a enviar (cantidad de bytes dadas antes)
Y .... darle la orden de envio :3
Ni siquiera tenes que pensar en el padding.... Cuando recibas algo podes verificar la direccion de MAC de inicio ( si le pones todos por igual) asi determinar que siempre esten conectadas con tus placas, por si conectan el cable a un router. Asi omitis todo lo que no sea que venga de esa direccion MAC.
Omiti millones de detalles y muchas explicaciones son re pobres para ser realista, pero mejor asi y que sea simple de entender....