AT32UC3A1512 SPI1 Master Problem

Gast #1988597
Lesenswert?

Hallo,

ich habe das Problem mit dem SPI1, dass zwar alle Leitungen genau das 
machen was sie sollen, jedoch das CS immer high bleibt. Hier mal mein 
Code zum Init.

void initSPI1()
{
spi_options_t spiOptions;
//GPIO MAP for SPARE SPI
static const gpio_map_t SPI1_GPIO_MAP = {
{ AVR32_SPI1_SCK_0_0_PIN, AVR32_SPI1_SCK_0_0_FUNCTION }, //SPI Clock
{ AVR32_SPI1_MISO_0_0_PIN, AVR32_SPI1_MISO_0_0_FUNCTION }, //MISO
{ AVR32_SPI1_MOSI_0_0_PIN, AVR32_SPI1_MOSI_0_0_FUNCTION }, //MOSI
{ AVR32_SPI1_NPCS_0_0_PIN, AVR32_SPI1_NPCS_0_0_FUNCTION }, //Chip Select 
NPCS
};

spiOptions.reg = SPI_PRESSURE_CHANNEL;
spiOptions.baudrate = SPI_MASTER_SPEED;
spiOptions.bits = SPI_BITS;
spiOptions.spck_delay = 10;
spiOptions.trans_delay = 10;
spiOptions.stay_act = 1;
spiOptions.spi_mode = 0;
spiOptions.modfdis = 1;

// Assign I/Os to SPI
gpio_enable_module(SPI1_GPIO_MAP, sizeof(SPI1_GPIO_MAP) / 
sizeof(SPI1_GPIO_MAP[0]));

// resets the SPI Controller
//spi_reset(PRESSURE_SPI);

// Initialize as master.
spi_initMaster(PRESSURE_SPI, &spiOptions);

// Set SPI selection mode: variable_ps, pcs_decode, delay.
spi_selectionMode(PRESSURE_SPI, 0, 0, 10);

// Initialize Sensor
spi_setupChipReg(PRESSURE_SPI, &spiOptions, FOSC0);

//spi_selectChip(PRESSURE_SPI, 0);

// Enable SPI module.
spi_enable(PRESSURE_SPI);
}

Und so sende ich Daten.

spi_selectChip(PRESSURE_SPI, SELECTCHIP_MODE);
spi_write(PRESSURE_SPI, 0x35);
spi_unselectChip(PRESSURE_SPI, SELECTCHIP_MODE);

Hat jemand eine Ahnung, warum das nicht funzen kann?

Danke schon mal und nebenbei Frohe Weihnachten ;).

Gruß Thomas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren