初级会员

- 积分
- 62
- 金钱
- 62
- 注册时间
- 2019-5-26
- 在线时间
- 11 小时
|
1金钱
本帖最后由 帅气转身而过 于 2020-4-19 15:44 编辑
原来的精英版和rc522
/*******************************
*连线说明:
*1--SS <----->PF0
*2--SCK <----->PB13
*3--MOSI<----->PB15
*4--MISO<----->PB14
*5--悬空
*6--GND <----->GND
*7--RST <----->PF1
*8--VCC <----->VCC
************************************/
想改为
/**
* 连线说明:
* 1--SDA <----->PA4
* 2--SCK <----->PA5
* 3--MOSI <----->PA7
* 4--MISO <----->PA6
* 5--悬空
* 6--GND <----->GND
* 7--RST <----->PB0
* 8--VCC <----->VCC
**/
具体代码
#define SET_SPI_CS (GPIOF->BSRR=0X01) //SPI2的片选端(使能),不同通信时写0 F0
#define CLR_SPI_CS (GPIOF->BRR=0X01)
#define SET_NFC_RST GPIOF->BSRR=0X02 //RC522复位引脚 F1
#define CLR_NFC_RST GPIOF->BRR=0X02
/SPI2的初始化
void SPI2_Init(void)
{
RCC->APB2ENR|=(1<<3); //GPIOB引脚时钟
RCC->APB1ENR|=(1<<14);//开启SPI2时钟
GPIOB->CRH&=0x000FFFFF;
GPIOB->CRH|=0xB4B00000;//配置PB13、PB14、PB15
GPIOB->BSRR|=7<<13; //上拉
GPIOF->CRL&=0xFFFFFF00;
GPIOF->CRL|=0x0000033; //PF0\PF1浮空输出,输出50MHZ
GPIOF->BRR=0X02; //下拉
SPI2->CR1|= (0<<11)| //8位数据帧
(0<<10)| //全双工模式
(1<<9)| //启用软件从设备管理 另外生成CS
(1<<8)| //选择从设备
(0<<7)| //先左移MSB
(1<<2)| //配置为主设备
(0<<1)| //CPOL:时钟极性
(0<<0); //CPHA:时钟相位
}
void OUTPUT_Init(void)
{
RCC->APB2ENR|=3<<6|1<<3|1<<2; //开启PA,PB,PE,PF时钟
GPIOB->CRH&=0x000FFFFF;
GPIOB->CRH|=0x94900000; //PB13\14\15
GPIOA->CRL&=0xFFFFFFF0;
}
|
|