全部文档
OneOS简介 硬件支持 快速开发指南 编译构造工具 API参考文档 高级语言 用户编程手册 OnePos定位 应用笔记 FAQ

I2C设备用户开发


基础BSP配置--以STM32为例

软件模拟I2C

目前使用软件模拟I2C驱动进行I2C设备的控制,在使用时需进行I2C驱动的配置。

使用 Menuconfig 配置工程选项

  1. 在对应的 oneos\projects\xxxxx(project文件夹) 目录下打开OneOS-Cube工具,在命令行输入menuconfig打开可视化配置界面;
  2. 如下图示,通过空格或向右方向键选择 (Top) → Drivers→ I2C 选择使用的模拟I2C通道,如 Enable I2C1 BUS (software simulation) 选项;

    [*] Using I2C device drivers
    [*]     Use GPIO to simulate I2C
    (10)        simulate I2C bus delay(us)
    [*]         Enable I2C1 BUS (software simulation)  --->
    [ ]         Enable I2C2 BUS (software simulation) (NEW)  ----
    [ ]         Enable I2C3 BUS (software simulation) (NEW)  ----
    [ ]         Enable I2C4 BUS (software simulation) (NEW)  ----
    [ ]     Use at24cxx eeprom
    
  3. 进入Enable I2C1 BUS (software simulation),根据实际情况选择配置I2C的scl和sda引脚;

(32) i2c1 scl pin number (NEW)
(33) I2C1 sda pin number (NEW)

硬件I2C

STM32CubeMX硬件I2C配置:

i2c_cube

注意事项:

  1. STM32的硬件I2C通讯速率等参数不支持程序运行后配置,避免引入其他问题,使用时请将参数配置为预期参数,保证I2C参数正确且可运行;
  2. 当操作系统同时启用软件I2C和硬件I2C时应注意避免引脚冲突;
  3. STM32的硬件I2C存在一定的缺陷,测试作为主机在挂载多个从设备时有较低的概率会出现通讯异常,检测到总线异常,此时必须要进行I2C控制器复位或者总线解锁等操作。目前的驱动中如果检测到此类错误会给出提示信息并尝试解决,正常测试过程碰到的问题都能够解决。测试过程中出现严重错误,如外设的通讯过程中频繁拔插导致的异常,可能会出现在线恢复失败的情况,请断电复位解决。

构建测试环境

  1. 由于I2C总线需要依赖于具体设备进行使用,可以打开Drivers→ Sensors中使用了I2C总线的传感器,进入传感器后选择为已经打开的I2C,并配置器件地址,注意硬件连接是否正确。

    [*] Using SENSOR device drivers
    [ ]     Enable sht20 (NEW)  ----
    [*]     Enable aht10  --->
    [ ]     Enable adxl345 (NEW)  ----
    [ ]     Enable bh1750 (NEW)  ----
    [ ]     Enable bmp180 (NEW)  ----
    [ ]     Enable mpu6xxx (NEW)  ----
    [ ]     Enable ak8963 (NEW)  ----
    [ ]     Enable lsm6dsl (NEW)  ----
    [ ]     Enable ap3216c (NEW)  ----
    
    (i2c1) aht10 i2c bus name (NEW)
    (0x38) aht10 i2c addr(7bit) (NEW)
    
  2. 通过Esc退出配置界面,退出时选择保存。

  3. 在命令行输入 scons --ide=mdk5 构建工程;

工程编译及实现

  1. 打开对应的 oneos\projects\xxxxx(project文件夹) 目录下的 project.uvprojx 工程文件;
  2. 在工程中加入具体I2C设备的控制或测试实现代码;
  3. 编译并下载工程,运行程序;
  4. 打开串口工具如xshell等,通信成功后,即可进行I2C设备的控制或测试。

results matching ""

    No results matching ""

    返回顶部