#include "stm32f10x.h"
#include "stm32f10x_spi.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "delay.h"
#include "mfrc522.h"
#include "stdio.h"
#define SPI_CE_LOW() GPIO_ResetBits(GPIOA,GPIO_Pin_4)
#define SPI_CE_HIGH() GPIO_SetBits(GPIOA,GPIO_Pin_4)
void SPI1_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
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_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
SPI_InitTypeDef SPI_InitStructure;
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI1, &SPI_InitStructure);
SPI_Cmd(SPI1, ENABLE);
}
uint8_t SPI1_SendByte(uint8_t byte)
{
while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI1, byte);
while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) ==
RESET); return SPI_I2S_ReceiveData(SPI1); }
void MFRC522_Reset(void) { SPI_CE_LOW(); SPI1_SendByte(0x1B); SPI_CE_HIGH(); }
uint8_t MFRC522_ReadRegister(uint8_t addr) { SPI_CE_LOW(); uint8_t data; SPI1_SendByte(0x80 | addr); data = SPI1_SendByte(0x00); SPI_CE_HIGH(); return data; }
void MFRC522_WriteRegister(uint8_t addr, uint8_t val) { SPI_CE_LOW(); SPI1_SendByte(0x7F & addr); SPI1_SendByte(val); SPI_CE_HIGH(); }
void MFRC522_ReadRegisters(uint8_t addr, uint8_t count, uint8_t *values) { SPI_CE_LOW(); SPI1_SendByte(0x80 | addr); for(uint8_t i=0;i
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
STM32
+关注
关注
2265文章
10870浏览量
354648 -
代码
+关注
关注
30文章
4741浏览量
68314 -
RC522
+关注
关注
7文章
55浏览量
23932
发布评论请先 登录
相关推荐
RC522寻卡问题
我采用的是stm8s105k4单片机,最近操作RC522,模块是淘宝买的。电源没接错(USB-STLINK上的3.3v,还有3.3v是接到最小系统板子上的),io也与单片机连接正确。在程序上,读写
发表于 08-18 20:18
SPI时序读写RFID-RC522的方法
.Cubemax配置四.核心代码延时函数写RC522寄存器读RC522寄存器复位RC522使用代码1.复位2.寻卡并得到其序列号总结前言用R
发表于 02-08 06:13
从0开始设计_基于STM32F1的RC522读写卡
从0开始设计_基于STM32F1的RC522读写卡1.介绍看网上很多RC522的教程都是基于读卡ID的,这个对于很多应用来说其实没有什么用,最近刚好有个项目需要读写卡,而
发表于 04-22 17:02
SI522如何兼容:RC522 FM17520 CV520 资料
si522优势点:相比于rc522 si522完全替换,不需要做任何更改,同时接收模式下功耗低10ma左右,si522为16MA。相比于rc522
发表于 02-24 14:37
使用51单片机设计的RFID RC522智能钱包程序免费下载
基于51单片机的RFID RC522智能钱包,这个程序主要演示的是RFID RC522智能钱包中的设置及扣款功能,相信会扣款那么充值也就改一个数字的事,具体的功能要自己根据实际情况进行编写,下面是
发表于 08-28 17:29
•65次下载
RFID模块RC522的程序和电路图等详细资料合集免费下载
本文档的主要内容详细介绍的是RFID模块RC522的程序和电路图等详细资料合集免费下载,里面有相关的STM32,51单片机,Na1000的源程序,RC522 mini 尺寸图,
发表于 03-10 08:00
•123次下载
RC522 RFID 射频模块原厂代码免费下载
这是关于RC522飞利浦的原厂代码,由于其他内容较大,所以只能分开来上传,需要的小伙伴可以发的其他资料,包含RC522 RFID 射频模块的硬件电路部分和相关参考资料,以及天线计算工具。
发表于 11-03 11:49
•95次下载
STM32 Cubemax(十三) ——SPI时序读写RFID-RC522
.Cubemax配置四.核心代码延时函数写RC522寄存器读RC522寄存器复位RC522使用代码1.复位2.寻卡并得到其序列号总结前言用R
发表于 12-04 20:36
•55次下载
基于MF RC522的RFID读写器的设计
本设计采用 STM32F103ZET6 为微控制器,结合 MIAFER 1 卡、MF RC522
模块、LCD 等部分设计并实现了基于 MF RC522 的 RFID 读写器的设计。其主要
功能
发表于 03-06 10:57
•8次下载
Air780EP之RC522开发板,你了解吗?
本文讲解合宙Air780EP开发板RC522实例。 本文档适用于Air780EP开发板; 关联文档和使用工具; rc522 - rc522 非接触式读写卡驱动 - LuatOS 文档
评论