【GD32L233C-START】10、硬件SPI1驱动RC522
1、关于GD32L233CCT6的SPI接口
可以看出 有两路spi,spi0和spi1,本节使用spi1。
2、开发板上SPI的引脚
3、spi1引脚复用
4、开发板与RC522模块连接
开发板 rc522
PB12 <----------------------------->SDA(NSS)
PB13 <----------------------------->SCK
PB14 <----------------------------->MISO
PB15 <----------------------------->MOSI
PB0 <----------------------------->RST
3.3V <----------------------------->3V3
GND <----------------------------->GND
5、与SPI相关操作代码
void SpiIoInit(void)
{rcu_periph_clock_enable(RCU_GPIOB);gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_0 );gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0);/* SPI1 GPIO configuration: NSS/PB12 */gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_12 );gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_12);/* SPI1 GPIO configuration: SCK/PB13, MISO/PB14, MOSI/PB15 */gpio_af_set(GPIOB, GPIO_AF_6, GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15);gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15);gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15);
}void SpiInit(void)
{spi_parameter_struct spi_init_struct;rcu_periph_clock_enable(RCU_SPI1);/* deinitilize SPI and the parameters */spi_i2s_deinit(SPI1);spi_struct_para_init(&spi_init_struct);/* SPI1 parameter configuration */spi_init_struct.trans_mode = SPI_TRANSMODE_FULLDUPLEX;spi_init_struct.device_mode = SPI_MASTER;spi_init_struct.frame_size = SPI_FRAMESIZE_8BIT;spi_init_struct.clock_polarity_phase = SPI_CK_PL_LOW_PH_1EDGE;spi_init_struct.nss = SPI_NSS_SOFT;spi_init_struct.prescale = SPI_PSC_8;spi_init_struct.endian = SPI_ENDIAN_MSB;spi_init(SPI1, &spi_init_struct);spi_crc_polynomial_set(SPI1, 7);spi_enable(SPI1);
}uint8_t SPIWriteByte(uint8_t Byte)
{uint16_t ret=0;while(RESET == spi_i2s_flag_get(SPI1, SPI_FLAG_TBE)) {}; //等待发送区空 spi_i2s_data_transmit(SPI1, Byte); //发送一个byte while(RESET == spi_i2s_flag_get(SPI1, SPI_FLAG_RBNE)) {}; //等待接收完一个byteret=spi_i2s_data_receive(SPI1); //返回收到的数据return (ret&0x0ff);
}
6、与RC522操作相关代码
void RC522Init(void)
{uint8_t ver=0;SpiIoInit();SpiInit();PcdReset();ver=ReadRawRC(VersionReg);if(ver==0x91||ver==0x92){printf("rc522 exist\r\n");}else{printf("rc522 not exist\r\n");}PcdAntennaOff();DelayMs(2); PcdAntennaOn();M500PcdConfigISOType( 'A' );
}unsigned char CT[2];//卡类型
unsigned char SN[4]; //卡号void RC522Polling(void)
{unsigned char status; uint8_t j; status = PcdRequest(PICC_REQALL,CT);/*尋卡*/if(status==MI_OK)//尋卡成功{status=MI_ERR;status = PcdAnticoll(SN);/*防冲撞*/}if(status==MI_OK)//防衝撞成功{status=MI_ERR; printf("\r\nThe Card ID is:");for(j=0;j<4;j++){printf("%02X",SN[j]);}printf("\r\n");status =PcdSelect(SN);}
}
7、实验现象
【GD32L233C-START】10、硬件SPI1驱动RC522相关推荐
- STM32使用硬件SPI驱动RC522门禁模块
0.前言 RC522射频门禁识别模块非常常用,某宝卖家提供的程序基本都是使用软件模拟SPI的方式进行驱动的,但是实测使用软件模拟SPI识别速率.准确性没有硬件SPI驱动时高,因此本篇博客用于记录使用S ...
- 基础篇010.2 STM32驱动RC522 RFID模块之二:STM32硬件SPI驱动RC522
目录 1. 实验硬件及原理图 1.1 RFID硬件 1.2 硬件原理图 2. 单片机与RFID硬件模块分析 3. 利用STM32CubeMX创建MDK工程 3.1 STM32CubeMX工程创建 3. ...
- 嵌入式开发-STM32硬件SPI驱动TFT屏
嵌入式开发-STM32硬件SPI驱动TFT屏 这次用到的TFT屏 CubeMX设置 代码编写 增加的内容 需要注意问题 代码下载 这次用到的TFT屏 现在的TFT屏幕已经很便宜了,65536色屏幕,2 ...
- stm32读取目标芯片_使用stm32驱动RC522读IC卡(代码留言邮箱)
RC522与PN532简介 关于STM32驱动方式 接线说明 程序烧录 查看卡号 总结 RC522与PN532简介 在写这篇文章之前有写过一篇有关于PN532的文章,RC522与PN532在使用上都可 ...
- Android之 震动(Vibrator)如何贯通Android系统 (从硬件设计 -- 驱动 -- HAL -- JNI -- Framework -- Application)
在Android 2.3(Gingerbread) 系统的时候,我写过一篇关于"Android 震动马达系统"的文章,当时的Linux内核还是2.6版本的.写那篇文章的目的 ...
- MSP430G2553 Launchpad 硬件I2C驱动
一.USCI I2C 驱动介绍 对于MSP430G2553,硬件I2C由外设USCI(Universal Serial Communication Interface)提供.USCI又分为USCI_A ...
- 基于Stm32f103硬件iic驱动LM75A温度传感器
这是LM75A温度传感器的概述,本文主要介绍基于Stm32f103的硬件iic驱动LM75A温度传感器. 这是我所使用的硬件电路,很简单. 对于该传感器的使用,主要是读取温度值,查看数据手册我们知道需 ...
- 【硬件和驱动相关】wifi设备没有工作 ubuntu18.0.4 无线网卡 intel 6 AX200
关联博客: [硬件和驱动]如何查看linux的驱动有没有装好 --声卡无声音,有驱动为例子,网卡wifi驱动相关 [硬件]搭建自己的深度学习服务器 or 高性能电脑--从0到1装机指南 环境:linu ...
- STM32 驱动 GY-302 光照传感器 BH1750 模块(软件IIC与硬件IIC驱动)
1.特别说明 要是不想看原理和过程,直接下拉找代码吧,都是测试过的,很稳定,有硬件I2C驱动的,也有软件模拟I2C驱动的,基于STM32F103系列和STM32F4系列实现,基于标准库实现,条理清 ...
最新文章
- jmeter 线程执行顺序_面试官让我说出8种线程顺序执行的方法!我懵了
- 使用malloc初始化一个类和new初始化一个类的区别
- html css页脚代码,HTML CSS - 页脚 - 下面的空格
- JAVA怎么实现网页退出系统_java后台实现js关闭本页面,父页面指定跳转或刷新操作...
- python软件下载安装-python安装最新下载_python安装绿色版 - 软件帝
- 三.rocketmq-console
- excel文本写入 npoi_C#使用NPOI读写excel
- tftp工具使用说明
- 测试开发大厂社招面试经验分享
- LeetCode题解:寻找峰值
- 图像去模糊系列二 高斯白噪声
- Android客户端登录注册模块
- 经典光流估计算法和光流对齐方法
- 阿里巴巴大数据学院落地成都,计划5年培养2000名高端专业人才
- matplotlib基础绘图命令之pie
- 基于深度学习的2D图像目标检测
- JAVA 设计模式 备忘录模式
- 微信公众号开发完整教程(一) PHP7.0版本,TP5.0框架
- VIA威盛4-IN-1最新驱动 v4.55
- 方程组求解的直接法与迭代法实现
热门文章
- 【threejs】实现星空、星链、太阳系、线等效果的参考
- 黑帽SEO和白帽SEO区别
- 龙之谷穿越java游戏_龙之谷2java手机游戏下载
- python-matplotlib给图像添加文本标签与注释
- 英雄联盟-英雄信息获取(皮肤-英雄名,背景故事,技能)
- android 修改 dpi_魅族 16s|魔趣100|安卓10.0|10.10定制|归属地|机型修改|性能调整|稳定流畅...
- 牛客网华为机试(python)
- 如何防范各类联属欺诈?
- 游戏行为模式——巴图模型
- 软件测试工程师必会的Linux命令(上)