主要内容

ADXL345加速计芯片使用NI usb8451适配器的轻拍检测

这个例子展示了如何使用NI®USB 8451 I2C适配器从ADXL345 I2C支持的加速计芯片写入和读取数据。加速计将被配置为检测双击和MATLAB®将被用来显示一个消息,芯片已经检测到这一点。

仪器控制工具箱™支持通过接口和驱动程序与仪器通信。

有关支持的硬件的完整列表,请访问仪表控制工具箱产品页面

需求

本例要求安装Microsoft®Windows®系统和NI845x驱动程序2.1.1或更高版本。在使用此示例之前,请确保Measurement & Automation Explorer识别NI845x设备。此外,在从MATLAB访问设备之前,确保测量和自动化资源管理器™是关闭的。

该示例使用了Analog Devices®ADXL345加速度计,该加速度计安装在SparkFun™的9自由度传感器棒上。加速度计有I2C总线线,可以连接到适配器的I2C总线线输入。总线线路需要拉高与外部拉起电阻作为NI USB 8451没有可编程的内部拉起电阻。注意,使用一个电平移位器来分隔V_s和V_dd。

简介

仪器控制工具箱™支持通过I2C适配器(如NI USB 8451)与I2C设备通信。该工具箱允许您创建一个I2C接口,该接口可用于配置适配器以与I2C外围芯片通信。

本例将演示如何配置一个基于I2C的加速计,使其响应用手指轻敲面包板两次。当检测到双击时,MATLAB命令窗口中会显示一条消息。

验证NI845x安装

使用instrhwinfo命令,检查NI845x驱动程序是否正确安装,以及仪表控制工具箱是否能够正确检测到。

单板序列号可以帮助您识别设备

instreset i2cInfo = insthwinfo (“i2c”“ni845x”);disp (i2cInfo);
AdaptorDllName: [1x94 char] AdaptorDllVersion: 'Version 3.4' AdaptorName: 'ni845x' boardinsinuse: [1x0 double] installedboardinds: 0 DetectedBoardSerials: {'0180D47A (BoardIndex: 0)'} ObjectConstructorName: 'i2c('ni845x', BoardIndex, RemoteAddress);' VendorDllName: 'ni845x .dll' VendorDriverDescription: 'National Instruments NI USB 845x Driver'

创建I2C接口并设置总线速度(BitRate属性)

加速度计地址= hex2dec(53岁的);i2cInterface = i2c(“ni845x”, 0,加速度计地址);fopen (i2cInterface);i2cInterface。比特率= 100;

设置分屏阈值、分屏延时、分屏窗口和分屏时长注册值

根据设备的数据表设置寄存器值。从设备上读回该值,以确认该值确实已设置。

threshTapRegisterAddress = hex2dec(“一维”);valueToWrite = hex2dec(“50”);% 5 g值disp ([“写作价值:”num2str (valueToWrite)]);fwrite(i2cInterface, [threshTapRegisterAddress valueToWrite]);写入文件(i2cInterface threshTapRegisterAddress);registerValue = fread(i2cInterface, 1,“uint8”);disp ([THRESH_TAP寄存器的值是:num2str (registerValue)]);latentRegisterAddress = hex2dec(“22”);valueToWrite = hex2dec(“5”);disp ([“写作价值:”num2str (valueToWrite)]);fwrite(i2cInterface, [latentRegisterAddress valueToWrite]);确认返回到寄存器的值写入文件(i2cInterface latentRegisterAddress);registerValue = fread(i2cInterface, 1,“uint8”);disp ([“LATENT寄存器的值是:”num2str (registerValue)]);windowRegisterAddress = hex2dec(“23”);valueToWrite = hex2dec(“FF”);disp ([“写作价值:”num2str (valueToWrite)]);fwrite(i2cInterface, [windowRegisterAddress valueToWrite]);确认返回到寄存器的值写入文件(i2cInterface windowRegisterAddress);registerValue = fread(i2cInterface, 1,“uint8”);disp ([WINDOW寄存器的值是:num2str (registerValue)]);durationRegisterAddress = hex2dec(“21”);valueToWrite = hex2dec(“十”);disp ([“写作价值:”num2str (valueToWrite)]);fwrite(i2cInterface, [durationRegisterAddress valueToWrite]);写入文件(i2cInterface durationRegisterAddress);registerValue = fread(i2cInterface, 1,“uint8”);disp ([DUR寄存器的值是:num2str (registerValue)]);tapAxesRegisterAddress = hex2dec(“2”);valueToWrite = bin2dec(“00000111”);disp ([“写作价值:”num2str (valueToWrite)]);fwrite(i2cInterface, [tapAxesRegisterAddress valueToWrite]);写入文件(i2cInterface tapAxesRegisterAddress);registerValue = fread(i2cInterface, 1,“uint8”);disp ([TAP_AXES寄存器的值是:num2str (registerValue)]);interruptEnableRegisterAddress = hex2dec(“2 e”);valueToWrite = bin2dec(“01100000”);disp ([“写作价值:”num2str (valueToWrite)]);fwrite(i2cInterface, [interruptEnableRegisterAddress valueToWrite]);写入文件(i2cInterface interruptEnableRegisterAddress);registerValue = fread(i2cInterface, 1,“uint8”);disp ([INT_ENABLE寄存器的值是:num2str (registerValue)]);
写入值:80 THRESH_TAP寄存器值:80写入值:5 LATENT寄存器值:5写入值:255 WINDOW寄存器值:255写入值:16 DUR寄存器值:16写入值:7 TAP_AXES寄存器值:7写入值:96 INT_ENABLE寄存器值:96

通过写入POWER_CTL寄存器来启用操作

根据数据表写入POWER_CTL寄存器将导致芯片从待机模式进入正常工作模式。

powerControlRegisterAddress = hex2dec(“二维”);valueToWrite = bin2dec(“00001000”);disp ([“写作价值:”num2str (valueToWrite)]);fwrite(i2cInterface, [powerControlRegisterAddress valueToWrite]);写入文件(i2cInterface powerControlRegisterAddress);registerValue = fread(i2cInterface, 1,“uint8”);disp ([POWER_CTL寄存器的值是:num2str (registerValue)]);
写入值:8 POWER_CTL寄存器的值:8

轮询中断寄存器

中断源寄存器将包含与特定源生成的中断标志相对应的位。检查是否生成了双击中断

interruptSourceRegisterAddress = hex2dec(“30”);disp (“等待双击……”);(1) fwrite(i2cInterface, interruptSourceRegisterAddress);InterruptValues = fread(i2cInterface, 1);TapInterrupt = bitand(InterruptValues, bin2dec)“00100000”));如果TapInterrupt disp (“发现双击!”);打破结束结束
等待双击…发现双击!
Baidu
map