Forum: Compiler & IDEs AT32UC3A1512 SPI1 Master Problem


von Thomas O. (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.