Step1: 下载Instruments Playground SDK

使用电脑端访问雨骤科技官网进行IP_SDK下载,链接如下:

http://yuzhou.company/ipsdk

打开网页后,下拉页面,至最新版本SDK处,保存此网盘二维码。

扫描二维码即可进行IP_SDK下载

9498b29659fb9095642f0b8ed92c9cd2.JPG

Step2: 完成雨珠S与ATtiny24游戏摇杆连接

本范例使用Atmel ATtiny24摇杆传感器模块,该传感器支持SPI协议,我们使用SPI进行控制。

 

摇杆传感器模块上面有六个排针接口需要连接到仪器,分别为3.3VGND以及SPI协议部分的:CSSCLKMOSIMISO

在本范例中,默认CSIO 0SCLKIO 1MOSIDQ0IO2MISODQ1IO33.3VGND连接到仪器的可编程电源V+上面。此时,摇杆传感器模块与仪器成功连接。


Step3: 运行Instruments Playground软件

实际操作SPI控制前需要仔细阅读芯片手册,该传感器模块内置两个LED,可以通过SPI写命令控制LED的亮灭,用于检查连接是否正常。

打开InstrumentsPlayground后,打开可编程电源面板,设置正电源为3.3V,点击Master Enable后表示打开电源。此时打开Protocol面板,选择SPI-Master模式。根据之前的硬件连接进行设置,SelectCS片选端口,ClockSPI时钟端口SCLKDQ0MOSIDQ1MISO。速率保持默认100kHzMaster模式下有三种模式选择:WriteReadRead and Write,分别写单独写命令,单独读命令,读写同时操作。本例可以选择Read and Write模式。

image.png

通过阅读芯片手册,发现控制两个LED的亮灭由1个字节的控制命令实现,传感器返回5个字节数据,分别为X轴低8位数据,X轴高8位数据,Y轴低8位数据,Y轴高8位数据,传感器按键值检测。由于我们仪器的SPI协议开关与传输字节长度设置绑定,所以发送写命令时,需要同时虚写4个字节,保证SPI读命令可以读取到5个字节的数据。传感器检测写命令时,只会检测第一个字节的命令,其余四个字节被忽略。

对于发送的1个字节命令,高6位固定不变,0b100000,低两位分别控制两个LED灯。赋值为1时,LED灯点亮,赋值为0时,LED灯灭。


image.png

如发送h83,即0b10000011,表示两个LED灯均点亮,结果如下:

image.png


发送h80,即0b10000000,表示两个LED灯均灭,结果如下:

image.png

发送h81,即0b10000001,表示LED1亮,LED2灭,结果如下:

image.png

发送h82,即0b10000010,表示LED1灭,LED2亮,结果如下:

image.png

对于摇杆传感器的读取数据部分,同样在Read and Write模式,发送5个字节的指令。如发送h83,点亮2LED,后四个字节虚写,同样赋值h83,即发送五个字节h83 h83 h83 h83 h83,点击Execute后,可以在Read窗口获取到读取值。

由于SPI为全双工模式,Write操作MOSIRead读取MISO,互不影响。

image.png

此摇杆传感器通过2个字节展示X轴数据,2个字节展示Y轴数据,精度为10位。低字节8位有效,高字节中低2位数据有效,因此X轴和Y轴的返回数据范围为01023。摇杆在X轴最左端返回值为0,最右端返回值为1023Y轴最下端返回值为0,最上端返回值为1023。最后一个字节表示传感器模块上面的按键值,默认不操作时,返回为0,按下对应位置赋值1

需要特殊说明一下,芯片手册中提到了建议接收delay 15us。需要在软件界面上面设置ReadDelay 或者SDK上通过SPIDelaySet进行设置才能准确读取。

image.png

如下为摇杆未操作,处于中间位置时的返回值:236121610。表示X轴返回值为1*256+236=492Y轴返回值为1*256+216=472,按键均为按下,符合实际情况。用户可以尝试将摇杆拨动,检测对应返回值。

InstrumentsPlayground的操作界面如下:

image.png

Step4: 运行Instruments Playground SDK

解压缩下载的IP_SDK,显示如下内容,其中CExamplesC语言SDKIPLabView libLab View语言SDKRainDropPython SDK

image.png

python sdk运行说明

 

Python的范例位于IP-SDK-RainDrop-src-example文件夹内

这里可以用python打开SPI.py范例,如同操作InstrumentsPlayground先进行配置。

设置可编程电源输出电压3.3Vrd.AnalogIOChannelNodeSet

设置打开可编程电源(rd.AnalogIOChannelEnableSet

设置SPI使用到的IO

设置SPI速率,本例为100kHz,即设置为100000

设置Read相对于Write的时钟延迟,rd.DigitalSPIDelaySet(4),此处设置0代表无延迟,1代表1CLK延迟,2代表2CLK延迟,3代表5CLK延迟,4代表10CLK延迟,5代表20CLK延迟。

设置SPI写命令(rd.DigitalSPITx),rd.DigitalSPITx([0x83,0x83,0x83,0x83,0x83]),如同在InstrumentsPlayground中操作,需要虚写4个字节,这4个字节并不会被传感器模块读取。

设置SPI读命令(rd.DigitalSPIRx(RxSize))接收Size设置为5个字节。连接设备后运行即可看到读取的结果。

image.png

LabVIEW SDK运行说明

解压缩下载的IP_SDK,打开IPLabVIEW lib文件夹

image.png

可以看到如下内容,此时打开LabView 2018 32bit,打开lvproj。打开后,在项目的Example文件夹下找到SPI.vi,打开即可。

image.png

需要注意默认使用32LabView,如使用64位,需要进行底层DLL替换,将IPLabView lib文件夹下64文件夹中的VisInstrumentsPlaygroud.dll复制到IPlabView lib文件夹,替换原有的文件。

image.png

打开SPI.vi后的界面如下,此时插上设备可以直接点击Run运行,可以通过rgRX查看SPI接收到的5个字节数据。此时摇杆在回中的位置,两个按键均未按下,返回值为235121710(已经转换成十进制)。对于X轴的数值=1*256+235=491,对于Y轴的数值=1*256+217=473。第五个字节为0表示按键没有按下。以下为不同状态,用户可以自行对照。

摇杆回中状态,BTN1BTN2均未按下

image.png

摇杆推到右上角,X轴最大,Y轴最大,BTN1BTN2均未按下

image.png

摇杆推到左下角,X轴最小,Y轴最小,BTN1BTN2均未按下

image.png

摇杆回中状态,BTN1按下,BTN2未按下

image.png

评论