LPC176x: Expand HW SPI class
This commit is contained in:
parent
3b5dec4b13
commit
f38c81cdde
4 changed files with 25 additions and 7 deletions
|
@ -150,7 +150,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
void spiInit(uint8_t spiRate) {
|
void spiInit(uint8_t spiRate) {
|
||||||
|
SSP_Cmd(LPC_SSP0, DISABLE); // Disable SSP0 before changing rate
|
||||||
// table to convert Marlin spiRates (0-5 plus default) into bit rates
|
// table to convert Marlin spiRates (0-5 plus default) into bit rates
|
||||||
uint32_t Marlin_speed[7]; // CPSR is always 2
|
uint32_t Marlin_speed[7]; // CPSR is always 2
|
||||||
Marlin_speed[0] = 8333333; //(SCR: 2) desired: 8,000,000 actual: 8,333,333 +4.2% SPI_FULL_SPEED
|
Marlin_speed[0] = 8333333; //(SCR: 2) desired: 8,000,000 actual: 8,333,333 +4.2% SPI_FULL_SPEED
|
||||||
|
@ -242,6 +242,21 @@
|
||||||
|
|
||||||
void SPIClass::begin() { spiBegin(); }
|
void SPIClass::begin() { spiBegin(); }
|
||||||
|
|
||||||
|
void SPIClass::beginTransaction(SPISettings cfg) {
|
||||||
|
uint8_t spiRate;
|
||||||
|
switch(cfg.spiRate()) {
|
||||||
|
case 8000000: spiRate=0 ;break;
|
||||||
|
case 4000000: spiRate=1 ;break;
|
||||||
|
case 2000000: spiRate=2 ;break;
|
||||||
|
case 1000000: spiRate=3 ;break;
|
||||||
|
case 500000: spiRate=4 ;break;
|
||||||
|
case 250000: spiRate=5 ;break;
|
||||||
|
case 125000: spiRate=6 ;break;
|
||||||
|
default: spiRate=2; break;
|
||||||
|
}
|
||||||
|
spiInit(spiRate);
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t SPIClass::transfer(uint8_t B) {
|
uint8_t SPIClass::transfer(uint8_t B) {
|
||||||
return spiTransfer(B);
|
return spiTransfer(B);
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,9 +23,9 @@
|
||||||
#ifndef HARDWARE_SERIAL_H_
|
#ifndef HARDWARE_SERIAL_H_
|
||||||
#define HARDWARE_SERIAL_H_
|
#define HARDWARE_SERIAL_H_
|
||||||
|
|
||||||
#include "../../inc/MarlinConfigPre.h"
|
#include "../../../inc/MarlinConfigPre.h"
|
||||||
#if ENABLED(EMERGENCY_PARSER)
|
#if ENABLED(EMERGENCY_PARSER)
|
||||||
#include "../../feature/emergency_parser.h"
|
#include "../../../feature/emergency_parser.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
|
@ -31,13 +31,16 @@
|
||||||
|
|
||||||
class SPISettings {
|
class SPISettings {
|
||||||
public:
|
public:
|
||||||
SPISettings(int a, int b, int c) {};
|
SPISettings(uint32_t speed, int, int) : spi_speed(speed) {};
|
||||||
|
uint32_t spiRate() { return spi_speed; }
|
||||||
|
private:
|
||||||
|
uint32_t spi_speed;
|
||||||
};
|
};
|
||||||
|
|
||||||
class SPIClass {
|
class SPIClass {
|
||||||
public:
|
public:
|
||||||
void begin();
|
void begin();
|
||||||
void beginTransaction(SPISettings foo) {};
|
void beginTransaction(SPISettings);
|
||||||
void endTransaction() {};
|
void endTransaction() {};
|
||||||
uint8_t transfer(uint8_t data);
|
uint8_t transfer(uint8_t data);
|
||||||
uint16_t transfer16(uint16_t data);
|
uint16_t transfer16(uint16_t data);
|
||||||
|
|
|
@ -36,8 +36,8 @@
|
||||||
// Includes
|
// Includes
|
||||||
//
|
//
|
||||||
//#include <WInterrupts.h>
|
//#include <WInterrupts.h>
|
||||||
#include "../../inc/MarlinConfig.h"
|
#include "../../../inc/MarlinConfig.h"
|
||||||
#include "../Delay.h"
|
#include "../../Delay.h"
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
|
|
Reference in a new issue