从MMA8451Q三轴数字加速度计I2C读取加速度数据
本例展示了如何使用Simulink Coder Suppor金宝appt Package 金宝appfor NXP FRDM-KL25Z板根据板的朝向来控制RGB LED的颜色。
简介
金宝appNXP FRDM-K金宝appL25Z板的Simulink Coder支持包使您能够在FRDM-KL25Z板上创建和运行Simulink®模型。
在本例中,您将学习如何与板载MMA8451Q数字加速度计通信,该数字加速度计与NXP FRDM-KL25Z板具有I2C接口。有关传感器的详细信息,请参见MMA8451Q数据表.这个例子展示了如何编程FRDM-KL25Z板来控制RGB LED的颜色基于板的方向。
先决条件
我们建议填写NXP FRDM-KL25Z板的Simul金宝appink编码器支持包金宝app.
所需的硬件
要运行这个例子,你需要以下硬件:
NXP FRDM-KL25Z板
任务-配置和运行基于I2C的加速度计模型。
1.将Mini USB电缆从主机上的USB端口插入到FRDM-KL25Z板上的OpenSDA Mini - b USB连接器。
2.打开基于I2C的加速度计模型。
open_system (“freedomboard_i2c”);
3.注意模型中的两个子系统:
的One_time_initialization子系统激活MMA8451Q传感器。
的Execution_loop子系统读取14位加速度数据,并根据方向设置RGB led的颜色和强度。
的One_time_initialization子系统只在模型执行的第一步执行一次。在其余的执行时间内,Execution_loop子系统运行。方法处理子系统的这种选择性执行单位延迟和启用子系统块从Simulink库。金宝app
4.I2C主写块配置:
传感器设置为有源模式通过设置活跃的将CTRL_REG1寄存器的位转换为“1”MMA8451Q数据表.
打开One_time_initialization子系统。
open_system (“freedomboard_i2c / One_time_initialization”)
打开I2C MasterWrite块。
板载MMA8451Q传感器通过引脚PTE24 (SCL)和PTE25 (SDA)连接到处理器的I2C模块。如在FRDM KL25Z原理图这些引脚属于I2C模块0。因此,设置I2C模块为0。
注意从设备地址设置为“0x1D”和从寄存器地址设置为“0x2A”。它可以在MMA8451Q数据表'0x1D'是设备的从地址,'0x2A'是寄存器CTRL_REG1的地址。
设置从字节顺序BigEndian。
注意常数块保存了要写入CTRL_REG1寄存器的值“1”,该寄存器将激活传感器。
5.配置I2C模块0:
中I2C模块选择上述SDA和SCL引脚配置参数>硬件实现>目标硬件资源> I2C0 > SCL/SDA引脚.
6.配置I2C主读块:
打开Execution_loop子系统。
open_system (“freedomboard_i2c / Execution_loop”)
在Execution_loop子系统中,三个I2C主读块用于从包含x轴、y轴和z轴输出样本数据的寄存器中读取数据。
打开三个I2C MasterRead块中的任何一个。如前所述,设置I2C MasterWrite块I2C模块到0和从设备地址“0 x1d”。
它可以在MMA8451Q数据表'0x01', '0x03'和'0x05'是x轴,y轴和z轴MSB数据的寄存器地址。注意从寄存器地址I2C主读块的十六进制值分别设置。
默认情况下,这些寄存器以2的补码形式输出左对齐的14位输出样例数据。MMA8451Q传感器以BigEndian格式存储数据。因此,选择从字节顺序“BigEndian”,数据量(N)到1和数据类型“int16”。通过设置样品时间to 0.1每0.1秒发起一次I2C读请求。
7.的x-accel2brightness在Execution_loop子系统内部,从I2C MasterRead块获取原始x轴加速度数据作为输入,将其转换并为红色Led输出等效占空比。类似地,y-accel2brightness子系统和z-accel2brightness子系统输出绿色和蓝色led的占空比。
8.在Simuli金宝appnk模型中,单击构建模型按钮。
9.当模型在NXP FRDM-KL25Z单板上开始运行时,可以观察到RGB LED的颜色随着单板朝向的不同而变化。
其他可以尝试的事情
的其他特性进行实验MMA8451Q传感器。例如:
适当地设置单、双、定向轻敲寄存器,以检测加速度计上的轻敲。
使用传感器的Auto-WAKE/SLEEP检测模式,仅当FRDM-KL25Z板摇动时LED才会发光。