brsaslan
Üye
- Katılım
- 3 May 2022
- Mesajlar
- 11
- Puanları
- 1
- Yaş
- 27
Öncelikle herkese iyi günler dilerim,
Projemde kullanmak istediğim ethernet modülünü DHCP ile modemden ip aldıramıyorum. Kullandığım kütüphane:
https://github.com/xaionaro/stm32-enc28j60
Bu kütüphaneyi kullanan birçok örnek proje var fakat DHCP örneği bulamadım.
(Ethernet modülünü Arduino uno ile bağlayıp ethercard kütüphanesiyle çalıştırdığımda sorunsuz ip alıyor.)
https://github.com/xaionaro/stm32-enc28j60 kütüphanesini tam olarak anlayamıyorum sanırım yazdığım kodu aşağıda vereceğim. DHCPDISCOVER mesajını gönderebiliyorum(WIRESHARK), modem cevap veriyor fakat sonrasında o verdiği cevabı alamıyorum doğal olarakta diğer adımlara geçemiyorum.
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "EtherShield.h"
#include "string.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
#define BUFFER_SIZE 550
#define DHCP_client 1
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
SPI_HandleTypeDef hspi2;
UART_HandleTypeDef huart2;
/* USER CODE BEGIN PV */
static uint16_t plen;
static uint8_t buf[BUFFER_SIZE + 1];
static uint8_t mymac[6] = { 0x54, 0x55, 0x58, 0x10, 0x09, 0x25 };
static uint8_t myip[4] = { 0, 0, 0, 0 };
static uint8_t mynetmask[4] = { 0, 0, 0, 0 };
static uint8_t gwip[4] = { 192, 168, 2, 1 };
static uint8_t dnsip[4] = { 0, 0, 0, 0 };
static uint8_t dhcpsvrip[4] = { 0, 0, 0, 0 };
static uint16_t port = 80;
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART2_UART_Init(void);
static void MX_SPI2_Init(void);
/* USER CODE BEGIN PFP */
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
/* USER CODE END 0 */
/**
* @Brief The application entry point.
* @retval int
*/
int main(void) {
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
uint8_t sta;
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART2_UART_Init();
MX_SPI2_Init();
/* USER CODE BEGIN 2 */
ES_enc28j60SpiInit(&hspi2);
ES_enc28j60Init(mymac);
ES_init_ip_arp_udp_tcp(mymac,myip,port);
ES_dhcp_start(buf, mymac, myip, mynetmask, gwip, dhcpsvrip, dnsip);
while (!ES_check_for_dhcp_answer(buf, plen)) {
}
sta=ES_dhcp_state();
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1) {
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
/*HAL_UART_Transmit(&huart2, "TEST ", 6, 100);
HAL_Delay(500);*/
}
/* USER CODE END 3 */
}
ES_dhcp_start fonksiyonu ile DHCPDISCOVER mesajını gönderiyorum sonrasında bir cevap beklemem gerekiyor(DHCPOFFER).
Modem gönderiyor fakat
while (!ES_check_for_dhcp_answer(buf, plen))
komutu ile mesajı almam gerekiyor fakat almıyor while içerisinde takılıyor. Kütüphanede örnek DHCP kodu bulunmuyor. Siz değerli forum üyelerinden bu kütüphaneyi kullanan merak eden olursa yardımlarını bekliyorum.
Teşekkürler....
Kullandığım kart : Nucleo-F103RB
Kullandığım ethernet modülü:
https://market.samm.com/enc28j60-ethernet-lan-modulu-moduller-samm-1510-60-B.png
Projemde kullanmak istediğim ethernet modülünü DHCP ile modemden ip aldıramıyorum. Kullandığım kütüphane:
https://github.com/xaionaro/stm32-enc28j60
Bu kütüphaneyi kullanan birçok örnek proje var fakat DHCP örneği bulamadım.
(Ethernet modülünü Arduino uno ile bağlayıp ethercard kütüphanesiyle çalıştırdığımda sorunsuz ip alıyor.)
https://github.com/xaionaro/stm32-enc28j60 kütüphanesini tam olarak anlayamıyorum sanırım yazdığım kodu aşağıda vereceğim. DHCPDISCOVER mesajını gönderebiliyorum(WIRESHARK), modem cevap veriyor fakat sonrasında o verdiği cevabı alamıyorum doğal olarakta diğer adımlara geçemiyorum.
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "EtherShield.h"
#include "string.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
#define BUFFER_SIZE 550
#define DHCP_client 1
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
SPI_HandleTypeDef hspi2;
UART_HandleTypeDef huart2;
/* USER CODE BEGIN PV */
static uint16_t plen;
static uint8_t buf[BUFFER_SIZE + 1];
static uint8_t mymac[6] = { 0x54, 0x55, 0x58, 0x10, 0x09, 0x25 };
static uint8_t myip[4] = { 0, 0, 0, 0 };
static uint8_t mynetmask[4] = { 0, 0, 0, 0 };
static uint8_t gwip[4] = { 192, 168, 2, 1 };
static uint8_t dnsip[4] = { 0, 0, 0, 0 };
static uint8_t dhcpsvrip[4] = { 0, 0, 0, 0 };
static uint16_t port = 80;
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART2_UART_Init(void);
static void MX_SPI2_Init(void);
/* USER CODE BEGIN PFP */
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
/* USER CODE END 0 */
/**
* @Brief The application entry point.
* @retval int
*/
int main(void) {
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
uint8_t sta;
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART2_UART_Init();
MX_SPI2_Init();
/* USER CODE BEGIN 2 */
ES_enc28j60SpiInit(&hspi2);
ES_enc28j60Init(mymac);
ES_init_ip_arp_udp_tcp(mymac,myip,port);
ES_dhcp_start(buf, mymac, myip, mynetmask, gwip, dhcpsvrip, dnsip);
while (!ES_check_for_dhcp_answer(buf, plen)) {
}
sta=ES_dhcp_state();
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1) {
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
/*HAL_UART_Transmit(&huart2, "TEST ", 6, 100);
HAL_Delay(500);*/
}
/* USER CODE END 3 */
}
ES_dhcp_start fonksiyonu ile DHCPDISCOVER mesajını gönderiyorum sonrasında bir cevap beklemem gerekiyor(DHCPOFFER).
Modem gönderiyor fakat
while (!ES_check_for_dhcp_answer(buf, plen))
komutu ile mesajı almam gerekiyor fakat almıyor while içerisinde takılıyor. Kütüphanede örnek DHCP kodu bulunmuyor. Siz değerli forum üyelerinden bu kütüphaneyi kullanan merak eden olursa yardımlarını bekliyorum.
Teşekkürler....
Kullandığım kart : Nucleo-F103RB
Kullandığım ethernet modülü:
https://market.samm.com/enc28j60-ethernet-lan-modulu-moduller-samm-1510-60-B.png