[mw_shl_code=c,true]//初始化SPI1
//SCK->  A5 MOSI->  A7 MISO->  A6
//RST->  A11 CS->  A3
void SPI_init()
{
GPIO_InitTypeDef GPIO_InitStructure;
SPI_InitTypeDef SPI_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1,ENABLE);//使能GPIO和SPI时钟
GPIO_InitStructure.GPIO_Pin=(GPIO_Pin_5 | GPIO_Pin_7);//时钟引脚和MOSI接口
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;//MISO接口
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_6);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11 | GPIO_Pin_3;//复位引脚和片选引脚
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_ResetBits(GPIOA,GPIO_Pin_11);
SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_256;//预分频数
SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge; //串行同步时钟的第一个跳变沿(上升或下降)数据被采样
SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low;//不发送时保持低电平
SPI_InitStructure.SPI_CRCPolynomial= 7; //CRC值计算的多项式
SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;//SPI 发送接收 8 位帧结构
SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;//SPI 设置为双线双向全双工
SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;//数据从MSB开始
SPI_InitStructure.SPI_Mode=SPI_Mode_Master;//主机模式
SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;//软件管理NSS
SPI_Init(SPI1,&SPI_InitStructure);
//使能SPI
SPI_Cmd(SPI1,ENABLE);
}[/mw_shl_code]
这是我的接线图,可是有问题
我想问下这么配置有没有问题,哪位大神有STM32与RC522接线原理可以借我看下吗? |