初学者
10 分钟

使用SP1ML-915和PIC32MZ2048EFH100体验无线技术的未来

超越边界,连接您的世界

SPIRIT 2 Click with Flip&Click PIC32MZ

已发布 6月 26, 2024

点击板

SPIRIT 2 Click

开发板

Flip&Click PIC32MZ

编译器

NECTO Studio

微控制器单元

PIC32MZ2048EFH100

在915MHz ISM频段,我们的全集成RF模块在每一字节的数据传输中都体现出卓越品质,革新您的信息交换方式。

A

A

硬件概览

它是如何工作的?

SPIRIT 2 Click基于STMicroelectronics的SP1ML-915,这是一个集成MCU的低功耗RF模块。该模块集成了所有必要的组件,封装在一个非常紧凑的尺寸中,尺寸为14 x 13.4 x 2.5 mm。集成的32位MCU STM32L1设计时最大限度地考虑了节能特性,提供许多节能功能。这使整个模块的功耗更低,数据速率可达500 kbps。RF信号调制方案满足任何RF传输需求,允许对范围和功耗进行微调。SP1ML-915模块的主要功能是用作无线串行电缆替代品。Click板™具有SWD兼容的编程头,允许自定义固件上传到集成的MCU。然而,这可能会破坏工厂固件并使保修失效。该模块提供简单的UART接口,结合低功耗,是添加无线连接的理想解决方案,特别是对于IoT应用。

由于该模块设计用于无需广泛的RF通信经验,因此非常简单易用。Click板™提供两种操作模式:操作模式和命令模式。在操作模式下,从主机接收到的数据通过UART接口无线传输,使用当前的配置设置(频率、数据速率、调制和输出功率)。此外,任何符合配置过滤标准的数据将输出到UART接口。命令模式允许配置SP1ML-915模块。当Click板™收到逃脱序列“+++”后,至少500ms没有RX活动时,它将进入命令模式。通过使用一些简单的AT命令,开发人员可以配置设备的操作参数。完整的AT命令列表在SP1ML-915模块的数据手册中提供。如果不打算进入命令模式,则在正常操作期间不要发送逃脱序列。除了使用上述逃脱序列外,通过将Click板™的CMD

引脚驱动到低逻辑电平,也可以将模块置于命令模式。高逻辑电平将强制Click板™进入操作模式。更改此引脚状态后,Click板™应复位。要复位SP1ML-915模块,应将Click板™的RST引脚驱动到低逻辑电平。当RST引脚上存在低逻辑电平时,SP1ML-915模块将保持在RESET模式。通过在SHD引脚上施加低逻辑电平,Click板™将进入掉电模式。高逻辑电平将唤醒设备。数据流量由标记为TX/RX的LED指示。然而,使用指示器前应启用它。有关更多信息,请查阅SP1ML-915的数据手册。Click板™可以与3.3V和5V的MCU接口,无需任何外部组件。得益于TXB0106,6位双向电压电平转换器,Click板™可以简单地与各种不同的MCU一起使用。

SPIRIT 2 Click hardware overview image

功能概述

开发板

Flip&Click PIC32MZ 是一款紧凑型开发板,设计为一套完整的解决方案,它将 Click 板™的灵活性带给您喜爱的微控制器,使其成为实现您想法的完美入门套件。它配备了一款板载 32 位 PIC32MZ 微控制器,Microchip 的 PIC32MZ2048EFH100,四个 mikroBUS™ 插槽用于 Click 板™连接,两个 USB 连接器,LED 指示灯,按钮,调试器/程序员连接器,以及两个与 Arduino-UNO 引脚兼容的头部。得益于创

新的制造技术,它允许您快速构建具有独特功能和特性的小工具。Flip&Click PIC32MZ 开发套件的每个部分都包含了使同一板块运行最高效的必要组件。此外,还可以选择 Flip&Click PIC32MZ 的编程方式,使用 chipKIT 引导程序(Arduino 风格的开发环境)或我们的 USB HID 引导程序,使用 mikroC、mikroBasic 和 mikroPascal for PIC32。该套件包括一个通过 USB 类型-C(USB-C)连接器的干净且调

节过的电源供应模块。所有 mikroBUS™ 本身支持的 通信方法都在这块板上,包括已经建立良好的 mikroBUS™ 插槽、用户可配置的按钮和 LED 指示灯。Flip&Click PIC32MZ 开发套件允许您在几分钟内创建新的应用程序。它由 Mikroe 软件工具原生支持,得益于大量不同的 Click 板™(超过一千块板),其数量每天都在增长,它涵盖了原型制作的许多方面。

Flip&Click PIC32MZ double image

微控制器概述 

MCU卡片 / MCU

default

建筑

PIC32

MCU 内存 (KB)

2048

硅供应商

Microchip

引脚数

100

RAM (字节)

524288

使用的MCU引脚

mikroBUS™映射器

NC
NC
AN
Reset
RE2
RST
Command Mode
RA0
CS
NC
NC
SCK
NC
NC
MISO
NC
NC
MOSI
Power Supply
3.3V
3.3V
Ground
GND
GND
Shutdown Control
RC14
PWM
NC
NC
INT
UART TX
RE3
TX
UART RX
RG9
RX
NC
NC
SCL
NC
NC
SDA
Power Supply
5V
5V
Ground
GND
GND
1

“仔细看看!”

Click board™ 原理图

SPIRIT 2 Click Schematic schematic

一步一步来

项目组装

Flip&Click PIC32MZ front image hardware assembly

从选择您的开发板和Click板™开始。以Flip&Click PIC32MZ作为您的开发板开始。

Flip&Click PIC32MZ front image hardware assembly
GNSS2 Click front image hardware assembly
Prog-cut hardware assembly
Board mapper by product7 hardware assembly
Necto image step 2 hardware assembly
Necto image step 3 hardware assembly
Necto image step 4 hardware assembly
Necto image step 5 hardware assembly
Necto image step 6 hardware assembly
Flip&Click PIC32MZ MCU step hardware assembly
Necto No Display image step 8 hardware assembly
Necto image step 9 hardware assembly
Necto image step 10 hardware assembly
Debug Image Necto Step hardware assembly

软件支持

库描述

该库包含 SPIRIT 2 Click 驱动程序的 API。

关键功能:

  • spirit2_power_module - 功能用于电源模式

  • spirit2_reset - 功能用于重置

  • spirit2_set_mode - 功能用于设置模式

开源

代码示例

完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio 应用程序代码也可以在MIKROE的GitHub账户中找到。

/*!
 * @file main.c
 * @brief SPIRIT 2 Click Example.
 *
 * # Description
 * This example reads and processes data from SPIRIT 2 Click.
 *
 * The demo application is composed of two sections :
 *
 * ## Application Init
 * Initializes the driver and configures the Click board.
 *
 * ## Application Task
 * Depending on the selected mode, it reads all the received data or sends the desired message 
 * every 2 seconds.
 *
 * ## Additional Function
 * - static err_t spirit2_process ( void )
 *
 * @author Jelena Milosavljevic
 *
 */

// ------------------------------------------------------------------- INCLUDES

#include "board.h"
#include "log.h"
#include "spirit2.h"

#define PROCESS_BUFFER_SIZE    500
#define PROCESS_COUNTER        20

#define TEXT_TO_SEND           "MikroE - SPIRIT 2 Click board\r\n"

#define DEMO_APP_RECEIVER
//#define DEMO_APP_TRANSMITTER

static spirit2_t spirit2;
static log_t logger;

static char app_buf[ PROCESS_BUFFER_SIZE ] = { 0 };
static int32_t app_buf_len = 0;
static int32_t app_buf_cnt = 0;

/**
 * @brief SPIRIT2 2 data reading function.
 * @details This function reads data from device and concatenates data to application buffer.
 *
 * @return @li @c  0 - Read some data.
 *         @li @c -1 - Nothing is read.
 *         @li @c -2 - Application buffer overflow.
 *
 * See #err_t definition for detailed explanation.
 * @note None.
 */
static void spirit2_process ( void );

// ------------------------------------------------------ APPLICATION FUNCTIONS

void application_init ( void ) 
{
    log_cfg_t log_cfg;
    spirit2_cfg_t cfg;

    /** 
     * Logger initialization.
     * Default baud rate: 115200
     * Default log level: LOG_LEVEL_DEBUG
     * @note If USB_UART_RX and USB_UART_TX 
     * are defined as HAL_PIN_NC, you will 
     * need to define them manually for log to work. 
     * See @b LOG_MAP_USB_UART macro definition for detailed explanation.
     */
    LOG_MAP_USB_UART( log_cfg );
    log_init( &logger, &log_cfg );
    log_info( &logger, "---- Application Init ----" );

    //  Click initialization.

    spirit2_cfg_setup( &cfg );
    SPIRIT2_MAP_MIKROBUS( cfg, MIKROBUS_1 );
    spirit2_init( &spirit2, &cfg );
    Delay_ms ( 1000 );

    log_info( &logger, "---- Configuring the module ----" );
    spirit2_power_module( &spirit2, SPIRIT2_MODULE_WAKE_UP );
    spirit2_reset( &spirit2 );
    spirit2_set_mode( &spirit2, SPIRIT2_OPERATING_MODE );
    Delay_ms ( 1000 );
    log_printf( &logger, "COMMAND MODE\r\n" );
    spirit2_send_cmd( &spirit2, SPIRIT2_CMD_ENTER_COMMAND_MODE );
    spirit2_process( );
    log_printf( &logger, "FIRMWARE VERSION\r\n" );
    spirit2_send_cmd( &spirit2, SPIRIT2_CMD_READ_MODULE_VERSION );
    spirit2_process( );
    log_printf( &logger, "TXRX LED - OPEN DRAIN OUTPUT\r\n" );
    spirit2_send_cmd_with_parameter( &spirit2, SPIRIT2_CMD_CFG_TXRX_LED, SPIRIT2_PCFG_TXRXLED_OPEN_DRAIN );
    spirit2_process( );
    log_printf( &logger, "STORE CONFIG\r\n" );
    spirit2_send_cmd( &spirit2, SPIRIT2_CMD_STORE_CURRENT_CONFIG );
    spirit2_process( );
    log_printf( &logger, "OPERATING MODE\r\n" );
    spirit2_send_cmd( &spirit2, SPIRIT2_CMD_ENTER_OPERATING_MODE );
    spirit2_process( );
    log_info( &logger, "---- The module has been configured ----" );
#ifdef DEMO_APP_RECEIVER
    log_info( &logger, "---- RECEIVER MODE ----" );
#endif 
#ifdef DEMO_APP_TRANSMITTER
    log_info( &logger, "---- TRANSMITTER MODE ----" );
#endif 
    Delay_ms ( 1000 );
}

void application_task ( void ) {
#ifdef DEMO_APP_RECEIVER
    spirit2_process( );
#endif   
    
#ifdef DEMO_APP_TRANSMITTER 
    spirit2_generic_write( &spirit2, TEXT_TO_SEND, strlen( TEXT_TO_SEND ) );
    log_info( &logger, "---- The message has been sent ----" );
    Delay_ms ( 1000 );
    Delay_ms ( 1000 );
#endif
}

int main ( void ) 
{
    /* Do not remove this line or clock might not be set correctly. */
    #ifdef PREINIT_SUPPORTED
    preinit();
    #endif
    
    application_init( );
    
    for ( ; ; ) 
    {
        application_task( );
    }

    return 0;
}

static void spirit2_process ( void ) {
    int32_t rsp_size;
    
    char uart_rx_buffer[ PROCESS_BUFFER_SIZE ] = { 0 };
    uint8_t process_cnt = PROCESS_COUNTER;

    while( process_cnt != 0 ) {
       
        rsp_size = spirit2_generic_read( &spirit2, &uart_rx_buffer, PROCESS_BUFFER_SIZE );
        
        if ( rsp_size > 0 ) {  
            
            for ( uint8_t cnt = 0; cnt < rsp_size; cnt++ ) {
                
                log_printf( &logger, "%c", uart_rx_buffer[ cnt ] );
                if ( uart_rx_buffer[ cnt ] == '\n' ) {
                   
                    log_printf( &logger, "-----------------------------\r\n" );
                }
            }
        } 
        else {
           
            process_cnt--;
            
            // Process delay 
            Delay_ms ( 100 );
        }
    }
}

// ------------------------------------------------------------------------ END

额外支持

资源

喜欢这个项目吗?

'购买此套件' 按钮会直接带您进入购物车,您可以在购物车中轻松添加或移除产品。