主要内容

本页采用了机器翻译。点击此处可查看英文原文。

使用 I2C 总线访问传感器

本示例展示了如何使用 I2C 模块与基于 I2C 的设备进行通信。

简介

在本示例中,您将学习如何配置和使用 I2C 模块来:

  • 访问 EEPROM

  • 读取基于 I2C 的传感器的加速度计和陀螺仪数据

所需硬件

此示例针对不同的任务需要不同的硬件配置。

访问 EEPROM

Spectrum Digital F28335/F2808 eZdsp 板

注意:任何带扩展坞的 C2000(c281x 除外)controlSTICK 或 ControlCARD 均未配备 I2C EEPROM。要运行该模型,必须向该电路板添加 I2C EEPROM。

可用模型:

读取基于 I2C 的传感器的加速度计和陀螺仪数据

  • Texas Instruments™ F28069/F28377S/F28379D/F28004x LaunchPad

  • 传感器增强包 (BOOSTXL-SENSORS)

可用模型:

c28x_i2c_sensor

对 EEPROM 进行数据读写

该模型向 EEPROM 写入 4 个字节,并从相应的 EEPROM 地址读取数据,以显示通信成功。

该模型由以下子系统组成:

  • EEPROM 数据:包含写入 EEPROM 的数据。

  • EEPROM 地址:包含数据写入的 EEPROM 地址。

  • 触发子系统:交替触发 EEPROM 数据写入子系统和 EEPROM 数据读取子系统。当 EEPROM 数据发生变化时,EEPROM 数据写入子系统将被触发。当没有 EEPROM 写入操作时,会触发 EEPROM 数据读取操作。

  • EEPROM 数据写入子系统:由 I2C 发送模块组成,该模块在数据写入结束时向 EEPROM 发送 EEPROM 地址和数据以及停止条件。

  • EEPROM 数据读取子系统:由 I2C 发送模块组成,该模块发送要从中读取数据的 EEPROM 地址。使用 while 循环的等待逻辑可确保将地址从 Tx FIFO 发送到 EEPROM。I2C Receive 模块读取指定长度的数据,并在数据写入结束时发出停止信号。

您可以以外部模式运行模型,使用显示模块监控发送和接收的数据。您可以更改“EEPROM 数据”子系统中的数据,并在显示模块中查看更改。

  1. 打开 c28x_i2c_eeprom 模型。该模型配置用于 TI F28335 硬件板。要将模型配置为在其他 TI C2000 处理器上运行,您可以在“配置参数 > 硬件实现”窗格中更改“硬件板”参数。

  2. 配置参数窗口中,点击硬件实现,导航至 Target hardware resources > 外部模式,并将 Serial port 参数设置为 Windows 系统中 Device Manager > 端口(COM & LTP)处的 COM 端口。有关更多信息,请参阅利用串行通信进行参数调节和信号记录

  3. 运行模型并观察“接收数据”和“发送数据”显示模块。

  4. 更改“EEPROM 数据”子系统中的 4 字节数据,并观察 Receive data 模块中反映出的变化。

使用中断对 EEPROM 进行数据读写操作

该模型向 EEPROM 写入 4 个字节,并从相应的 EEPROM 地址读取数据,以显示通信成功。

该模型由以下子系统组成:

  • EEPROM 数据:包含写入 EEPROM 的自由运行计数器数据。

  • EEPROM 地址:包含数据写入的 EEPROM 地址。

  • 触发逻辑:交替触发 EEPROM 数据写入子系统和 EEPROM 数据读取子系统。触发逻辑由 STATVAR 数据存储变量组成,当 SCD 中断触发时,该变量会被更新以在 I2C ISR 模块中启动写入/读取操作。

  • EEPROM 数据写入子系统:由 I2C 发送模块组成,该模块在数据写入结束时向 EEPROM 发送 EEPROM 地址和数据以及停止条件。

  • EEPROM 数据读取子系统:由 I2C 发送模块组成,该模块将 EEPROM 地址发送到 EEPROM 以启动 EEPROM 读取操作。当地址从 TX FIFO 发送到 EEPROM 时,会产生 ARDY 中断。然后,在中断服务例程 (ISR) 中使用 I2C Receive 模块来读取指定长度的数据,并在数据写入结束时发出停止条件。

您可以以外部模式运行模型,并使用显示模块监控发送和接收的数据。

  1. 打开 c28x_i2c_eeprom_interrupt 模型。该模型配置用于 TI F28335 硬件板。要配置模型以在其他 TI C2000 处理器上运行,您可以在“配置参数 > 硬件实现”窗格中更改目标硬件。

  2. 配置参数窗口中,依次点击硬件实现 > Target hardware resources > 外部模式,并将 Serial port 参数设置为 Windows 系统中 Device Manager > 端口(COM & LTP)处的 COM 端口.有关更多信息,请参阅利用串行通信进行参数调节和信号记录

  3. 确保在配置参数 > 硬件实现 > I2C 中选择系统中断SCD 中断ARDY 中断

  4. 运行模型,并在“接收数据”和“发送数据”显示模块中观察自由运行计数器数据。

读取基于 I2C 的传感器的加速度计和陀螺仪数据

该模型配置传感器增强器中的寄存器,读取加速度计和陀螺仪的数据。

该模型由以下子系统组成:

  • 初始化子系统:初始化子系统仅在启动时触发一次。初始化子系统通过向传感器发送一系列命令来执行所需的传感器初始化,每个命令之间有 1 毫秒的延迟。对于每个命令,I2C 发送模块会将地址、数据以及停止条件发送到传感器。初始化结束时,读取周期通过使用 I2C 发送模块向传感器发送要读取的寄存器地址来启动。

  • 传感器读取:传感器读取子系统由 I2C Receive 模块组成,该模块读取传感器数据以及停止当前读取周期的停止条件。然后,I2C 发送模块将地址发送到传感器,以启动下一个周期的数据读取。为确保 I2C Receive 模块在 I2C Transmit 模块之前执行,请右键点击并选择属性 > 优先级 ,为这两个模块设置模块优先级。

  • 数据重新对齐子系统:使用 Display 模块显示数据之前,先按要求对齐数据。

您可以以外部模式运行模型,并在示波器中监控加速度计和陀螺仪数据。

1.打开 c28x_i2c_sensor 模型。该模型配置用于 TI Delfino F2837xS 硬件板。要为其他 TI C2000 处理器配置模型,您可以在配置参数 > 硬件实现窗格中更改硬件板。

2.在配置参数窗口中,点击硬件实现,导航至 Target hardware resources > 外部模式,并将 Serial port 参数设置为 Windows 系统中 Device Manager > 端口(COM & LTP)处的 COM 端口。有关更多信息,请参阅利用串行通信进行参数调节和信号记录

3.确保传感器增强器已连接到 Launchpad,并在 Tx 和 Rx 模块上选择相应的 I2C 模块 (A/B)。I2C_B 模块仅适用于 F2807xs/F2837xS 和 F2837xD 处理器。

4.在“硬件实现”> I2C_A/I2C_B 中为 SDASCL 选择合适的 GPIO 引脚,以便与传感器增强器通信。

5.运行模型,并在示波器中观察加速度计和陀螺仪传感器数据。

有关详细信息