mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-17 22:23:10 +03:00
add CPHA support for SPI
- tested with logic analyzer
This commit is contained in:
@ -54,7 +54,7 @@ void SPIClass::begin() {
|
||||
pinMode(MISO, SPECIAL); ///< GPIO12
|
||||
pinMode(MOSI, SPECIAL); ///< GPIO13
|
||||
|
||||
GPMUX = 0x105; // note crash if spi flash Frequency < 40MHz
|
||||
GPMUX = 0x105; // note crash if SPI flash Frequency < 40MHz
|
||||
SPI1C = 0;
|
||||
setFrequency(1000000); ///< 1Mhz
|
||||
SPI1U = SPIUMOSI | SPIUDUPLEX | SPIUSSE;
|
||||
@ -78,7 +78,27 @@ void SPIClass::endTransaction() {
|
||||
}
|
||||
|
||||
void SPIClass::setDataMode(uint8_t dataMode) {
|
||||
// todo find way to set
|
||||
|
||||
/**
|
||||
SPI_MODE0 0x00 - CPOL: 0 CPHA: 0
|
||||
SPI_MODE1 0x01 - CPOL: 0 CPHA: 1
|
||||
SPI_MODE2 0x10 - CPOL: 1 CPHA: 0
|
||||
SPI_MODE3 0x11 - CPOL: 1 CPHA: 1
|
||||
*/
|
||||
|
||||
bool CPOL = (dataMode&0x10); ///< CPOL (Clock Polarity)
|
||||
bool CPHA = (dataMode&0x01); ///< CPHA (Clock Phase)
|
||||
|
||||
if(CPHA) {
|
||||
SPI1U |= (SPIUSME);
|
||||
} else {
|
||||
SPI1U &= ~(SPIUSME);
|
||||
}
|
||||
|
||||
if(CPOL) {
|
||||
//todo How set CPOL???
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void SPIClass::setBitOrder(uint8_t bitOrder) {
|
||||
|
@ -24,15 +24,10 @@
|
||||
#include <Arduino.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define FCPU80 80000000L
|
||||
|
||||
|
||||
|
||||
|
||||
const uint8_t SPI_MODE0 = 0x00;
|
||||
const uint8_t SPI_MODE1 = 0x04;
|
||||
const uint8_t SPI_MODE2 = 0x08;
|
||||
const uint8_t SPI_MODE3 = 0x0C;
|
||||
const uint8_t SPI_MODE0 = 0x00; ///< CPOL: 0 CPHA: 0
|
||||
const uint8_t SPI_MODE1 = 0x01; ///< CPOL: 0 CPHA: 1
|
||||
const uint8_t SPI_MODE2 = 0x10; ///< CPOL: 1 CPHA: 0
|
||||
const uint8_t SPI_MODE3 = 0x11; ///< CPOL: 1 CPHA: 1
|
||||
|
||||
class SPISettings {
|
||||
public:
|
||||
|
Reference in New Issue
Block a user