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相关推荐

  1. STM32使用硬件SPI驱动RC522门禁模块

    0.前言 RC522射频门禁识别模块非常常用,某宝卖家提供的程序基本都是使用软件模拟SPI的方式进行驱动的,但是实测使用软件模拟SPI识别速率.准确性没有硬件SPI驱动时高,因此本篇博客用于记录使用S ...

  2. 基础篇010.2 STM32驱动RC522 RFID模块之二:STM32硬件SPI驱动RC522

    目录 1. 实验硬件及原理图 1.1 RFID硬件 1.2 硬件原理图 2. 单片机与RFID硬件模块分析 3. 利用STM32CubeMX创建MDK工程 3.1 STM32CubeMX工程创建 3. ...

  3. 嵌入式开发-STM32硬件SPI驱动TFT屏

    嵌入式开发-STM32硬件SPI驱动TFT屏 这次用到的TFT屏 CubeMX设置 代码编写 增加的内容 需要注意问题 代码下载 这次用到的TFT屏 现在的TFT屏幕已经很便宜了,65536色屏幕,2 ...

  4. stm32读取目标芯片_使用stm32驱动RC522读IC卡(代码留言邮箱)

    RC522与PN532简介 关于STM32驱动方式 接线说明 程序烧录 查看卡号 总结 RC522与PN532简介 在写这篇文章之前有写过一篇有关于PN532的文章,RC522与PN532在使用上都可 ...

  5. Android之 震动(Vibrator)如何贯通Android系统 (从硬件设计 -- 驱动 -- HAL -- JNI -- Framework -- Application)

        在Android 2.3(Gingerbread) 系统的时候,我写过一篇关于"Android 震动马达系统"的文章,当时的Linux内核还是2.6版本的.写那篇文章的目的 ...

  6. MSP430G2553 Launchpad 硬件I2C驱动

    一.USCI I2C 驱动介绍 对于MSP430G2553,硬件I2C由外设USCI(Universal Serial Communication Interface)提供.USCI又分为USCI_A ...

  7. 基于Stm32f103硬件iic驱动LM75A温度传感器

    这是LM75A温度传感器的概述,本文主要介绍基于Stm32f103的硬件iic驱动LM75A温度传感器. 这是我所使用的硬件电路,很简单. 对于该传感器的使用,主要是读取温度值,查看数据手册我们知道需 ...

  8. 【硬件和驱动相关】wifi设备没有工作 ubuntu18.0.4 无线网卡 intel 6 AX200

    关联博客: [硬件和驱动]如何查看linux的驱动有没有装好 --声卡无声音,有驱动为例子,网卡wifi驱动相关 [硬件]搭建自己的深度学习服务器 or 高性能电脑--从0到1装机指南 环境:linu ...

  9. STM32 驱动 GY-302 光照传感器 BH1750 模块(软件IIC与硬件IIC驱动)

    1.特别说明 ​ 要是不想看原理和过程,直接下拉找代码吧,都是测试过的,很稳定,有硬件I2C驱动的,也有软件模拟I2C驱动的,基于STM32F103系列和STM32F4系列实现,基于标准库实现,条理清 ...

最新文章

  1. jmeter 线程执行顺序_面试官让我说出8种线程顺序执行的方法!我懵了
  2. 使用malloc初始化一个类和new初始化一个类的区别
  3. html css页脚代码,HTML CSS - 页脚 - 下面的空格
  4. JAVA怎么实现网页退出系统_java后台实现js关闭本页面,父页面指定跳转或刷新操作...
  5. python软件下载安装-python安装最新下载_python安装绿色版 - 软件帝
  6. 三.rocketmq-console
  7. excel文本写入 npoi_C#使用NPOI读写excel
  8. tftp工具使用说明
  9. 测试开发大厂社招面试经验分享
  10. LeetCode题解:寻找峰值
  11. 图像去模糊系列二 高斯白噪声
  12. Android客户端登录注册模块
  13. 经典光流估计算法和光流对齐方法
  14. 阿里巴巴大数据学院落地成都,计划5年培养2000名高端专业人才
  15. matplotlib基础绘图命令之pie
  16. 基于深度学习的2D图像目标检测
  17. JAVA 设计模式 备忘录模式
  18. 微信公众号开发完整教程(一) PHP7.0版本,TP5.0框架
  19. VIA威盛4-IN-1最新驱动 v4.55
  20. 方程组求解的直接法与迭代法实现

热门文章

  1. 【threejs】实现星空、星链、太阳系、线等效果的参考
  2. 黑帽SEO和白帽SEO区别
  3. 龙之谷穿越java游戏_龙之谷2java手机游戏下载
  4. python-matplotlib给图像添加文本标签与注释
  5. 英雄联盟-英雄信息获取(皮肤-英雄名,背景故事,技能)
  6. android 修改 dpi_魅族 16s|魔趣100|安卓10.0|10.10定制|归属地|机型修改|性能调整|稳定流畅...
  7. 牛客网华为机试(python)
  8. 如何防范各类联属欺诈?
  9. 游戏行为模式——巴图模型
  10. 软件测试工程师必会的Linux命令(上)