cancel
Showing results for 
Search instead for 
Did you mean: 

STM32L152VB SPI1 and SPI2

andywork.20129
Associate
Posted on March 10, 2012 at 14:09

I use SPI1 and it work well,when i try to use the SPI2 it dont work.

The SPI2 clock is not generated ,i think i don't need addional

initialization but i could be wrong .

What am i missing here? It's quite frustrating since the other SPI

work fine.

Thanks in advance.

Andy

Here my initialization code:

GPIO_InitTypeDef  GPIO_InitStructure;

SPI_InitTypeDef   SPI_InitStructure;

GPIO_InitTypeDef  GPIO_InitStructure2;

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB | RCC_AHBPeriph_GPIOD , ENABLE);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);

/*Reset */

GPIO_InitStructure2.GPIO_Pin = GPIO_Pin_3;

GPIO_InitStructure2.GPIO_Mode = GPIO_Mode_OUT;

GPIO_InitStructure2.GPIO_Speed = GPIO_Speed_40MHz;

GPIO_InitStructure2.GPIO_OType = GPIO_OType_PP;

GPIO_InitStructure2.GPIO_PuPd  = GPIO_PuPd_UP;

GPIO_Init(CC1120_RESET_GPIO_PORT, &GPIO_InitStructure2);

GPIO_WriteBit(GPIOD,GPIO_Pin_3, Bit_RESET);

/**/

/* Power on Pin */

GPIO_InitStructure2.GPIO_Pin = GPIO_Pin_5;

GPIO_InitStructure2.GPIO_Mode = GPIO_Mode_OUT;

GPIO_InitStructure2.GPIO_Speed = GPIO_Speed_40MHz;

GPIO_InitStructure2.GPIO_OType = GPIO_OType_PP;

GPIO_InitStructure2.GPIO_PuPd  = GPIO_PuPd_NOPULL;

GPIO_Init(GPIOB, &GPIO_InitStructure2);

GPIO_WriteBit(GPIOB,GPIO_Pin_5, Bit_RESET);

/**/

/* SCK */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;

GPIO_Init(GPIOB, &GPIO_InitStructure);

/* MISO */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;

GPIO_Init(GPIOB, &GPIO_InitStructure);

/* MOSI */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;

GPIO_Init(GPIOB, &GPIO_InitStructure);

/* CS pin */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);

/* Connect PXx SPI_SCK - SPI_MISO - SPI_MOSI*/

GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI2);

GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_SPI2);

GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_SPI2);  

/* SPI Config */

SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;

SPI_InitStructure.SPI_Mode = SPI_Mode_Master;

SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;

SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;

SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;

SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;

SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;

SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;

SPI_InitStructure.SPI_CRCPolynomial = 7;

SPI_Init(SPI2, &SPI_InitStructure);

SPI_Cmd(SPI2, ENABLE);

0 REPLIES 0