主要内容

通过I2C总线接入传感器

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

简介

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

  • 访问EEPROM

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

所需的硬件

这个例子需要为不同的任务配置不同的硬件。

访问EEPROM

Spectrum Digital F28335/F2808 eZdsp板

请注意:任何C2000 (c281x除外)的controlSTICK或ControlCARD都没有配备I2C EEPROM。必须将I2C EEPROM添加到此板才能运行该模型。

可用的模型:

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

  • 德州仪器™F28069/F28377S/F28379D/F28004x发射台

  • 传感器BoosterPack

可用的模型:

c28x_i2c_sensor.slx

读取和写入数据到EEPROM

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

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

  • eepm数据:写入EEPROM的数据。

  • eepm地址:写入数据的EEPROM地址。

  • 触发子系统:交替触发EEPROM Data Write和EEPROM Data Read子系统。当EEPROM数据发生变化时,EEPROM数据写入子系统将被触发。没有EEPROM写时触发EEPROM Data Read。

  • EEPROM数据写入子系统:由I2C传输块组成,它在数据写入结束时将EEPROM地址和数据连同停止条件一起发送到EEPROM。

  • EEPROM数据读取子系统:由I2C Transmit块组成,用于发送读取数据的EEPROM地址。使用while循环的等待逻辑确保地址从Tx FIFO发送到EEPROM。I2C接收块读取指定长度的数据,并在数据写入结束时设置停止条件。

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

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

  2. 配置参数窗口中,单击硬件实现并导航到目标硬件资源>外部模式并设置串行端口参数输入COM端口设备管理器>港口(COM & LTP)在Windows。有关更多信息,请参见参数调优和信号记录与串行外部模式

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

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

使用中断来读取和写入数据到EEPROM

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

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

  • eepm数据:写入EEPROM的空闲计数器数据。

  • eepm地址:写入数据的EEPROM地址。

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

  • EEPROM数据写入子系统:由I2C传输块组成,它在数据写入结束时将EEPROM地址和数据连同停止条件一起发送到EEPROM。

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

您可以在外部模式下运行模型,并使用显示块监视传输和接收的数据。

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

  2. 配置参数窗口中,单击硬件实现>目标硬件资源>外部模式并设置串行端口参数输入COM端口设备管理器>港口(COM & LTP)在Windows。有关更多信息,请参见参数调优和信号记录与串行外部模式

  3. 确保系统中断SCD中断,阿迪中断>硬件实现> I2C .配置参数

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

从i2c传感器读取加速度计和陀螺仪数据

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

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

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

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

  • 数据调整分系统:在使用显示块显示数据之前,将数据按要求对齐。

您可以在外部模式下运行模型,并监视瞄准镜中的加速度计和陀螺仪数据。

1.打开c28x_i2c_sensor模型。此模型被配置为TI Delfino F2837xS硬件板。若要配置其他TI C2000处理器的型号,可以在配置参数>硬件实现窗格。

2.在配置参数窗口中,单击硬件实现并导航到目标硬件资源>外部模式并设置串行端口参数输入COM端口设备管理器>港口(COM & LTP)在Windows。有关更多信息,请参见参数调优和信号记录与串行外部模式

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

4.选择合适的GPIO引脚SDA而且sci在硬件实现> I2C_A/I2C_B与Sensor Boosterpack通信。

5.运行模型,观察瞄准镜中的加速度计和陀螺仪传感器数据。

更多关于