瑞萨RA4L1-SENSOR套件开发板之SPI功能评估

简介

本文介绍了基于RA4L1的SPI功能和指纹传感器FPC1020实现用户手指触摸检测的功能。

方法说明

  • 硬件

  • 开发板使用的是申请的RA4L1-SENSOR套件开发板,如图1所示
    图1 RA4L1-SENSOR套件开发板

图2 硬件管脚和功能指示图
关于该开发板的详细信息(开发例程和电路原理图)请参考以下链接:[https://gitee.com/CoreMaker/RA4L1/tree/main]

  • FPC1020指纹传感器
    FPC1020是一款电容式触摸指纹传感器,具有低能耗特性,专为移动设备开发和优化,该传感器采用高速SPI接口。https://www.fingerprints.com

  • 调试器
    调试器使用的是JLINK

  • 软件环境
    使用 Renesas 瑞萨 e2 studio + FSPv5.8.0
    FSP以及e2studio下载地址:https://www.renesas.com/en/software-tool/flexible-software-package-fsp

  • 软件功能框图
    软件功能框图
    主要实现了按键检测、手指放置检测以及串口打印的功能。

  • 开发步骤
    本开发在官方例程基础上进行二次开发,首先导入官方提供的 e2 studio example project, 并对project进行配置,由于当前project并未使用TrustZone特性,所以将所有的Flash和RAM区域均设置为Non-secure,所以这里需要将运行/调试设置–>设置TrustZone 安全/非安全边界选项设置为否,避免每次调试烧录代码过程中软件自动按照默认值重新修改安全/非安全边界。

双击project路径下的configuration.xml, 选中Pins,找到SPI0,设置SPI0的MISO/MOSI/SCLK 对应IO脚,如下所示。
在这里插入图片描述
然后选中New Stack,Connectivity–>SPI(r_spi),如下图所示

按照如下所示设置g_spi0的属性(property),
在这里插入图片描述
在这里插入图片描述
此外,在调试过程中会使用到串口打印log,故需要设置UART,参考官方提供的UART例程
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同时,通过开发板上的按键K1触发手指检测流程,因此这里也添加了按键检测功能,使能外部中断检测按键,配置过程如下所示:
在这里插入图片描述
在这里插入图片描述
代码主要实现如下所示:

void hal_entry(void)
{
    /* TODO: add your own code here */
    /* Open the transfer instance with initial configuration. */
    err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);
    assert(FSP_SUCCESS == err);

    unsigned char buff[]="RA E2STUDIO";
    uint8_t buff_len = strlen(buff);
    err = R_SCI_UART_Write(&g_uart9_ctrl, buff, buff_len);
    if(FSP_SUCCESS != err) __BKPT();
    while(uart_send_complete_flag == false){}
    uart_send_complete_flag = false;

    g_spi0.p_api->open(g_spi0.p_ctrl, g_spi0.p_cfg);

    FPC1020_init();
    FPC1020_reset();
    R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
    FPC1020_setup();
    uint16_t id = FPC1020_hardware_id();
    printf("FPC id=%04X\n",id);

    fpc_flag_isr = 0;
    FPC1020_interrupt(true);

    /* KEY 外部中断初始化函数 */

   fsp_err_t err = FSP_SUCCESS;

   /* Open ICU module */
   err = R_ICU_ExternalIrqOpen(&g_external_irq6_ctrl, &g_external_irq6_cfg);
   err = R_ICU_ExternalIrqOpen(&g_external_irq7_ctrl, &g_external_irq7_cfg);
   err = R_ICU_ExternalIrqOpen(&g_external_irq8_ctrl, &g_external_irq8_cfg);
   /* 允许中断 */
   err = R_ICU_ExternalIrqEnable(&g_external_irq6_ctrl);
   err = R_ICU_ExternalIrqEnable(&g_external_irq7_ctrl);
   err = R_ICU_ExternalIrqEnable(&g_external_irq8_ctrl);

    while(1)
    {

        if (key1_press) {
            key1_press = false;
            printf("Detect finger\n");
EnterFingerprint:
            FPC1020_command(FPC102X_REG_WAIT_FOR_FINGER);
            while(fpc_flag_isr == 0);
            fpc_flag_isr = 0;
            uint8_t interrupt = FPC1020_interrupt(true);
            if(interrupt == 0x81)
            {
                uint16_t status = FPC1020_finger_present_status();

                if((status & 0x60) != 0x60)
                {
                    R_BSP_SoftwareDelay(1000, BSP_DELAY_UNITS_MILLISECONDS);
                    goto EnterFingerprint;
                }
                printf("finger is detected\n");
            }
        }
        R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS);
    }

#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif
}

测试电路

RA4L1开发板SPI接口对应的IO引脚
RA4L1开发板与FPC1020 SPI接口连接示意图
实物连接图

结果和结论

将代码编译并烧录到RA4L1开发板,并通过串口工具打印代码运行过程中对应的log,如下所示:
软件运行时打印的串口log
代码烧录成功后,运行过程中首先通过SPI接口读取指纹传感器FPC1020的ID,对应的值为020A,与该指纹传感器datasheet上的ID一致,说明SPI功能正常;然后按下开发板上的按键K1触发手指检测流程,当K1按下之后,串口打印“Detect finger”,将任一手指放置到指纹传感器触摸区域,当传感器检测到手指放置上去,就会打印“finger is detected”。

演示视频

演示视频

心得体会

本文介绍了基于 RA4L1 SPI接口和e2 Studio 灵活软件包(FSP)驱动指纹传感器实现手指检测的详细流程,实现按键检测、串口打印、通过SPI与指纹传感器进行交互等功能,并展示了硬件连接、代码、演示效果等,为基于瑞萨RA4L1 SPI接口驱动其他传感器与相关产品开发提供了参考。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值