主要内容

从NXP FRDM-K64F硬件上的NXP FXOS8700CQ传感器读取温度

这个例子向您展示了如何使用基于I2C的NXP FRDM-K64F板的金宝appSimulink编码金宝app器支持包来配置和读取NXP FXOS8700CQ传感器的温度。

介绍

金宝app针对NXP FRDM-K金宝app64F板的Simulink®Coder™支持包,允许您使用I2C主读/ I2C主写块与基于I2C的设备通信。

在本例中,您将学习如何与NXP FRDM-K64F板上的NXP FXOS8700CQ传感器通信。FXOS8700CQ是一个小,低功耗,3轴,线性加速度计和3轴,磁强计组合成一个单一的封装。该传感器使用I2C总线与NXP FRDM-K64F板连接。

关于设备的详细信息,请参见FXOS8700CQ数据表

这个示例向您展示如何使用I2C主读和I2C主写块从FXOS8700CQ读取温度值。如果你想从这个传感器读取加速度计数据或磁力计数据,你可以使用FXOS8700 6-Axes传感器可在NXP FRDM-K64F图书馆

先决条件

我们建议您完成了解NXP FRDM-K64F板的Simu金宝applink编码器支持包金宝app的例子,代码验证和外部模式的验证的例子。

所需的硬件

要运行此示例,您将需要以下硬件:

  • NXP FRDM-K64F董事会

  • USB类型A至Micro-B电缆

模型

open_system (“freedomk64f_I2C_tempSensor”);

任务1 -为NXP FRDM-K64F硬件配置型号

在本任务中,您将为NXP FRDM-K64F硬件配置模型。

1.打开使用NXP FRDM-K64F硬件初始化和读取I2C传感器温度模型。

2.在您的Simul金宝appink模型中,单击模拟>模型配置参数打开配置参数对话框。

3.选择硬件实现窗格中,选择NXP FRDM-K64F硬件的硬件板参数列表。

4.点击好吧

任务2 -配置模型为读取温度

这个任务展示了如何初始化NXP FXOS8700CQ传感器的配置寄存器来读取温度数据。

1.打开使用NXP FRDM-K64F硬件初始化和读取I2C传感器温度模型。

2.注意模型中的两个子系统:

  • One_time_initialization子系统只在模型执行的第一步执行一次。在剩下的执行时间里Execution_loop子系统运行。子系统的选择性执行是使用单位延迟启用子系统块从Simulink库。金宝app

  • One_time_initialization子系统执行2个功能。它设置传感器的模式并激活传感器。

4.配置I2C大师写设置NXP FXOS8700CQ传感器的模式:

  • 根据FXOS8700CQ数据表,当传感器设置为磁强计模式或混合模式时,FXOS8700CQ传感器的温度寄存器给出一个有效的温度读数。传感器的模式可以通过写入M_CTRL_REG1寄存器的'm_hms'位来设置。

open_system (“freedomk64f_I2C_tempSensor / One_time_initialization”

  • 打开I2C Write1大师块。

  • 板载FXOS8700CQ传感器通过PTE24 (SCL)和PTE25 (SDA)引脚连接到处理器的I2C模块。正如在FRDM K64F参考手册这些引脚属于I2C模块0。因此,设置I2C模块为0。

  • 请注意,奴隶地址设置为'0x1D',奴隶寄存器地址设置为'0x5B'。这可以在NXP FXOS8700CQ数据表'0x1D'是设备的从地址,'0x5B'是寄存器M_CTRL_REG1的地址。

  • 设置奴隶字节顺序配置寄存器的大小为8位,其值需要使用Big Endian通过I2C总线发送。

5.配置I2C大师写激活NXP FXOS8700CQ传感器:

  • 打开I2C Write2大师块在One_time_initialization子系统中。

  • I2C模块奴隶地址设置为0和'0x1D',如上面的步骤4所述。

  • 请注意,奴隶寄存器地址设置为“0x2A”。这可以在NXP FXOS8700CQ数据表'0x2A'是寄存器CTRL_REG1的地址。

  • 复位后,传感器处于待机状态。您可以通过设置传感器为主动模式活跃的在CTRL_REG1到1中NXP FXOS8700CQ数据表

6.注意One_time_initialization子系统:

  • Constant1Constant2block保存要写入M_CTRL_REG1和CTRL_REG1寄存器的值'0x01'。通过将'0b01'写入M_CTRL_REG1寄存器的'm_hms'位,传感器被设置为'仅磁强计'模式。

  • 连接到Display块的I2C主Read1和I2C主Read2块有助于验证将正确的数据写入配置寄存器。I2C主读块使用与各自的I2C主写块相同的设置。

  • 设置I2C主写块的优先级高于I2C主写块的优先级。这是为了确保先设置传感器的模式,然后再激活。I2C主写块的优先级设置为高于相应的I2C主读块的优先级,以确保您读取配置寄存器设置后的值。要设置块的优先级,右键单击块> Properties > General > Priority。要了解更多关于块优先级及其对块执行顺序的影响,请参阅设置块属性

7.打开并观察下面的Execution_loop子系统:

open_system (“freedomk64f_I2C_tempSensor / Execution_loop”

  • 打开I2C主读块。正如前面提到的I2C主写块,请注意I2C模块设置为0,奴隶地址设置为“0x1D”。

  • 这可以在NXP FXOS8700CQ数据表'0x51'是TEMP寄存器的地址,其中包含8位2的补码形式的温度值。因此,奴隶寄存器地址设置为'0x51',数据类型数据大小(N)分别设置为'int8'和'1'。

  • 传感器的灵敏度为0.96 C/LSB。因此,获得块执行对0.96的乘法,给出以摄氏度(C)为单位的温度值。

任务3 -在外部模式下运行模型

在这个任务中,您将运行模型外部模式来监控温度。参考的代码验证和外部模式的验证演示,以进一步了解外部模式。

1.改变模拟模式在模型的工具栏上外部

2.单击运行按钮,以在外部模式下运行模型。

3.打开One_time_initialization子系统。

4.验证显示blocks显示了一个十六进制的值'0x01',与所需的配置寄存器值相对应。

5.Execution_loop子系统、监控显示以摄氏度观察FXOS8700CQ温度读数。当显示器显示温度超过27度时,LED就会发光。

6.根据您的环境温度,在“开关”块中更改阈值,然后单击应用.当温度超过新的阈值时,看到板载LED发光。

7.单击停止按钮,以结束外部模式执行。金宝app

其他可以尝试的事情

按照本示例中的步骤与其他基于I2C的传感器通信。