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.

关于无线模块和单片机的关系

最近在做一个医疗产品的电路板,有一个无线模块和一个Avr单片机,过程是先烧录无线模块,再烧录单片机,单片机先烧熔丝,然后再烧flash,有时候搜不到信号(WiFi),重新烧写一下单片机就好了,我想知道,单片机到底控制了无线模块的什么呢?因为程序是别人写的,所以不太明白。

  • 建议联系你的那个模块的厂家吧,这个不好推测,看起来应该操作的是AP mode。

    //****************************************************************************
    //
    //!    \brief start simplelink, wait for the sta to connect to the device and 
    //!        run the ping test for that sta
    //!
    //!    \param  pvparameters is the pointer to the list of parameters that can be
    //!         passed to the task while creating it
    //!
    //!    \return None
    //
    //****************************************************************************
    void WlanAPMode( void *pvParameters )
    {   
        int iTestResult = 0;
        unsigned char ucDHCP;
        long lRetVal = -1;
    
        InitializeAppVariables();
    
        //
        // Following function configure the device to default state by cleaning
        // the persistent settings stored in NVMEM (viz. connection profiles &
        // policies, power policy etc)
        //
        // Applications may choose to skip this step if the developer is sure
        // that the device is in its default state at start of applicaton
        //
        // Note that all profiles and persistent settings that were done on the
        // device will be lost
        //
        lRetVal = ConfigureSimpleLinkToDefaultState();
        if(lRetVal < 0)
        {
            if (DEVICE_NOT_IN_STATION_MODE == lRetVal)
                UART_PRINT("Failed to configure the device in its default state \n\r");
    
            LOOP_FOREVER();
        }
    
        UART_PRINT("Device is configured in default state \n\r");
    
        //
        // Asumption is that the device is configured in station mode already
        // and it is in its default state
        //
        lRetVal = sl_Start(NULL,NULL,NULL);
    
        if (lRetVal < 0)
        {
            UART_PRINT("Failed to start the device \n\r");
            LOOP_FOREVER();
        }
    
        UART_PRINT("Device started as STATION \n\r");
        
        //
        // Configure the networking mode and ssid name(for AP mode)
        //
        if(lRetVal != ROLE_AP)
        {
            if(ConfigureMode(lRetVal) != ROLE_AP)
            {
                UART_PRINT("Unable to set AP mode, exiting Application...\n\r");
                sl_Stop(SL_STOP_TIMEOUT);
                LOOP_FOREVER();
            }
        }
    
        while(!IS_IP_ACQUIRED(g_ulStatus))
        {
          //looping till ip is acquired
        }
    
        unsigned char len = sizeof(SlNetCfgIpV4Args_t);
        SlNetCfgIpV4Args_t ipV4 = {0};
    
        // get network configuration
        lRetVal = sl_NetCfgGet(SL_IPV4_AP_P2P_GO_GET_INFO,&ucDHCP,&len,
                                (unsigned char *)&ipV4);
        if (lRetVal < 0)
        {
            UART_PRINT("Failed to get network configuration \n\r");
            LOOP_FOREVER();
        }
        
        UART_PRINT("Connect a client to Device\n\r");
        while(!IS_IP_LEASED(g_ulStatus))
        {
          //wating for the client to connect
        }
        UART_PRINT("Client is connected to Device\n\r");
    
        iTestResult = PingTest(g_ulStaIp);
        if(iTestResult < 0)
        {
            UART_PRINT("Ping to client failed \n\r");
        }
    
        UNUSED(ucDHCP);
        UNUSED(iTestResult);
    
        // revert to STA mode
        lRetVal = sl_WlanSetMode(ROLE_STA);
        if(lRetVal < 0)
        {
          ERR_PRINT(lRetVal);
          LOOP_FOREVER();
        }
    
        // Switch off Network processor
        lRetVal = sl_Stop(SL_STOP_TIMEOUT);
        UART_PRINT("WLAN AP example executed successfully");
        while(1);
    }

  • 很多年前学单片机时候用过AVR,好像是烧录完flash后,可以烧断熔丝,保护内部的代码。单片机是通过通信接口比如串口或者SPI,IIC等这些接口跟无线模块通信,无线模块充当了一个传话人的角色。