Bonjour,
je souhait réaliser une liaison ethernet avec un stm32f103 et un module à base d'un enc28j60.
je fais des tests avec le code cijoint, mais ca marche pas quand je taoe l'adresse ip du serveur dans IE.
je fais les tests avec un cable croisé branché sur la prise réseau de mon pc,
les signaux cs et rest sont ok (testé au multimétre), la liaison spi semble bonne parcequ la led orange sur la prise du module ecn28J60 clignote
toutes les secondes . J' ai aussi baissé la vitesse spi au cas ou, j'ai également modifié les deux derniers chiffres de l'adresse ip .
Auriez vous d'autre pistes à me proposées?
@+
Tu peux utiliser wireshark pour voir si le module ethernet répond effectivement, et par la suite déboguer tes communications.
A+
04/08/2012 - 19h05
guillaume83
Date d'inscription
novembre 2008
Localisation
Argol
Âge
32
Messages
274
Re : stm32 enc28j60
Merci pour votre réponse , je vais essaier wireshark.
@+
08/08/2012 - 07h34
guillaume83
Date d'inscription
novembre 2008
Localisation
Argol
Âge
32
Messages
274
Re : stm32 enc28j60
Aprés les premiers essais , il y a trois paquetsà la connection et parfois quelques autre aprés plusieur secondes , mais je sais pas si il sont émits par le pc ou par le module .
je vais essayer d'envoyer un seul paquet de format connu, pour voir si je le recoi bien .
il faut aussi que je vérifi si la sérigraphi du module est juste( j' ai moyennement confiance au chinois là dessus).
Je vous tiendrai en courant, dans quelque temps, des avancées car ma femme ma trouvé de la massonerie à faire
@+
08/08/2012 - 14h57
katmai
Date d'inscription
août 2006
Localisation
Toulouse
Âge
24
Messages
355
Re : stm32 enc28j60
Bonne maçonnerie alors .
Aufaite pour envoyer des paquets à ta cible facilement il existe le logiciel scapy.
Par contre il est assez difficile à prendre en main si mes souvenirs sont bons.
Bonjour,
aprés une semaine de dur labeur, j ai repri mes essais .
le Hard semble fonctionner corectement , j' arrive à envoyer un buffer de 1000 paquets au pc (visualisés par wireshark)
J 'ai regardé scapy, vraiment au dessus de mes connaissances(pour l'instant).
@+
15/08/2012 - 15h08
guillaume83
Date d'inscription
novembre 2008
Localisation
Argol
Âge
32
Messages
274
Re : stm32 enc28j60
Pour envoyer des paquets j 'ai trouvé OSTINATO , c'est plus simple que scapy , donc moin de fonctions, mais pas mal de tutos.
J ai réussi à envoyer une requette ping (en regardant ce que voulai le programme)et donc générer la reponse .
@+
17/08/2012 - 11h43
guillaume83
Date d'inscription
novembre 2008
Localisation
Argol
Âge
32
Messages
274
Re : stm32 enc28j60
Bon j'ai fait une grande avancée.
j' ai configuré le pc en ip fixe , avec l'adresse de passerelle par defult , l'adresse ip ,du enc28J60.
Avec cette configue le module répond à une requette ping, Mais lors d'une requette http pour envoie de la page web je passe en hardfault, surement un souci dans le prog, je pense à un dépassement de mémoire ou un truc de ce genre.
Il faut auussi que je fouille sur g..le pour voir si il n'y a pas une réponce à faire au pc aprés sa requette de découverte réseaux.
Sa avance ............tout doucement , mais ca avance quand meme.
@+
.
12/03/2013 - 20h21
dida2013
Date d'inscription
mars 2013
Messages
3
Re : stm32 enc28j60
Bonjouur,
Je suis nouvelle sur ce forum et aussi débutante dans le monde de l'embarqué.
Bon , je dois réaliser une passerelle CPL Ethernet, j'utilise également le controleur Ethernet KSZ8851 avec STM32F103.
Je voudrais savoir si le ENC28J60 ressemble beaucoup à KSZ8851 au niveau de la config??
Mercii de me répondre
13/03/2013 - 06h14
guillaume83
Date d'inscription
novembre 2008
Localisation
Argol
Âge
32
Messages
274
Re : stm32 enc28j60
L'enc28J60 est beaucoup plus ancien et n'a pas toutes les fonctions du KSZ8851.
il semble peu probable que les registres de commande soit les meme.pour la config;
@+
13/03/2013 - 11h34
dida2013
Date d'inscription
mars 2013
Messages
3
Re : stm32 enc28j60
D'accord, mais le probleme qui se pose c'est au niveau de la documentation et des exemples . pour l enc28j60 y'en a plusieurs.
Par contre pour le ksz8851SNL je trouve que la datasheet , rien de plus !!! et en tant que débutante , je galère :s
t'aurais pas des exemples de projets ou n'importe ou meme des tuto explicant comment configurer les registres ??
Merci
19/03/2013 - 14h10
dida2013
Date d'inscription
mars 2013
Messages
3
Re : stm32 enc28j60
Bonjour ,
Merci de m'aider c est urg !!
J'arrive pas à communiquer avec le device ( ksz8851 snl) , mon microcontrolleur je rappelle c'est le stm32F103, au début de la communication je bloque à step 1 càd je dev_id est toujours différent du mask id .
Je me dis que c'est peut etre un pb de SPI mais j'ai beau vérifié , je ne vois pas l'erreur , merci de m'aider
/*Description : This driver provides initialization and transmit/receive functions for the Micrel KSZ8851SNL 10/100 Ethernet Controller and PHY.
This chip is novel in that it is a full 10/100 MAC+PHY interface all in a 32-pin chip, using an SPI interface to the host processor.*/
/* Includes ------------------------------------------------------------------*/
#include "ethernet.h"
#include "config.h"
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
/*---------------------------------------------------------------------------------------*/
/* spi_send() sends one byte (outdat) and returns the received byte */
static uint8_t spi_send(uint8_t outdat)
{
CS_LOW();
SPI2->DR= outdat; // write data to be transmitted to the SPI data register
while(!(SPI2->SR & SPI_I2S_FLAG_TXE)); // Wait for SPI transmission to complete
SPI_I2S_SendData( SPI2, outdat );
while( !(SPI2->SR & SPI_I2S_FLAG_RXNE) ); // wait until receive complete
//indat = SPI2->DR; // return received data from SPI data register
/*---------------------------------------------------------------------------------------*/
/* spi_op() performs register reads, register writes, FIFO reads, and
* FIFO writes. It can also either:
* Do one complete SPI transfer (with CSN bracketing all of the SPI bytes),
* Start an SPI transfer (asserting CSN but not negating it),
* Continue an SPI transfer (leaving CSN in the asserted state), or
* End an SPI transfer (negating CSN at the end of the transfer).
*/
/*-------------------------- Step 1 ------------------------------------*/
/* verify device chip ID */
/*Read the device chip ID, make sure it is correct ID (0x8870 for KSZ8851);*/
/*otherwise there are some errors on the host bus interface. */
/*-------------------------------------------------------------------------*/
/* Make sure we get a valid chip ID before going on */
do {
#if USE_KSZ8851_HW_RESET
GPIOC->BSRR = KSZ8851_RESET_PIN;;
delay_ms(10);
GPIOC->BRR = KSZ8851_RESET_PIN;;
#else
/* Perform Global Soft Reset */
spi_setbits(REG_RESET_CTRL, GLOBAL_SOFTWARE_RESET);
spi_clrbits(REG_RESET_CTRL, GLOBAL_SOFTWARE_RESET);
#endif
/* Read device chip ID */
dev_id=ETH_REG_READ(REG_CHIP_I D);
if ((dev_id & CHIP_ID_MASK) != CHIP_ID_8851_16) {
printf("Expected Device ID 0x%x, got 0x%x\n",0x8870, dev_id);
}
}
while (dev_id != CHIP_ID_8851_16);
/*-------------------------- Step 2 ------------------------------------*/
/* MAC address is generally expressed in */
/* the form of 01:23:45:67:89:AB. (we use this MAC as an example) */
/*-------------------------------------------------------------------------*/
/*-------------------------- Step 4 ------------------------------------*/
/*Enable QMU Transmit flow control / Transmit padding /Transmit CRC, and
IP/TCP/UDP/ICMP checksum generation. */
/*-------------------------------------------------------------------------*/
ETH_REG_WRITE(REG_TX_CTRL, DEFAULT_TX_CTRL);
/*-------------------------- Step 5 ------------------------------------*/
/* - Configure Receive Frame Threshold for one frame. */
/*-------------------------------------------------------------------------*/
ETH_REG_WRITE(REG_RX_FRAME_CNT _THRES, 1);
/*-------------------------- Step 6A ------------------------------------*/
/* Enable QMU Receive flow control / Receive all broadcastframes */
/* Receive unicast frames, and IP/TCP/UDP checksum verification etc. */
/*-------------------------------------------------------------------------*/
ETH_REG_WRITE(REG_RX_CTRL1, DEFAULT_RX_CTRL1);
/*-------------------------- Step 6B ------------------------------------*/
/*6B - Enable QMU Receive ICMP /UDP Lite frame checksum verification, */
/* UDP Lite frame checksum generation, IPv6 UDP fragment frame pass, */
/* single frame data burst if SPI master controller could read a single */
/* frame data in one SPI CSN activate */
/*-------------------------------------------------------------------------*/