Netduino home hardware projects downloads community

Jump to content


The Netduino forums have been replaced by new forums at community.wildernesslabs.co. This site has been preserved for archival purposes only and the ability to make new accounts or posts has been turned off.
Photo

Need a crash course in SPI

Netduino Plus NRF24L01 SPI

  • Please log in to reply
2 replies to this topic

#1 jpenny1993

jpenny1993

    New Member

  • Members
  • Pip
  • 2 posts

Posted 16 January 2014 - 02:58 PM

Hi, I'm new to SPI and don't really know much about it.

I have a couple of wireless modules NRF24L01, a Netduino Plus1, and a Fez Spider.

 

I'm Just trying to do the tutorial at the moment and can't seem to get very far.

http://wiki.netduino.com/SPI.ashx

I've followed the tutorial above and asked for help on the GHI forums. They told me how to wire my Spider but have now stopped responding to posts.

 

Using the demo code my Netduino responds with the number 28 repeatedly and my Spider acts relatively unpredictably.

I'm not sure If what I have done on one of the devices is wrong or on both is.

 

If anyone is willing to help I would be very grateful. 



#2 cys

cys

    Advanced Member

  • Members
  • PipPipPip
  • 113 posts
  • LocationSoCal

Posted 16 January 2014 - 07:35 PM

If you can post photos and code.

#3 jpenny1993

jpenny1993

    New Member

  • Members
  • Pip
  • 2 posts

Posted 19 January 2014 - 06:04 PM

Apologies if you have any trouble reading this. It's a lot to put into a single post.

 

The pin setup for the Netduino is as follows:

Netduino -> NRF
3V    -> VCC
GND  ->  GND
13 ->  SCK
12 ->  MISO
11 ->  MOSI
10 ->  CSN

 

My Netduino Code is currently this:

[color=#0000FF;][font="consolas;"]public[/color][/font] [color=#0000FF;][font="consolas;"]class[/color][/font] [color=#2b91af;][font="consolas;"]Program[/color][/font]

[font="consolas;"]{[/font]

  [color=#0000FF;][font="consolas;"]private[/color][/font] [color=#0000FF;][font="consolas;"]static[/color][/font] [color=#2b91af;][font="consolas;"]SPI[/color][/font][font="consolas;"] SPIBus;[/font]

  [color=#0000FF;][font="consolas;"]private[/color][/font] [color=#0000FF;][font="consolas;"]static[/color][/font] [color=#2b91af;][font="consolas;"]SPI[/color][/font][font="consolas;"].[/font][color=#2b91af;][font="consolas;"]Configuration[/color][/font][font="consolas;"] Device1;[/font]

 

  [color=#0000FF;][font="consolas;"]public[/color][/font] [color=#0000FF;][font="consolas;"]static[/color][/font] [color=#0000FF;][font="consolas;"]void[/color][/font][font="consolas;"] Main()[/font]

[font="consolas;"]   {[/font]

[color=#2b91af;][font="consolas;"] Debug[/color][/font][font="consolas;"].Print([/font][color=#a31515;][font="consolas;"]"Program Started"[/color][/font][font="consolas;"]);[/font]

 

[font="consolas;"]   setup();[/font]

 

  [color=#0000FF;][font="consolas;"]while[/color][/font][font="consolas;"] ([/font][color=#0000FF;][font="consolas;"]true[/color][/font][font="consolas;"])[/font]

[font="consolas;"]   {[/font]

[font="consolas;"]   read();[/font]

[font="consolas;"]   write();[/font]

  [color=#2b91af;][font="consolas;"]Thread[/color][/font][font="consolas;"].Sleep(500);[/font]

[font="consolas;"]   }[/font]

 

[font="consolas;"]   }[/font]

 

  [color=#0000FF;][font="consolas;"]public[/color][/font] [color=#0000FF;][font="consolas;"]static[/color][/font] [color=#0000FF;][font="consolas;"]void[/color][/font][font="consolas;"] setup()[/font]

[font="consolas;"]   {[/font]

 

  [color=#008000;][font="consolas;"]// Defines the first SPI slave device with pin 10 as SS[/color][/font]

[font="consolas;"]   Device1 = [/font][color=#0000FF;][font="consolas;"]new[/color][/font] [color=#2b91af;][font="consolas;"]SPI[/color][/font][font="consolas;"].[/font][color=#2b91af;][font="consolas;"]Configuration[/color][/font][font="consolas;"]([/font]

  [color=#2b91af;][font="consolas;"]Pins[/color][/font][font="consolas;"].GPIO_PIN_D10, [/font][color=#008000;][font="consolas;"]// SS-pin[/color][/font]

  [color=#0000FF;][font="consolas;"]false[/color][/font][font="consolas;"], [/font][color=#008000;][font="consolas;"]// SS-pin active state[/color][/font]

[font="consolas;"]  0, [/font][color=#008000;][font="consolas;"]// The setup time for the SS port[/color][/font]

[font="consolas;"] 0, [/font][color=#008000;][font="consolas;"]// The hold time for the SS port[/color][/font]

  [color=#0000FF;][font="consolas;"]true[/color][/font][font="consolas;"],   [/font][color=#008000;][font="consolas;"]// The idle state of the clock[/color][/font]

  [color=#0000FF;][font="consolas;"]false[/color][/font][font="consolas;"], [/font][color=#008000;][font="consolas;"]// The sampling clock edge[/color][/font]

[font="consolas;"]   1000,   [/font][color=#008000;][font="consolas;"]// The SPI clock rate in KHz[/color][/font]

[color=#2b91af;][font="consolas;"]SPI_Devices[/color][/font][font="consolas;"].SPI1 [/font][color=#008000;][font="consolas;"]// The used SPI bus (refers to a MOSI MISO and SCLK pinset)[/color][/font]

[font="consolas;"]   );[/font]

  [color=#008000;][font="consolas;"]// Initializes the SPI bus[/color][/font]

[font="consolas;"]   SPIBus = [/font][color=#0000FF;][font="consolas;"]new[/color][/font] [color=#2b91af;][font="consolas;"]SPI[/color][/font][font="consolas;"](Device1);[/font]

 

[font="consolas;"]   }[/font]

 

  [color=#0000FF;][font="consolas;"]public[/color][/font] [color=#0000FF;][font="consolas;"]static[/color][/font] [color=#0000FF;][font="consolas;"]void[/color][/font][font="consolas;"] read()[/font]

[font="consolas;"]   {[/font]

  [color=#0000FF;][font="consolas;"]byte[/color][/font][font="consolas;"][] WriteBuffer = [/font][color=#0000FF;][font="consolas;"]new[/color][/font] [color=#0000FF;][font="consolas;"]byte[/color][/font][font="consolas;"][1];[/font]

  [color=#0000FF;][font="consolas;"]byte[/color][/font][font="consolas;"][] ReadBuffer = [/font][color=#0000FF;][font="consolas;"]new[/color][/font] [color=#0000FF;][font="consolas;"]byte[/color][/font][font="consolas;"][1];[/font]

[font="consolas;"]   SPIBus.WriteRead(WriteBuffer, ReadBuffer);[/font]

  [color=#2b91af;][font="consolas;"]Debug[/color][/font][font="consolas;"].Print(ReadBuffer[0].ToString());[/font]

[font="consolas;"]   }[/font]

 

  [color=#0000FF;][font="consolas;"]public[/color][/font] [color=#0000FF;][font="consolas;"]static[/color][/font] [color=#0000FF;][font="consolas;"]void[/color][/font][font="consolas;"] write()[/font]

[font="consolas;"]   {[/font]

  [color=#0000FF;][font="consolas;"]byte[/color][/font][font="consolas;"][] WriteBuffer = [/font][color=#0000FF;][font="consolas;"]new[/color][/font] [color=#0000FF;][font="consolas;"]byte[/color][/font][font="consolas;"][1];[/font]

[font="consolas;"]   WriteBuffer[0] = 255;[/font]

[font="consolas;"]   SPIBus.Write(WriteBuffer); [/font]

[font="consolas;"]   }[/font]

[font="consolas;"]}[/font]

 

The pin setup for the Spider is as follows:

Spider -> NRF
3V    -> VCC
GND  ->  GND
P3 ->  IRQ
P4 ->  CE
P6 ->  CSN
P7 ->  MOSI
P8 ->  MISO
P9 ->  SCK

 

My Gadgeteer code is currently this:

[color=#0000FF;][font="consolas;"]public[/color][/font] [color=#0000FF;][font="consolas;"]partial[/color][/font] [color=#0000FF;][font="consolas;"]class[/color][/font] [color=#2b91af;][font="consolas;"]Program[/color][/font]

[font="consolas;"]{[/font]

  [color=#0000FF;][font="consolas;"]private[/color][/font] [color=#0000FF;][font="consolas;"]static[/color][/font] [color=#2b91af;][font="consolas;"]SPI[/color][/font][font="consolas;"] SPIBus;[/font]

  [color=#0000FF;][font="consolas;"]private[/color][/font] [color=#0000FF;][font="consolas;"]static[/color][/font] [color=#2b91af;][font="consolas;"]SPI[/color][/font][font="consolas;"].[/font][color=#2b91af;][font="consolas;"]Configuration[/color][/font][font="consolas;"] Device1;[/font]

 

  [color=#0000FF;][font="consolas;"]void[/color][/font][font="consolas;"] ProgramStarted()[/font]

[font="consolas;"]   {[/font]

  [color=#2b91af;][font="consolas;"]Debug[/color][/font][font="consolas;"].Print([/font][color=#a31515;][font="consolas;"]"Program Started"[/color][/font][font="consolas;"]);[/font]

 

[font="consolas;"]   GT.[/font][color=#2b91af;][font="consolas;"]Timer[/color][/font][font="consolas;"] timer = [/font][color=#0000FF;][font="consolas;"]new[/color][/font][font="consolas;"] GT.[/font][color=#2b91af;][font="consolas;"]Timer[/color][/font][font="consolas;"](500); [/font][color=#008000;][font="consolas;"]// every second (1/2 seocnds)[/color][/font]

[font="consolas;"]   timer.Tick += [/font][color=#0000FF;][font="consolas;"]new[/color][/font][font="consolas;"] GT.[/font][color=#2b91af;][font="consolas;"]Timer[/color][/font][font="consolas;"].[/font][color=#2b91af;][font="consolas;"]TickEventHandler[/color][/font][font="consolas;"](Run);[/font]

[font="consolas;"]   setup();[/font]

[font="consolas;"]   timer.Start();[/font]

[font="consolas;"]   }[/font]

 

  [color=#0000FF;][font="consolas;"]public[/color][/font] [color=#0000FF;][font="consolas;"]void[/color][/font][font="consolas;"] Run(GT.[/font][color=#2b91af;][font="consolas;"]Timer[/color][/font][font="consolas;"] timer)[/font]

[font="consolas;"]   {[/font]

[font="consolas;"]   read();[/font]

[font="consolas;"]   write();[/font]

[font="consolas;"]   }[/font]

 

  [color=#0000FF;][font="consolas;"]public[/color][/font] [color=#0000FF;][font="consolas;"]static[/color][/font] [color=#0000FF;][font="consolas;"]void[/color][/font][font="consolas;"] setup()[/font]

[font="consolas;"]   {[/font]

 

[font="consolas;"]   Device1 = [/font][color=#0000FF;][font="consolas;"]new[/color][/font] [color=#2b91af;][font="consolas;"]SPI[/color][/font][font="consolas;"].[/font][color=#2b91af;][font="consolas;"]Configuration[/color][/font][font="consolas;"] (  [/font]

[color=#2b91af;][font="consolas;"]Cpu[/color][/font][font="consolas;"].[/font][color=#2b91af;][font="consolas;"]Pin[/color][/font][font="consolas;"].GPIO_Pin6,[/font]

  [color=#0000FF;][font="consolas;"]false[/color][/font][font="consolas;"],[/font]

[font="consolas;"]   0,[/font]

[font="consolas;"]   0,[/font]

  [color=#0000FF;][font="consolas;"]true[/color][/font][font="consolas;"],[/font]

  [color=#0000FF;][font="consolas;"]false[/color][/font][font="consolas;"],[/font]

[font="consolas;"]   1000,[/font]

  [color=#2b91af;][font="consolas;"]SPI[/color][/font][font="consolas;"].[/font][color=#2b91af;][font="consolas;"]SPI_module[/color][/font][font="consolas;"].SPI1[/font]

[font="consolas;"]   );[/font]

 

[font="consolas;"]   SPIBus = [/font][color=#0000FF;][font="consolas;"]new[/color][/font] [color=#2b91af;][font="consolas;"]SPI[/color][/font][font="consolas;"](Device1);[/font]

 

  [color=#008000;][font="consolas;"]// accessing device A[/color][/font]

[font="consolas;"]   SPIBus.Config = Device1;[/font]

[font="consolas;"]   }[/font]

 

  [color=#0000FF;][font="consolas;"]public[/color][/font] [color=#0000FF;][font="consolas;"]static[/color][/font] [color=#0000FF;][font="consolas;"]void[/color][/font][font="consolas;"] read()[/font]

[font="consolas;"]   {[/font]

  [color=#0000FF;][font="consolas;"]byte[/color][/font][font="consolas;"][] WriteBuffer = [/font][color=#0000FF;][font="consolas;"]new[/color][/font] [color=#0000FF;][font="consolas;"]byte[/color][/font][font="consolas;"][1];[/font]

  [color=#0000FF;][font="consolas;"]byte[/color][/font][font="consolas;"][] ReadBuffer = [/font][color=#0000FF;][font="consolas;"]new[/color][/font] [color=#0000FF;][font="consolas;"]byte[/color][/font][font="consolas;"][1];[/font]

[font="consolas;"]   SPIBus.WriteRead(WriteBuffer, ReadBuffer);[/font]

  [color=#2b91af;][font="consolas;"]Debug[/color][/font][font="consolas;"].Print(ReadBuffer[0].ToString());[/font]

[font="consolas;"]   }[/font]

 

  [color=#0000FF;][font="consolas;"]public[/color][/font] [color=#0000FF;][font="consolas;"]static[/color][/font] [color=#0000FF;][font="consolas;"]void[/color][/font][font="consolas;"] write()[/font]

[font="consolas;"]   {[/font]

  [color=#0000FF;][font="consolas;"]byte[/color][/font][font="consolas;"][] WriteBuffer = [/font][color=#0000FF;][font="consolas;"]new[/color][/font] [color=#0000FF;][font="consolas;"]byte[/color][/font][font="consolas;"][1];[/font]

[font="consolas;"]   WriteBuffer[0] = 222;[/font]

[font="consolas;"]   SPIBus.Write(WriteBuffer);[/font]

[font="consolas;"]   }[/font]

[font="consolas;"]}[/font]







Also tagged with one or more of these keywords: Netduino Plus, NRF24L01, SPI

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

home    hardware    projects    downloads    community    where to buy    contact Copyright © 2016 Wilderness Labs Inc.  |  Legal   |   CC BY-SA
This webpage is licensed under a Creative Commons Attribution-ShareAlike License.