1
0
mirror of https://github.com/arduino/Arduino.git synced 2025-03-13 10:29:35 +01:00

SPI initialization fix. Seems working need more testing

This commit is contained in:
Cristian Maglie 2011-12-05 19:21:19 +01:00
parent e484f0712a
commit fdcb017d41
2 changed files with 23 additions and 4 deletions

View File

@ -10,13 +10,16 @@
#include "SPI.h"
SPIClass::SPIClass(Spi *_spi, uint32_t _id) : spi(_spi), id(_id) {
SPIClass::SPIClass(Spi *_spi, uint32_t _id, void(*_initCb)(void)) :
spi(_spi), id(_id), initCb(_initCb) {
// Empty
}
void SPIClass::begin() {
initCb();
// Set CS on NPCS3
SPI_Configure(spi, id, SPI_MR_MSTR | SPI_MR_PS | SPI_MR_PCS(0x07));
SPI_Configure(spi, id, SPI_MR_MSTR | SPI_MR_PCS(0x07));
SPI_Enable( spi);
setClockDivider(1);
}
@ -53,5 +56,20 @@ void SPIClass::detachInterrupt(void) {
}
#if SPI_INTERFACES_COUNT > 0
SPIClass SPI0(SPI_INTERFACE, SPI_INTERFACE_ID);
static void SPI0_Init(void) {
PIO_Configure(g_APinDescription[PIN_SPI_MOSI].pPort,
g_APinDescription[PIN_SPI_MOSI].ulPinType,
g_APinDescription[PIN_SPI_MOSI].ulPin,
g_APinDescription[PIN_SPI_MOSI].ulPinConfiguration);
PIO_Configure(g_APinDescription[PIN_SPI_MISO].pPort,
g_APinDescription[PIN_SPI_MISO].ulPinType,
g_APinDescription[PIN_SPI_MISO].ulPin,
g_APinDescription[PIN_SPI_MISO].ulPinConfiguration);
PIO_Configure(g_APinDescription[PIN_SPI_SCK].pPort,
g_APinDescription[PIN_SPI_SCK].ulPinType,
g_APinDescription[PIN_SPI_SCK].ulPin,
g_APinDescription[PIN_SPI_SCK].ulPinConfiguration);
}
SPIClass SPI0(SPI_INTERFACE, SPI_INTERFACE_ID, SPI0_Init);
#endif

View File

@ -34,7 +34,7 @@
class SPIClass {
public:
SPIClass(Spi *_spi, uint32_t _id);
SPIClass(Spi *_spi, uint32_t _id, void(*_initCb)(void));
byte transfer(byte _data);
@ -53,6 +53,7 @@ class SPIClass {
private:
Spi *spi;
uint32_t id, divider, mode;
void (*initCb)(void);
};
#if SPI_INTERFACES_COUNT > 0