机器人
当前 1/4 Step
使用电脑端访问雨骤科技官网进行IP_SDK下载,链接如下:
打开网页后,下拉页面,至最新版本SDK处,保存此网盘二维码。
扫描二维码即可进行IP_SDK下载
本范例使用Atmel ATtiny24摇杆传感器模块,该传感器支持SPI协议,我们使用SPI进行控制。
摇杆传感器模块上面有六个排针接口需要连接到仪器,分别为3.3V、GND以及SPI协议部分的:CS、SCLK、MOSI、MISO。
在本范例中,默认CS为IO 0,SCLK为IO 1,MOSI即DQ0为IO2,MISO即DQ1为IO3。3.3V和GND连接到仪器的可编程电源V+上面。此时,摇杆传感器模块与仪器成功连接。
实际操作SPI控制前需要仔细阅读芯片手册,该传感器模块内置两个LED,可以通过SPI写命令控制LED的亮灭,用于检查连接是否正常。
打开InstrumentsPlayground后,打开可编程电源面板,设置正电源为3.3V,点击Master Enable后表示打开电源。此时打开Protocol面板,选择SPI-Master模式。根据之前的硬件连接进行设置,Select为CS片选端口,Clock为SPI时钟端口SCLK,DQ0为MOSI,DQ1为MISO。速率保持默认100kHz。Master模式下有三种模式选择:Write、Read、Read and Write,分别写单独写命令,单独读命令,读写同时操作。本例可以选择Read and Write模式。
通过阅读芯片手册,发现控制两个LED的亮灭由1个字节的控制命令实现,传感器返回5个字节数据,分别为X轴低8位数据,X轴高8位数据,Y轴低8位数据,Y轴高8位数据,传感器按键值检测。由于我们仪器的SPI协议开关与传输字节长度设置绑定,所以发送写命令时,需要同时虚写4个字节,保证SPI读命令可以读取到5个字节的数据。传感器检测写命令时,只会检测第一个字节的命令,其余四个字节被忽略。
对于发送的1个字节命令,高6位固定不变,0b100000,低两位分别控制两个LED灯。赋值为1时,LED灯点亮,赋值为0时,LED灯灭。
如发送h83,即0b10000011,表示两个LED灯均点亮,结果如下:
发送h80,即0b10000000,表示两个LED灯均灭,结果如下:
发送h81,即0b10000001,表示LED1亮,LED2灭,结果如下:
发送h82,即0b10000010,表示LED1灭,LED2亮,结果如下:
对于摇杆传感器的读取数据部分,同样在Read and Write模式,发送5个字节的指令。如发送h83,点亮2个LED,后四个字节虚写,同样赋值h83,即发送五个字节h83 h83 h83 h83 h83,点击Execute后,可以在Read窗口获取到读取值。
由于SPI为全双工模式,Write操作MOSI,Read读取MISO,互不影响。
此摇杆传感器通过2个字节展示X轴数据,2个字节展示Y轴数据,精度为10位。低字节8位有效,高字节中低2位数据有效,因此X轴和Y轴的返回数据范围为0至1023。摇杆在X轴最左端返回值为0,最右端返回值为1023,Y轴最下端返回值为0,最上端返回值为1023。最后一个字节表示传感器模块上面的按键值,默认不操作时,返回为0,按下对应位置赋值1。
需要特殊说明一下,芯片手册中提到了建议接收delay 15us。需要在软件界面上面设置ReadDelay 或者SDK上通过SPIDelaySet进行设置才能准确读取。
如下为摇杆未操作,处于中间位置时的返回值:236,1,216,1,0。表示X轴返回值为1*256+236=492,Y轴返回值为1*256+216=472,按键均为按下,符合实际情况。用户可以尝试将摇杆拨动,检测对应返回值。
InstrumentsPlayground的操作界面如下:
解压缩下载的IP_SDK,显示如下内容,其中CExamples为C语言SDK,IPLabView lib为Lab View语言SDK,RainDrop为Python SDK
python sdk运行说明
Python的范例位于IP-SDK-RainDrop-src-example文件夹内
这里可以用python打开SPI.py范例,如同操作InstrumentsPlayground先进行配置。
设置可编程电源输出电压3.3V(rd.AnalogIOChannelNodeSet)
设置打开可编程电源(rd.AnalogIOChannelEnableSet)
设置SPI使用到的IO口
设置SPI速率,本例为100kHz,即设置为100000
设置Read相对于Write的时钟延迟,rd.DigitalSPIDelaySet(4),此处设置0代表无延迟,1代表1个CLK延迟,2代表2个CLK延迟,3代表5个CLK延迟,4代表10个CLK延迟,5代表20个CLK延迟。
设置SPI写命令(rd.DigitalSPITx),rd.DigitalSPITx([0x83,0x83,0x83,0x83,0x83]),如同在InstrumentsPlayground中操作,需要虚写4个字节,这4个字节并不会被传感器模块读取。
设置SPI读命令(rd.DigitalSPIRx(RxSize))接收Size设置为5个字节。连接设备后运行即可看到读取的结果。
LabVIEW SDK运行说明
解压缩下载的IP_SDK,打开IPLabVIEW lib文件夹
可以看到如下内容,此时打开LabView 2018 32bit,打开lvproj。打开后,在项目的Example文件夹下找到SPI.vi,打开即可。
需要注意默认使用32位LabView,如使用64位,需要进行底层DLL替换,将IPLabView lib文件夹下64文件夹中的Vis和InstrumentsPlaygroud.dll复制到IPlabView lib文件夹,替换原有的文件。
打开SPI.vi后的界面如下,此时插上设备可以直接点击Run运行,可以通过rgRX查看SPI接收到的5个字节数据。此时摇杆在回中的位置,两个按键均未按下,返回值为235,1,217,1,0(已经转换成十进制)。对于X轴的数值=1*256+235=491,对于Y轴的数值=1*256+217=473。第五个字节为0表示按键没有按下。以下为不同状态,用户可以自行对照。
摇杆回中状态,BTN1、BTN2均未按下
摇杆推到右上角,X轴最大,Y轴最大,BTN1、BTN2均未按下
摇杆推到左下角,X轴最小,Y轴最小,BTN1、BTN2均未按下
摇杆回中状态,BTN1按下,BTN2未按下
评论