|
本帖最后由 Roc 于 2022-1-5 15:07 编辑
初次使用FM33G026芯片SPI读取RFID,用两个SPI片选端口读取两个卡(SPI片选使用两个I/O口,一个普通I/O,一个SPI(SSN)端口。),现在应该如何设置两个片选端口让其别分去控制读卡。(按下方代码设置进行读卡操作,只有卡1读卡正常,卡2读卡错误)
初始化代码如下:
1、I/O口配置代码:
GPIO_InitStruct.PxFCR = GPIO_FCR_DIG; GPIO_InitStruct.PxINEN = GPIO_IN_Dis;
GPIO_InitStruct.PxODEN = GPIO_OD_Dis;
GPIO_InitStruct.PxPUEN = GPIO_PU_En;
GPIO_InitStruct.Pin = GPIO_Pin_2; // SSN1
GPIO_Init(GPIOD, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_Pin_4; // SSN2
GPIO_Init(GPIOF, &GPIO_InitStruct);
GPIO_InitStruct.PxFCR = GPIO_FCR_DIG;
GPIO_InitStruct.PxINEN = GPIO_IN_Dis;
GPIO_InitStruct.PxODEN = GPIO_OD_Dis;
GPIO_InitStruct.PxPUEN = GPIO_PU_Dis;
GPIO_InitStruct.Pin = GPIO_Pin_3; // SCK
GPIO_Init(GPIOD, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_Pin_4; // MISO
GPIO_Init(GPIOD, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_Pin_5; // MOSI
GPIO_Init(GPIOD, &GPIO_InitStruct);
2、SPI功能配置:
RCC_PERCLK_SetableEx(SPI2CLK, ENABLE);
SPI_Master_InitStruct.BAUD_RATE = SPIx_SPICR1_BAUD_PCLK_2;
SPI_Master_InitStruct.LSBF = SPIx_SPICR1_LSBF_MSB;
SPI_Master_InitStruct.CPHOL = SPIx_SPICR1_CPHOL_LOW; // 空闲时低电平
SPI_Master_InitStruct.CPHA = SPIx_SPICR1_CPHA_FIRST; // 第一个边沿采样
SPI_Master_InitStruct.SSNM = SPIx_SPICR2_SSNM_LOW; // 发送完8bit ssn保持为低
SPI_Master_InitStruct.SSNSEN = SPIx_SPICR2_SSNSEN_SOFT; // Master模式下SSN输出由软件控制
SPI_Master_Init(SPI2, &SPI_Master_InitStruct);
SPIx_SPICR2_SPIEN_Setable(SPI2, ENABLE); // SPI2模块使能
请各位大神帮忙解惑,不胜感激!
|
|