嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元微信扫码支付:2 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
RC522在STM32上的应用
void delay_ns(u32 ns)
{
u32 i;
for(i=0;i<ns;i )
{
__nop();
__nop();
__nop();
}
}
u8 SPIWriteByte(u8 Byte)
{
while((SPI2->SR&0X02)==0); //等待发送区空
SPI2->DR=Byte; //发送一个byte
while((SPI2->SR&0X01)==0);//等待接收完一个byte
return SPI2->DR; //返回收到的数据
}
void SPI2_Init(void)
{
// SPI_InitTypeDef SPI_InitStructure;
//GPIO_InitTypeDef GPIO_InitStructure;
//配置SPI2管脚
RCC->APB2ENR|=1<<0;
RCC->APB2ENR|=1<<3;
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB, ENABLE);
GPIOB->CRH&=0X000FFFFF;
GPIOB->CRH|=0XB8B00000;
GPIOB->CRL&=0XFFFFFF00; //PB.1 复位
GPIOB->CRL|=0X00000033; //PB.0 片选 推挽输出
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15;
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
// GPIO_Init(GPIOB, &GPIO_InitStructure);
//
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
// GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC->APB1ENR|=1<<14;
SPI2->CR1|=0<<10;//全双工模式
SPI2->CR1|=1<<9; //软件nss管理
SPI2->CR1|=1<<8;
SPI2->CR1|=1<<2; //SPI主机
SPI2->CR1|=0<<11;//8bit数据格式
SPI2->CR1&=~0x02; //空闲模式下SCK为0 CPOL=0
SPI2->CR1&=~0x01; //数据采样从第一个时间边沿开始,CPHA=0
SPI2->CR1|=7<<3; //Fsck=Fcpu/4
SPI2->CR1|=0<<7; //MSBfirst
SPI2->CR1|=1<<6; //SPI设备使能
//SPIx_ReadWriteByte(0xff);//启动传输
}