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 例程演示说明¶
先烧录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
烧录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
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
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