Forum: Mikrocontroller und Digitale Elektronik Probleme mit CC3000 auf dem MSP-EXP430FG4618


von F. S. (de0_board)


Angehängte Dateien:

Lesenswert?

Hallo liebe Forumsgemeinde,

ich stehe vor einem Problem bei dem ich schon mehrere Tage nicht mehr 
vorankomme. Ich benutze ein MSP-EXP430FG4618 in Kombination mit einem 
CC3000 TI WiFi Modul:

http://processors.wiki.ti.com/index.php/CC3000_Wi-Fi_MSP-EXP430FG4618

Ich benutze eine dafür vorgesehene Bibliothek, und eine Anwendung davon 
die so genannte basic_wifi_application.c

Das Hauptproblem ist, dass ich es nicht schaffe mit der Bibliothek eine 
Verbindung mit einem Hot Spot meines Handy aufzubauen.

Ich rufe die Funktion mit '2' über das HTerm zuerst den folgenden 
Befehl:
1
case UART_COMMAND_CC3000_CONNECT:
2
    rs232_printf("\n\n0x32 angekommen\n\n");
3
//    rs232_printf("\n\nStartSmartConfig, aktiviert\n\n");
4
//    StartSmartConfig();
5
    ulSsidLen=0x04;
6
    pcSsid = "wxyz";
7
//    ulSsidLen = atoc(usBuffer[2]);
8
//    pcSsid = &usBuffer[3];
9
10
    rs232_printf("Wert von wlan_connect == %d", wlan_connect(0, (char *) pcSsid, ulSsidLen, NULL, NULL, 0));
11
12
//    wlan_connect(0, (char *) pcSsid, ulSsidLen, NULL, NULL, 0);
13
    break;

Damit sage ich dem Modul mit welchem Netz es sich verbinden soll.

Danach gebe ich "8c0a82bd2c0a82b01" ein

Dieser steht äquivalent zu:

192.168.43.210
192.168.43.01

Wenn ich nun den Befehl eingebe (siehe Anhang), dann komme ich zwar in 
das Case Statement, aber ich sehe nicht, dass sich das Modul ins Netz 
einloggt. Mein Notebook ist ebenfalls im Hot Spot Netz und ich lasse das 
Wireshark laufen. Leider zeigt es mir die IP Adresse des Moduls nicht an 
wenn ich den Befehl ausführe/debugge. Daher gehe ich davon aus, dass der 
Verbindungsaufbau nicht stattgefunden hat.
1
case UART_COMMAND_IP_CONFIG:
2
    rs232_printf("\n\n0x38 angekommen\n\n");
3
    //
4
    // Network mask is assumed to be 255.255.255.0
5
    //
6
    pucSubnetMask[0] = 0xFF;
7
    pucSubnetMask[1] = 0xFF;
8
    pucSubnetMask[2] = 0xFF;
9
    pucSubnetMask[3] = 0x0;
10
11
    pucIP_Addr[0] = ascii_to_char(usBuffer[2], usBuffer[3]);
12
    pucIP_Addr[1] = ascii_to_char(usBuffer[4], usBuffer[5]);
13
    pucIP_Addr[2] = ascii_to_char(usBuffer[6], usBuffer[7]);
14
    pucIP_Addr[3] = ascii_to_char(usBuffer[8], usBuffer[9]);
15
16
    pucIP_DefaultGWAddr[0] = ascii_to_char(usBuffer[10], usBuffer[11]);
17
    pucIP_DefaultGWAddr[1] = ascii_to_char(usBuffer[12], usBuffer[13]);
18
    pucIP_DefaultGWAddr[2] = ascii_to_char(usBuffer[14], usBuffer[15]);
19
    pucIP_DefaultGWAddr[3] = ascii_to_char(usBuffer[16], usBuffer[17]);
20
    //
21
    // Currently no implementation of DHCP in hte demo
22
    //
23
    pucDNS[0] = 0;
24
    pucDNS[1] = 0;
25
    pucDNS[2] = 0;
26
    pucDNS[3] = 0;
27
28
    rs232_printf("String == %s\n", usBuffer);
29
30
    netapp_dhcp((unsigned long *) pucIP_Addr,
31
        (unsigned long *) pucSubnetMask,
32
        (unsigned long *) pucIP_DefaultGWAddr,
33
        (unsigned long *) pucDNS);
34
35
    break;
36
    //
37
    // Handle WLAN disconnect command
38
    //
39
  case UART_COMMAND_CC3000_DISCONNECT:
40
    rs232_printf("\n\n0x39 angekommen\n\nwlan_disconnect\n");
41
    wlan_disconnect();
42
    break;

Woran könnte das liegen? Ich lasse bewusst die StartSmartConfig() 
Funktion aus, da sich diese automatisch mit einem für sie vorgesehenen 
IP Verbinden will. Daher rufe ich die wlan_connect(...) Funktion selber 
auf und sage dem Modul welches Netz (ssid) und die Länge. Im 2. Schritt 
übergebe ich die IP Adresse, Wireshark zeigt mir trotzdem kein WiFi 
Modul an.

Hat sich schon jemand mit dem befasst? Ich wäre sehr dankbar, wenn mir 
eine/r einen kleinen Tipp geben könnte...

glg F.S.

von F. S. (de0_board)


Lesenswert?

Ich hab mich nun weiter gespielt.
1
//************************** MY PROGRAM ******************************
2
3
  //IP Address 192.168.43.210
4
5
  pucSubnetMask[0] = 0xFF;
6
  pucSubnetMask[1] = 0xFF;
7
  pucSubnetMask[2] = 0xFF;
8
  pucSubnetMask[3] = 0x0;
9
10
  pucIP_Addr[0] = 192;
11
  pucIP_Addr[1] = 168;
12
  pucIP_Addr[2] = 43;
13
  pucIP_Addr[3] = 210;
14
15
  pucIP_DefaultGWAddr[0] = 192;
16
  pucIP_DefaultGWAddr[1] = 168;
17
  pucIP_DefaultGWAddr[2] = 43;
18
  pucIP_DefaultGWAddr[3] = 1;
19
  //
20
  // Currently no implementation of DHCP in hte demo
21
  //
22
  pucDNS[0] = 0;
23
  pucDNS[1] = 0;
24
  pucDNS[2] = 0;
25
  pucDNS[3] = 0;
26
27
  rs232_printf("IP == %d\n", pucIP_Addr[0]);
28
  rs232_printf("IP == %d\n", pucIP_Addr[1]);
29
  rs232_printf("IP == %d\n", pucIP_Addr[2]);
30
  rs232_printf("IP == %d\n", pucIP_Addr[3]);
31
32
  netapp_dhcp((unsigned long *) pucIP_Addr, (unsigned long *) pucSubnetMask,
33
      (unsigned long *) pucIP_DefaultGWAddr, (unsigned long *) pucDNS);
34
35
  //Connect to WLAN
36
37
  ulSsidLen2 = 0x04;
38
  pcSsid2 = "fadi";
39
40
  rs232_printf("Wert von wlan_connect == %d\n",
41
      wlan_connect(0, (char *) pcSsid2, ulSsidLen2, NULL, NULL, 0));
42
43
  while ((ulCC3000DHCP == 0) || (ulCC3000Connected == 0))
44
  {
45
    __delay_cycles(1000);
46
  }
47
48
  //Opening the Socket
49
50
  ulSocket2 = socket(AF_INET, SOCK_STREAM, IPPROTO_UDP);
51
  if (ulSocket2 < 0)
52
  {
53
    rs232_printf("Error in Socket deskriptor\n");
54
  }
55
//  memset(&tSocketAddr, 0, sizeof(sockaddr));
56
57
  // TODO REVEIVE UDP DATA**********************************************************
58
  memset(tSocketAddr.sa_data, 0, sizeof(sockaddr));
59
  tSocketAddr.sa_family = AF_INET;
60
  tSocketAddr.sa_data[0] = 15;
61
  tSocketAddr.sa_data[1] = 01;
62
63
//  rs232_printf("\nbind = %d\n",
64
//      bind(ulSocket2, (sockaddr*) &socketAddr, sizeof(sockaddr)));
65
66
  if (bind(ulSocket2, &tSocketAddr, sizeof(sockaddr)) != 0)
67
  {
68
    rs232_printf("Bind connection FAILED== %d\n");
69
  }
70
71
  sockLen = sizeof(sockaddr);
72
  rs232_printf("sockLen = %d\n", sockLen);
73
74
  //call recvfrom
75
  ReturnValue = recvfrom(ulSocket2, pucCC3000_Rx_Buffer,
76
      CC3000_RX_BUFFER_SIZE, 0, &tSocketAddr, &tRxPacketLength);
77
  //  ReturnValue = recvfrom(ulSocket2, pucCC3000_Rx_Buffer,
78
  //      CC3000_RX_BUFFER_SIZE, 0, (sockaddr*) &from, &tRxPacketLength);
79
  rs232_printf("ReturnValue = %d\nnow printing packet\n", ReturnValue);
80
  //print buffer
81
  DispatcherUartSendPacket(pucCC3000_Rx_Buffer, ReturnValue);
82
  rs232_printf("\nBuffer = %a\n", tSocketAddr.sa_data);

Ich bin mir nicht sicher woran es noch liegt. Ich kann Daten aus dem 
Modul empfangen, aber leider keine UDP Packte empfangen. Das Programm 
hängt nachdem ich die recvfrom() aufrufe. Liegt es vlt am UDP Code? Ist 
was allgemein am UDP falsch?


Ich habe lange recherchiert und es scheint da ganz ganz viele 
Schwierigkeiten mit diesem Modul allgemein zu geben, nur ganz wenige 
Lösungen dazu...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.