I2C
在 STM32CubeMX 中,I2C 设为 I2C 模式,需要启用对应的 DMA 通道,并配置相关中断。SMBus 模式的实例使用 SMBUS 句柄,不生成对象,libxr parse 给出警告。
示例
最后一个参数是 DMA 切换阈值,判断条件为传输长度严格大于该值。阈值为 3 时,3 字节不进入 DMA 分支,4 字节才满足条件。
static STM32I2C i2c1(&hi2c1, i2c1_buf, 3);
配置文件
代码生成后,会在 User/libxr_config.yaml 文件中生成如下 I2C 配置:
I2C:
i2c1:
buffer_size: 32
dma_section: ''
dma_enable_min_size: 3
buffer_size:I2C 传输/接收缓冲区大小dma_section:缓冲区所在的内存区域dma_enable_min_size:DMA 切换阈值;传输长度严格大于该值时才进入相应 DMA 分支
生成规则:
- 每个 I2C 实例生成一个收发共用的缓冲区,例如
i2c1_buf,长度为buffer_size字节; dma_enable_min_size作为STM32I2C构造函数的最后一个参数;dma_section决定缓冲区所在的 section,见 Cache;- FMPI2C 外设不生成对象,
libxr parse给出警告;LibXR 没有 FMPI2C 驱动。
修改该文件后重新生成代码,命令见重新生成代码。