This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC3200: SDK 1.2.0, Connection to WLAN AP and sending data via HTTP - standalone application WITHOUT host

Part Number: CC3200
Other Parts Discussed in Thread: CC3100

We try to use the CC3200 for an application WITHOUT host. The intention is to read sensors and send the values to a server via HTTP.
This appears to be very complicated:
Many functions of the CC3200 device require a host to respond. For example sl_start(0,0,0) leads to a message to the host (via SPI or UART) and will wait forever for the answer of the host.
We have already mimicked a simple response from the host, so we could satisfy part of the initialization. But the host seems to be fairly deeply integrated and needs to provide intimate data to the CC3200 device.

It seems to be very complicated to integrate part of the host functions into the CC3200 device.

Therefore the question:
What is the simplest way of building a standalone application for the CC3200 which is able to connect to a WLAN AP and send data via HTTP, please?

Thanks you very much in advance and wish you all the best.

  • Hello,

    Can you be alittle more specific on what you mean by the host? The CC3200 has a Network Processor that handles all the Wi-Fi and networking needs.

    The simplest way to implement a HTTP application is to use the HTTP client or server example located in our SDK:
    www.ti.com/.../cc3200sdk

    Let me know if you have any questions.

    Vince Rodriguez
  • Dear Vince,

    Thank you very much for your quick response. Here more information:


    I am aware that the CC3200 consists of two processors: The main ARM core and the Network Processor (NWP).
    But there is a third processor involved, much less obvious: the SimpleLink framework expects a "Host" processor, which is connected to the CC3200 via UART or SPI.

    I've consulted the HTTP client example before and have already a version running quite well on the CC3200-LAUNCHXL (connected via USB to a PC - so the UART communication with the host is possible). When implementing the program on the real hardware this problem came out. Then I've analysed the appropriate libraries and tried to use the HTTP client example WITHOUT any connection to a host via UART or SPI. But this seems to be ridiculous complex: Almost all steps from the CC3200 are reported to the host (via UART or SPI). This would not be a problem, but the SimpleLink framework on the CC3200 requires an answer. The answer is not just "OK" or "NOT OK", but contains administrative information, like some information about a socket about to be opened (not documented).

    I do not believe that the protocol between host and CC3200 is documented (other than a very high level protocol info).

    Most of the code is only very scarcely commented and I've already spent quite a bit of time in reverse engineering and documenting for myself, even with help of my colleague.

    So, currently we have two options:
    a) Analyze the hard way all the functions of the SimpleLink framework which run on the host, track all the communication and hard wire it on the CC3200.
    b) Have the "Host" part run on the CC3200. Either use
        - a special serial driver which calls the host functions or
        - use two UARTs on the CC3200, loop them back externally and have the CC3200 talk to itself.

    Both is ridiculous complex.

    So, that's why I would very much like to know whether there is a simple(r) way of using the CC3200 without a host connected via UART or SPI..

    Thank you very much in advance and best regards,  

    Developer
  • Hi Radmila,

    I am very confused from description of your application. CC3200 does not require definitely another host processor. Host processor is mandatory for CC3100 not for CC3200.

    CC3200 contains two ARM cores. Cortex-M4 for execution of your code (application processor) and Cortex-M3 which runs TI proprietary firmware from ROM patched by ServicePack. This Cortex-M3 is called Network Processor (NWP). If you don't want use application processor in CC3200, you should select CC3100.

    Communication between application processor and NWP is done via 20MHz SPI on chip. At application processor is a SimpleLink (or host) driver. This lightweight driver translates SPI communication to sl_ API calls. And this sl_ API you use for all communication with NWP.

    ... but just according your name, if you want avoid any misunderstanding you can use Czech language to communicate with me.

    Jan
  • Hi Jan,

    Thank you very much for your quick response! I am very glad to hear from Czech Republic:-) (in Czech below)

    There might be some misunderstanding, I'm aware of what you describe.
    We have chosen the CC3200 because it has these two processors and can be used stand alone (doesn't need any extern host actually). The thing I am pointing at is just, that the SimpleLink driver runs on the CC3200 application processor (Cortex-4) and expects a SimpleLink host (waiting in loops for messages from host). But this expected host - in the examples - is actually NOT the CC3200, but for example a (Windows) PC in case of the Launchpad. This is not really clear before a deeper investigation of the library, resp. stepping through it.. (the code functioning on the CC3200 LaunchPad (connected to a Windows PC via UART) then doesn't work on other hardware.. waiting in vain for these messages.. )

    So for use without (Windows) PC we need a piece of Software analog to the SimpleLink driver in order to communicate with the NWP processor, which runs completely directly on the CC3200 application processor so that it can communicate with NWP on its own. As far as I know there is no specific documentation of the appropriate protocol for the communication with the NWP.

    Before I start to program it myself with help of reverse engineering and debugging of the messages in the example I wanted to ask if there is something we have overseen, some example for this stand alone usage.., or at least some documentation of the instructions for the NWP processor.

    To avoid any misunderstandings: The Launchpad (SDK 1.2.0.) examples use three processors:
    a) The network processor NWP (Cortex-3) inside the CC3200,
    b) The application processor (Cortex-4) inside the CC3200,
    c) The (Windows) PC connected via UART with the CC3200.
    I need to get rid of c).

    For example: The function sl_Start() on the CC3200 application processor is opening a serial communication to the (Windows) PC and only continues after the communication with the (Windows) PC has been established. It doesn't have to be Windows of course, I just wanted to emphasis that this is a "normal" PC.

    I appologize for misunderstandings if any. Thank you very much in advance for your time and effort.

    Thanks a lot and best regards,

    Radmila


    Pro jistotu ještě v češtině:-) :
    to bude nějaké nedorozumění. Toho jsem si vědoma. My jsme vybrali ten CC3200 právě proto, že má dva procesory a může proto být použit samostatně (nepotřebuje ke své funkci žádný další externí procesor - host). SimpleLink driver, který běží na CC3200 aplikačním procesoru (Cortex-4) se ale dožaduje komunikace se SimpleLink "host" (čeká na zprávy od "host"). Ten očekávaný Host - v příkladech - ale není implementován v CC3200, ale na příklad ve (Windows) PC - v případě kitu CC3200 - LAUNCHXL (komunikace přes UART). To není na první pohled zcela jasné. Až po hlubším studiu příkladu.., jeho debuggování. Software, který funguje na kitu, nefunguje na jiném Hardwaru, protože marně do nekonečna čeká na tyto zprávy od "host" - ty už ale najednou nejsou k dispozici.

    Takže pro použití bez (Windows) PC potřebujeme kousek Softwaru analogicky k SimpleLink driveru pro komunikaci s NWP, který ale poběží kompletně přímo na CC3200 aplikačním procesoru, aby tuto komunikaci s NWP mohl provozovat samostatně. Pokud je mi známo, není dostupná dokumentace příslušného protokolu.

    Než to tedy začnu programovat sama za pomoci "reverse engineering" a debuggování té komunikace mezi aplikačním procesorem a Windows PC v příkladu, chtěla jsem poprosit o informaci, jestli jsme něco přehlédli, nějaký příklad pro takovou samostatnou aplikaci na CC3200, nebo alespoň dokumentaci pokynů pro NWP procesor.

    Pro shrnutí:
    Příklady v SDK 1.2.0, které běží na kitu, používají tři procesory:
    a) Network Processor NWP (Cortex-3), který je součástí CC3200,
    b) Aplikační procesor (Cortex-4), který je hlavní součástí CC3200,
    c) (Windows) PC připojený přes UART s CC3200
    -> toho PC pod bodem C) se potřebuji zbavit.

    Na příklad: v příkladu http client-> funkce sl_Start() na aplikačním procesoru otevře sériovou komunikaci s (Windows) PC a pokračuje až poté, co bylo spojení navázáno.. Samozřejmě to nemusí být Windows PC, ale chtěla jsem zdůraznit, že se zde jedná o "normální PC.

    Omlouvám se za možná nedorozumění a předem mockrát děkuji,

    S přátelským pozdravem,
    Radmila
  • Zdravím,

    Informace o potřebě nějakého dalšího kódu běžícího na Windows nebo v dalším procesoru není pravdivá. Možná některé příklady v SDK používají interakci s uživatelem přes UART, ale toto jsou pouze příklady. Tato interakce není pro provoz CC3200 nezbytná. Byl jsem z Vašich dotazů zmaten, protože za více než za dva roky co jsem na tomto fóru nikoho toto ještě nenapadlo.

    Abych to tedy shrnul. Připojení k PC je pouze součást některých příkladů v SDK o nic jiného nejde. Upozornil bych však na jinou věc. Pokud se ve Vašem případě jedná o komerční projekt u kterého počítáte s dalším vývojem a životním cyklem, tak bych důrazně doporučil použít druhou generaci WiFi SoC - tj. CC3220(R,S,SF).

    Honza