mirror of
https://github.com/esp8266/Arduino.git
synced 2025-07-30 16:24:09 +03:00
SPI library to the new format and moved Robot_Motor and Robot_Control libraries
This commit is contained in:
69
libraries/SPI/arch/sam/SPI_Class.h
Normal file
69
libraries/SPI/arch/sam/SPI_Class.h
Normal file
@ -0,0 +1,69 @@
|
||||
/*
|
||||
* Copyright (c) 2010 by Cristian Maglie <c.maglie@bug.st>
|
||||
* SPI Master library for arduino.
|
||||
*
|
||||
* This file is free software; you can redistribute it and/or modify
|
||||
* it under the terms of either the GNU General Public License version 2
|
||||
* or the GNU Lesser General Public License version 2.1, both as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef _SPI_H_INCLUDED
|
||||
#define _SPI_H_INCLUDED
|
||||
|
||||
#include "variant.h"
|
||||
#include <stdio.h>
|
||||
|
||||
#define SPI_MODE0 0x02
|
||||
#define SPI_MODE1 0x00
|
||||
#define SPI_MODE2 0x03
|
||||
#define SPI_MODE3 0x01
|
||||
|
||||
enum SPITransferMode {
|
||||
SPI_CONTINUE,
|
||||
SPI_LAST
|
||||
};
|
||||
|
||||
class SPIClass {
|
||||
public:
|
||||
SPIClass(Spi *_spi, uint32_t _id, void(*_initCb)(void));
|
||||
|
||||
byte transfer(uint8_t _data, SPITransferMode _mode = SPI_LAST) { return transfer(BOARD_SPI_DEFAULT_SS, _data, _mode); }
|
||||
byte transfer(byte _channel, uint8_t _data, SPITransferMode _mode = SPI_LAST);
|
||||
|
||||
// SPI Configuration methods
|
||||
|
||||
void attachInterrupt(void);
|
||||
void detachInterrupt(void);
|
||||
|
||||
void begin(void);
|
||||
void end(void);
|
||||
|
||||
// Attach/Detach pin to/from SPI controller
|
||||
void begin(uint8_t _pin);
|
||||
void end(uint8_t _pin);
|
||||
|
||||
// These methods sets a parameter on a single pin
|
||||
void setBitOrder(uint8_t _pin, BitOrder);
|
||||
void setDataMode(uint8_t _pin, uint8_t);
|
||||
void setClockDivider(uint8_t _pin, uint8_t);
|
||||
|
||||
// These methods sets the same parameters but on default pin BOARD_SPI_DEFAULT_SS
|
||||
void setBitOrder(BitOrder _order) { setBitOrder(BOARD_SPI_DEFAULT_SS, _order); };
|
||||
void setDataMode(uint8_t _mode) { setDataMode(BOARD_SPI_DEFAULT_SS, _mode); };
|
||||
void setClockDivider(uint8_t _div) { setClockDivider(BOARD_SPI_DEFAULT_SS, _div); };
|
||||
|
||||
private:
|
||||
Spi *spi;
|
||||
uint32_t id;
|
||||
BitOrder bitOrder[SPI_CHANNELS_NUM];
|
||||
uint32_t divider[SPI_CHANNELS_NUM];
|
||||
uint32_t mode[SPI_CHANNELS_NUM];
|
||||
void (*initCb)(void);
|
||||
};
|
||||
|
||||
#if SPI_INTERFACES_COUNT > 0
|
||||
extern SPIClass SPI;
|
||||
#endif
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user