Добрый день! Я новичок в программировании ARM. Хотелось разобраться с инициализацией SPI для контроллера SAM3S4B. Далее код. После включения SPI в статусных регистрах ничего не высвечивается.
#include "main.h"
/** SPI MISO pin definition. */ #define PIN_SPI_MISO {PIO_PA12A_MISO, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
/** SPI MOSI pin definition. */ #define PIN_SPI_MOSI {PIO_PA13A_MOSI, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
/** SPI SPCK pin definition. */ #define PIN_SPI_SPCK {PIO_PA14A_SPCK, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
/** SPI chip select pin definition. */ #define PIN_SPI_NPCS0_PA11 {PIO_PA11A_NPCS0, PIOA, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}
/** List of SPI pin definitions (MISO, MOSI & SPCK). */ #define PINS_SPI PIN_SPI_MISO, PIN_SPI_MOSI, PIN_SPI_SPCK
/** Pins used by the application.*/ static const Pin pins[] = {PINS_SPI, PIN_SPI_NPCS0_PA11};
#define SPI_MR_PCS_1 ((0<<0)|(1<<1)|(1<<2)|(1<<3))
int main(void) {
PIO_Configure(pins, PIO_LISTSIZE(pins)); PMC->PMC_PCER0 = ( 1 << ID_SPI | 1 << ID_PIOA); SPI->SPI_CR = SPI_CR_SWRST; SPI->SPI_MR = SPI_MR_MSTR | SPI_MR_MODFDIS; SPI->SPI_MR |= ( (SPI_MR_PCS_1 << 16) & SPI_CSR_BITS_Msk );
SPI->SPI_CSR[0] = SPI_CSR_CPOL | SPI_CSR_BITS_8_BIT | (0x78 << 8);
SPI->SPI_CR = SPI_CR_SPIEN; }
|