Hallo zusammen,
ich versuche seit Tagen diesen Neigungssensor zum laufen zu bringen.
Initialisierung:
SPI1_GPIO_Pin_NSS = GPIO_Pin_4;
SPI1_GPIO_Pin_SCK = GPIO_Pin_5;
SPI1_GPIO_Pin_MISO = GPIO_Pin_6;
SPI1_GPIO_Pin_MOSI = GPIO_Pin_7;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1 |
RCC_APB2Periph_AFIO, ENABLE);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Pin = SPI1_GPIO_Pin_SCK;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = SPI1_GPIO_Pin_MOSI;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = SPI1_GPIO_Pin_MISO;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = SPI1_GPIO_Pin_NSS;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
SPI_I2S_DeInit(SPI1);
SPI1_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI1_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI1_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI1_InitStructure.SPI_CPOL = SPI_CPOL_High;
SPI1_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
SPI1_InitStructure.SPI_NSS = SPI_NSS_Hard;
SPI1_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
SPI1_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI1_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI1, &SPI1_InitStructure);
SPI_Cmd(SPI1, ENABLE);
Daten abfragen:
int8_t SPI1_ReadData(uint16_t register)
{
int8_t tmp=0;
if(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==SET)
{
tmp=SPI_I2S_ReceiveData(SPI1);
}
SPI_I2S_SendData(SPI1,register);
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);
tmp=SPI_I2S_ReceiveData(SPI1);
SPI_I2S_SendData(SPI1,0xFF);
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);
tmp=SPI_I2S_ReceiveData(SPI1);
return tmp;
}
SPI1_ReadData wird wird in der main.cs in der while-Schleife aufgerufen
mit den Wert 0x1000 und danach 5ms delay.
Die Funktion bleibt immer hier
"while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);" hängen.
Vielen Dank für eure Hilfe
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.