Tato třída slouží k využití sériového rozhraní a komunikaci po sériové lince. Ke komunikaci jsou zapotřebí dva piny - RX(recieve data) a TX(transfer data).
#include"byzance.h"Serialpc(X09,X11);voidinit(){pc.baud(9600); //Nastavení baudové rychlostipc.printf("Serial connection\n"); //Send to serial line}voidloop(){pc.printf("Hello world\n");}
Komunikace pomoc SPI (Serial Peripheral Interface), rozlišuje komunikační prvky na Mastra a jeho podřízené jednotky - Slave. Každý Master může obsluhovat několik Slavů tím způsobem, že vyzve jednotku ke komunikaci přepnutím příslušného pinu SS (Slave select) do logické nuly a vyslání dotazu (Bytu). Jednotka Slave poté na tento dotaz odpovídá zpátky. Po ukončení komunikace Master přepne pin SS zpět do logické jedničky. Jednotka Slave nikdy neodesílá žádná data bez výzvy a Master vždy může komunikovat pouze s jedním Slavem najednou. Pro každý Slave má Master jeden příslušný digitální pin SS. Komunikační protokol je blíže vysvětlený například na Wiki.
Příklad demonstruje využití sběrnice SPI pro čtení WHOAMI registru ze zařízení připojeného na sběrnici SPI na X konektoru.
#include"byzance.h"Serialpc(SERIAL_TX,SERIAL_RX); //For USB use: USBSerial pc(0x1f00, 0x2012, 0x0001, false); //SPIspi(X14,X12,X10); // mosi, miso, sclkDigitalOutss0(X08); // Slave 0 select pin (Sometimes called CS - Chip Select)voidinit(){spi.format(8,3); // 8 bits, high steady state clock, second edge capturespi.frequency(1000000); // Set clk frequency to 1 MHz}voidloop(){ ss0 =0; // Select the device by seting chip select lowint whoami =spi.write(0x00); // Send dummy byte to Slave and save received data ss0 =1; // Deselect devicepc.printf("WHOAMI register = 0x%X\n", whoami); //Print the result Thread::wait(1000);}
Příklad programu, který reaguje na přijatá data od SPI Mastera přičtením jedničky k přijatému Bytu
#include"byzance.h"Serialpc(SERIAL_TX,SERIAL_RX);SPISlavedevice(X14,X12,X10,X08); // mosi, miso, scl, ss (or CS - Chip select)voidinit(){pc.baud(115200);}voidloop(){ // React if master send you a messageif(device.receive()) {uint8_t v =device.read(); // Read byte from masterpc.printf("Byte 0x%X recieved\n",v); // Print itdevice.reply(v+1); // Add one to received message and reply with it }}