Stap 7: Programmering stap 1: SPI UART
De aanbevolen onderdelen van het schild zijn:
- een netwerk van Roving RN - 131G draadloze module
- SC16IS750 SPI-naar-UART-chip.
Serial Peripheral Interface Bus (of SPI) is een "vier wire" seriële bus geschikt voor hoge tarieven van de gegevensoverdracht. Een seriële bus kan gegevens worden verzonden serieel (synchroon), dat wil zeggen een beetje op een moment, in plaats van parallel (asynchroon)
De Universal asynchronous receiver transmitter (of UART) is een type van asynchrone ontvanger/zender, een stuk van computerhardware die vertaalt data tussen parallelle en seriële vormen.
- De PC communiceert via UART met de Arduino via PIN RX en TX
- De Arduino communiceert via SPI met de SPI-UART-chip op de WiFly schild (SC16IS750 SPI-naar-UART-chip) wel pinnen 10-13 (CS MOSI, MISO, SCLK respectievelijk)
- De RN - 131G draadloze module via toegang krijgt tot netwerk- en verzend-/ ontvangstbewerking seriële data UART.
De SPI-naar-UART bridge wordt gebruikt om te voorzien in snellere transmissie snelheid en vrijmaken van de Arduino's UART.
De onderstaande code is gebaseerd op een aantal bronnen, maar hoofdzakelijk uit deze tutorial over op sparkfun:
www.Sparkfun.com/commerce/tutorial_info.php
WiFly Wireless praten SpeakJet Server
/ * Testen als de SPI <> - UART bridge correct opgezet door het schrijven van een karakter van de test via SPI en het terug te lezen. geeft als resultaat true als succes * / boolWiFly::TestSPI_UART_Bridge() {/ / lezen/schrijven testen om te controleren of SPI <> - UART bridge werkt uitvoeren / / schrijf een teken naar het Kladblok-register. WriteByteToRegister (SPR, 0x55); chardata = ReadCharFromWiFly(SPR); if(Data == 0x55) {returntrue; } else {m_printer -> println ("Failed to init SPI <>-UART-chip"); returnfalse; }} / * Een reeks van register schrijft voor het initialiseren van de SC16IS750 SPI-UART bridge chip Zie http://www.tinyclr.com/downloads/Shield/FEZ_Shields_WiFly.cs * / voidWiFly::SPI_UART_Init(void) {WriteByteToRegister(LCR,0x80); / / 0x80 te programma baudrate WriteByteToRegister (DLL, SPI_Uart_config. DivL); 0x50 = 9600 met Xtal = 12.288 MHz WriteByteToRegister(DLM,SPI_Uart_config. DivM); WriteByteToRegister (LCR, 0xBF); toegang tot EFR register WriteByteToRegister (EFR, SPI_Uart_config. Flow); inschakelen verbeterd registreert WriteByteToRegister (LCR, SPI_Uart_config. DataFormat); 8 data bits, 1 stop bit, geen pariteit WriteByteToRegister (FCR, 0x06); reset van de TXFIFO, RXFIFO, reset niet FIFO modus WriteByteToRegister (FCR, 0x01); FIFO-modus inschakelen}