FM33G026芯片spi片选问题
本帖最后由 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模块使能
请各位大神帮忙解惑,不胜感激!
本帖最后由 Roc 于 2022-1-11 13:41 编辑
将片选引脚设置为普通推挽输出。在MCU与RFID进行SPI交互时,通过控制片选引脚的高低电平进行选择卡1还是卡2,问题得到解决。 用示波器看 卡2 的 ssn 及 其他信号的波形。撇开卡1。 spi只看波形,如果波形没问题。那就是硬件问题了,看下焊接等等 顾博文 发表于 2022-1-6 15:32
用示波器看 卡2 的 ssn 及 其他信号的波形。撇开卡1。 spi只看波形,如果波形没问题。那就是硬件问题了,看 ...
好的,谢谢
页:
[1]