MRF24WG0MA communication problem

Hey guys,

I want to build a wifi webserver with MRF24WG0MA wifi module and Arduino UNO. Connected modules with it as follows: SDI - MOSI (and pull up 4,7k) SDO - MISO SCK - SCK (and pull up 4,7k) !CS - GND HIBERNATE - GND !WP - GND !RESET - !RESET (and pull up 4,7k) !INT pin pull up 4,7k resistor, and not connected to Arduino. MRF +3,3V powered from Arduino. Regulated +5V to +3,3V with LM2937IMP-3,3N.

I used Asynclab WiShield library from github. Connect hardware to PC, and open a simple web server example. Configure IP, gateway, subnet mask and security type. Upload the sketch, and the wifi module is not working.

Modify my setup routine:

void setup()
    pinMode(5, OUTPUT);  
    pinMode(6, OUTPUT);  
    digitalWrite(6, HIGH);   // set the LED on
    digitalWrite(5, HIGH);   // set the LED on

After upload and start the program LED 6 is on, and I waiting for a long time, but LED 5 is not lighten up. I measured SPI bus with oscilloscope. SDI - MOSI wire measured square signal SDO - MISO constantly low SCK - SCK square signal

I tried two different MRF modules. Tested circuit Arduino UNO and Mega2560, but the problem is the same. What could be the problem?


If you solved the problam pls reply me: I have a same problem as yours.


Hello I got the PmodWfi shield ,I try to connect it with Arduino Uno to have a WebServer but this Wifi shield does'nt have many documentation.What's the library name ?and how can I connect this shield like a webServer?

hello Laci04 it seems like you are trying to use WIFI framework having ZeroG Wireless G2100 wifi chipset driver integrated and yours one is Microchip MRF24WG0MA/MB. I'm pretty sure, the internal registers set is completely different in between those two.

there is a driver (SPI based also) for the Microchip MRF24WG0MA/MB here. look under section "Downloads"

inside archive path: mla/v2014_07_22/framework/driver/wifi/mrf24w

you'll find a driver for this chipset, however, you'll have to alter

drv_wifi_spi.c to use Arduino SPI framework (AVR one) instead of embedded PIC one.

drv_wifi_com.c to use Arduino host interrupt registers instead PIC ones for 2 interrupts configuration and interrupt handling method.

and most important difference - Microchip implementation is not scheduler based, it tends to deliver data for the wifi card right at the moment the API being called, while the Arduino WiShield one is scheduler based and all transfers are postponed until the module readiness for the next packet to accept.

drv_wifi_data_tx_rx.c WF_TxDataSendPacket -> drv_wifi_raw.c RawSendTxBuffer ->RawMove ->WaitForRawMoveComplete ->while(1)