I2C Receive Send Dma¶
1 功能概述¶
本例程演示如何使用 I2C HAL Driver和DMA HAL Driver 实现dma方式的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_dma_receive\keil_107x
PAN10XX-NDK>\01_SDK\nimble\samples\peripheral\i2c_slave_dma_send\keil_107x
双击NDK>\01_SDK\nimble\samples\peripheral\i2c_master_dma_receive\keil_107x目录下Keil Project 文件打开工程进行编译并烧录至EVB0板。
双击NDK>\01_SDK\nimble\samples\peripheral\i2c_slave_dma_send\keil_107x目录下Keil Project 文件打开工程进行编译并烧录至EVB1板。
4 例程演示说明¶
先烧录i2c_slave_dma_send hex至EVB1,芯片会通过串口打印初始化 Log,i2c slave进入发送模式,等待i2c master 发送读命令并发送数据,发送完成后在中断回调函数中打印slave DMA callback及发送的数据:
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 send start slave send stop slave DMA callback Flag is I2C_CB_FLAG_DMA 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_master_dma_receive hex至EVB0,芯片会通过串口打印初始化 Log,i2c master进入接收模式,发送读命令并接收slave发送的数据,在中断回调函数中打印接收到的数据:
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 receive start master receive stop master DMA callback Flag is I2C_CB_FLAG_DMA 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