RC522读写程序代码分享

发布时间:2024-02-22  

#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


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    合时对寄存器变量使用 DPTR 数据指针,指针和数组访 问被优化以减小程序代码和提高执行速度。 8 级优化: 1、 公共尾部合并:对同一个函数有多处调用时,一些设置代码可被重复使用, 从而减小程序代码......
    所涉及的库函数的声明及有关引脚的定义,一般置于程序的开头部分,代码如下: (2)命令操作函数NFCommand()。 NfCommand()函数实现向K9F5608发送操作命令,程序代码......
    集成在单片机里面。回头看这张图 0000H~3FFFH 把main.c 内部的程序代码都装进去了,只是变成了单片机认识的二进制的0,1,再进一步实际上是把单片机内部的一个个开关打开还是关上了,1关闭......
    行的链接脚本,主要用于配置程序代码段和数据段的地址,;*(InRoot$$Sections)注释掉是因为不需要开发板提供的库,写程序前一定要搞清楚板子的地址分配,这一点很关键。这两个文件是realview生成......
    西门子博途SCL:REGION:构建程序代码的步骤;说明 可以使用指令“构建程序代码”,在 SCL 块中构建程序代码并将其分为几个不同区域。 可按如下方式声明此指令: REGION <名称......
    所有的寄存器都保存到堆栈中的情形一样。OSTaskStkInit()的程序代码如下:     (3)移植OS_CPU_A.ASM文件    在移植OS_CPU_A.ASM文件时,要求用户编写4个简......
    Polyspace静态程序代码分析 高效遵循多重规范;当软件质量目标明确规定了分析指针、编程指南,以及运行时错误的接受标准和阈值,系统透过这些标准会自动进行评估,软件变更时执行,就成......
    使用STM32定时器测量程序执行时间的方法详解;1.1 背景 在单片机的固件开发过程中,有的时候需要评估固件代码的执行性能,会对部分关键程序代码的执行时间进行测量。通常会用到的测量程序......
    正迅速发展成为未来智能汽车的必备功能。这主要有两个原因: 首先,随着汽车系统程序代码的指数级增长,汽车越来越多地成为网络攻击的目标。通过软件实现驾驶辅助功能的汽车,如果系统软件遭到黑客攻击或篡改,那么......
    电机: 28BYJ4 4相5线 蓝牙: ATK-HC05 WIFI: ATK-ESP8266 物联网云平台: 采用腾讯云物联网平台,直接支持微信小程序和手机独立APP控制 二、功能介绍 这是基于STM32设计......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>