1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-06-16 11:21:18 +03:00

add CPHA support for SPI

- tested with logic analyzer
This commit is contained in:
Markus Sattler
2015-05-07 19:48:55 +02:00
parent 9ef39e3128
commit 3b798048a6
2 changed files with 26 additions and 11 deletions

View File

@ -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) {

View File

@ -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: