当前页面为 开发中 版本,查看特定版本的文档,请在页面左下角的下拉菜单中进行选择。

I2C Receive Send Interrupt

1 功能概述

本例程演示如何使用 I2C HAL Driver 实现中断方式的I2C收发功能。

2 环境准备

  • 硬件设备与线材:

    • PAN107X EVB 核心板底板各两块

    • JLink 仿真器(用于烧录例程程序)

    • USB-TypeC 线两条(用于底板供电和查看串口打印 Log)

    • 杜邦线数根或跳线帽数个(用于连接各个硬件设备)

  • 硬件接线:

    • 将 EVB 核心板插到底板上

    • 使用 USB-TypeC 线,将 PC USB 插口与 EVB 底板 USB->UART 插口相连

    • 使用杜邦线将 EVB0 底板上的 P13(SDA)、P14(CLK)分别接入EVB1对应相同PAD上

    • 使用杜邦线将 JLink 仿真器的:

      • SWD_CLK 引脚与 EVB 底板的 P00 排针相连

      • SWD_DAT 引脚与 EVB 底板的 P01 排针相连

      • SWD_GND 引脚与 EVB 底板的 GND 排针相连

  • PC 软件:

    • 串口调试助手(UartAssist)或终端工具(SecureCRT),波特率 921600(用于接收串口打印 Log)

3 编译和烧录

例程位置:<PAN10XX-NDK>\01_SDK\nimble\samples\peripheral\i2c_master_int_send\keil_107x

PAN10XX-NDK>\01_SDK\nimble\samples\peripheral\i2c_slave_int_receive\keil_107x

双击NDK>\01_SDK\nimble\samples\peripheral\i2c_master_int_send\keil_107x目录下Keil Project 文件打开工程进行编译并烧录至EVB0板。

双击NDK>\01_SDK\nimble\samples\peripheral\i2c_slave_int_receive\keil_107x目录下Keil Project 文件打开工程进行编译并烧录至EVB1板。

4 例程演示说明

  1. 先烧录i2c_slave_int_receive hex至EVB1,芯片会通过串口打印初始化 Log,i2c slave进入接收模式,等待接收32Byte数据:

    Try to load HW calibration data.. DONE.
    - Chip Info         : 0x1
    - Chip CP Version   : 255
    - Chip FT Version   : 4
    - Chip MAC Address  : D0000000037D
    - Chip UID          : 7D0300DDF8375603E8
    - Chip Flash UID    : 425031563233391700DDF8375603E878
    - Chip Flash Size   : 512 KB
    
    APP version: 255.255.65535
    slave recv start
    slave recv stop
    
  2. 烧录i2c_master_int_send hex至EVB0,芯片会通过串口打印初始化 Log,i2c master进入发送模式,发送8bit数据0x00~0x1f,发送完成在中断回调中打印发送的数据:

    Try to load HW calibration data.. DONE.
    - Chip Info         : 0x1
    - Chip CP Version   : 255
    - Chip FT Version   : 4
    - Chip MAC Address  : D000000000D1
    - Chip UID          : D10000F5F737560347
    - Chip Flash UID    : 425031563233391700F5F73756034778
    - Chip Flash Size   : 512 KB
    
    APP version: 255.255.65535
    master send start
    master send stop
    tx
    Send:
    00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
    
  3. i2c slave接收32 Byte数据并在中断回调中打印接收的数据,同时i2c slave转为发送模式,等待master发送读命令并发送数据,发送完成在中断回调中打印发送的数据:

    rx
    Receive
    00 01 02 03 04 05 00 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 
    slave send start
    slave send stop:0
    
    tx
    Send:
    00 01 02 03 04 05 00 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 
    
  4. i2c master发送32次读命令,同时接收32 Byte数据并在中断回调中打印接收的数据:

    master receive start
    master receive stop
    rx
    Receive
    00 01 02 03 04 05 00 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F