主要内容

利用检测与ADXL345加速度计芯片使用8451 NI USB适配器

这个例子展示了如何编写和读取数据ADXL345 I2C使加速度计芯片使用8451 I2C倪®USB适配器。加速度计将被配置为检测双击和MATLAB®将用于显示一条消息,芯片已经察觉到这一点。

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

为支持硬件的完整列表,请访问仪器控制工具箱金宝app产品页面

需求

这个例子需要Microsoft®Windows®系统和NI845x司机2.1.1安装或更高。确保测量及自动化浏览器识别NI845x设备之前使用这个例子。此外,确保测量及自动化Explorer™是MATLAB访问之前关闭装置形式。

例子使用了模拟设备®ADXL345加速度计安装在一个9自由度传感器贴于SparkFun™。加速度计具有I2C总线,可以连接到适配器I2C总线线路输入。公交线路需要停高与外部8451 NI USB上拉电阻没有可编程内部引体向上电阻。注意,水平移动装置是用来单独V_s V_dd。

介绍

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

这个例子将演示如何配置基于I2C的加速度计响应用手指敲打两次试验板。双击时发现,消息将显示在MATLAB命令窗口。

验证NI845x安装

使用instrhwinfo命令来检查NI845x驱动程序是否安装正确,仪器控制工具箱可以正确检测。

董事会序列号应该帮助你识别你的设备

instrreset i2cInfo = instrhwinfo (“i2c”,“ni845x”);disp (i2cInfo);
AdaptorDllName: [1 x94 char] AdaptorDllVersion: 3.4版本的AdaptorName:“ni845x”BoardIdsInUse: [1 x0双]InstalledBoardIDs: 0 DetectedBoardSerials: {“0180 d47a (BoardIndex: 0) '} ObjectConstructorName:“i2c (ni845x, BoardIndex RemoteAddress);“VendorDllName: ni845x。dll的VendorDriverDescription:国家仪器NI USB 845 x驱动程序”

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

accelerometerAddress = hex2dec (53岁的);i2cInterface = i2c (“ni845x”0 accelerometerAddress);fopen (i2cInterface);i2cInterface。比特率= 100;

设置阈值,第二个抽头延迟,第二个窗口和利用时间寄存器值

根据数据表设置寄存器值的设备。阅读价值从设备确认价值确实是集。

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

使操作通过编写POWER_CTL登记

写信给POWER_CTL寄存器的数据表将导致芯片从待机模式正常运行模式。

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

轮询中断寄存器

中断源寄存器将包含对应于中断标志位被生成特定的来源。查看,双击中断产生

interruptSourceRegisterAddress = hex2dec (“30”);disp (“等待双击…”);(1)写入文件(i2cInterface interruptSourceRegisterAddress);InterruptValues =从文件中读(i2cInterface, 1);TapInterrupt = bitand (InterruptValues bin2dec (“00100000”));如果TapInterrupt disp (“双击发现!”);打破;结束结束
等待双击……双击发现!