初学者
10 分钟

使用我们的 I2C 适配器和 PIC32MZ2048EFH100 管理各种传感器和执行器

一次点击统治一切:将设备统一连接到单一总线上

8-pin I2C Click with Flip&Click PIC32MZ

已发布 6月 24, 2024

点击板

8-pin I2C Click

开发板

Flip&Click PIC32MZ

编译器

NECTO Studio

微控制器单元

PIC32MZ2048EFH100

这款创新产品开启了I2C连接的新可能,激发用户探索并释放8针连接的全部潜力,促进电子项目中的创新和创造力。

A

A

硬件概览

它是如何工作的?

8-pin I2C Click是一款适配器Click板™,简化了扩展板与mikroBUS™插座的连接。此Click板™代表了一块小型PCB,可以像其他Click板™一样连接到mikroBUS™插座,上面放置了一个2x4母头。每个母头引脚对应mikroBUS™插座上的一个引脚,例如I2C线(SCL、SDA)以及用于选择I2C线拉功能的两个跳线、3V3电源和接地。此Click板™允许轻松访问和操作引脚,

同时始终保持完美的连接质量。与Apple的MFI兼容是8-pin I2C Click板™最重要的功能,这确保了其与其他Apple配件的正确操作。名称是长形式“Made for iPod”的缩写,最初的程序最终成为MFI,指的是与Apple的iPod、iPad和iPhone兼容的外围设备。8-pin I2C Click使用标准I2C 2线接口与MCU通信。连接到此Click板™的mikroBUS™的线路通过顶部的8针母头共

享,该母头镜像连接的mikroBUS™插座的引脚。8-pin I2C Click还共享3V3电源轨,使其与其他电源兼容的Click板™和开发系统兼容。此Click板™只能在3.3V逻辑电压水平下运行。在使用不同逻辑电压水平的MCU之前,必须进行适当的逻辑电压电平转换。此外,此Click板™配备了一个包含函数和示例代码的库,可用作进一步开发的参考。

8-pin I2C 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
NC
NC
RST
NC
NC
CS
NC
NC
SCK
NC
NC
MISO
NC
NC
MOSI
Power Supply
3.3V
3.3V
Ground
GND
GND
NC
NC
PWM
NC
NC
INT
NC
NC
TX
NC
NC
RX
I2C Clock
RA2
SCL
I2C Data
RA3
SDA
NC
NC
5V
Ground
GND
GND
1

“仔细看看!”

Click board™ 原理图

8-pin I2C 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
GNSS2 Click complete accessories setup image 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

软件支持

库描述

该库包含 8-pin I2C Click 驱动程序的 API。

关键功能:

  • c8pini2c_generic_write - 通用写入函数

  • c8pini2c_generic_read - 通用读取函数

开源

代码示例

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

/*!
 * \file 
 * \brief 8pinI2c Click example
 * 
 * # Description
 * This demo example reads temperature detected by Surface temp Click board.
 *
 * The demo application is composed of two sections :
 * 
 * ## Application Init 
 * Initializes the driver and configures a Surface temp Click board.
 * 
 * ## Application Task  
 * Reads the temperature detected by Surface temp Click board and 
 * logs it on the USB UART each second.
 * 
 * @note
 * In order to run this example successfully, a Surface temp Click board needs to be 
 * connected properly to an 8-pin I2C Click board.
 * 
 * \author MikroE Team
 *
 */
// ------------------------------------------------------------------- INCLUDES

#include "board.h"
#include "log.h"
#include "c8pini2c.h"

// ------------------------------------------------------------------ VARIABLES

static c8pini2c_t c8pini2c;
static log_t logger;

// Surface temp Click - example
#define SURFACE_TEMP_DEVICE_SLAVE_ADDRESS 0x48
#define SURFACE_TEMP_REG_SOFT_RESET       0x2F
#define SURFACE_TEMP_REG_ID               0x0B
#define SURFACE_TEMP_REG_CONFIG           0x03
#define SURFACE_TEMP_REG_TEMP_MSB         0x00

// ------------------------------------------------------- ADDITIONAL FUNCTIONS

void surfacetemp_soft_reset (  )
{
    uint8_t tx_data;

    tx_data = SURFACE_TEMP_REG_SOFT_RESET;

    c8pini2c_generic_write ( &c8pini2c, SURFACE_TEMP_DEVICE_SLAVE_ADDRESS, 
                                        0, &tx_data, 1 );
}

uint8_t surfacetemp_setup (  )
{
    uint8_t tmp;

    surfacetemp_soft_reset( );
    Delay_100ms( );
    c8pini2c_generic_read( &c8pini2c, SURFACE_TEMP_DEVICE_SLAVE_ADDRESS, 
                                      SURFACE_TEMP_REG_ID, &tmp, 1 );

    if ( tmp != 0xCB )
    {
        return 1;
    }
    tmp = 0x93;
    c8pini2c_generic_write( &c8pini2c, SURFACE_TEMP_DEVICE_SLAVE_ADDRESS, 
                                       SURFACE_TEMP_REG_CONFIG, &tmp, 1 );

    return 0;
}

float surfacetemp_get_temperature (  )
{
    uint8_t rx_buff[ 2 ];
    int16_t temp;
    float temperature;

    c8pini2c_generic_read( &c8pini2c, SURFACE_TEMP_DEVICE_SLAVE_ADDRESS, 
                                      SURFACE_TEMP_REG_TEMP_MSB, &rx_buff[ 0 ], 2 );

    temp = rx_buff[ 0 ];
    temp <<= 8;
    temp |= rx_buff[ 1 ];
    temp &= 0xFFF8;

    temperature = (float)(temp);
    temperature *= 0.0078;

    return temperature;
}

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

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

    uint8_t status;

    /** 
     * 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.

    c8pini2c_cfg_setup( &cfg );
    C8PINI2C_MAP_MIKROBUS( cfg, MIKROBUS_1 );
    c8pini2c_init( &c8pini2c, &cfg );

    status = surfacetemp_setup( );
    if ( status == 0 )
    {
        log_printf( &logger, "--- INIT DONE --- \r\n" );
    }
    else
    {
        log_printf( &logger, "--- INIT ERROR --- \r\n" );
        for( ; ; );
    }
}

void application_task ( void )
{
    float temperature;

    temperature = surfacetemp_get_temperature( );
    log_printf( &logger, "> Temperature : %.2f Celsius\r\n", temperature );
    Delay_ms ( 1000 );
}

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;
}

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

额外支持

资源

喜欢这个项目吗?

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