今天来学习一下Sensirion_Gas_Sensors_SEK-SVM40_UART_Interface_Description_D1和
Sensirion_Gas_Sensors_SEK-SVM40_Technical_Description_D1因为下面我们将串口通信部分代码移植到我的Zynq平台
官网
页面下载
Sensirion_Gas_Sensors_SEK-SVM40_UART_Interface_Description_D1和
Sensirion_Gas_Sensors_SEK-SVM40_Technical_Description_D1
SEK-SVM40平台提供两种获取传感器信息的接口一种是I2C一种是串口,在这里我们先只讨论一下串口,以后再研究I2C接口。
硬件接口如图,通过sel脚悬空或上拉选择UART,通过接地选择I2C。
串口设置在Sensirion_Gas_Sensors_SEK-SVM40_UART_Interface_Description_D1中Table 1
接下来是协议,SEK-SVM40平台在UART的基础上封装一层SHDLC协议,输出为MOSI帧,输入为MISO帧,帧结构如图:
首先是起始和停止位:由一个字节0x7E表示,如果0x7E出现在其他位置必须被替换成其他两个字节,0x7D、0x11、0x13也是
一个字节主命令位:MOSI中是告诉从设备用传输的数据做什么,MISO则是单纯返回接受的的命令
一个字节长度位:表示比特替换之前的长度
一个字节状态位:只在MISO帧中,指示通信和执行错误信息
0到255字节数据位:比特替换前的数据总量,传输数据是按大端在前的方式传输,注意第一个字节作为子命令字节使用!
校验和:开始位和停止位之间的字节数、取结果的最低有效字节取反
最后是UART命令,总共13条,详细说明见文档Sensirion_Gas_Sensors_SEK-SVM40_UART_Interface_Description_D1第6页
接下来我们连接SEK-SVM40平台跟电脑,在设备管理器中找到串口端号,打开串口调试工具
打开串口,发送svm40_start_measurement命令7E 00 00 01 00 FE 7E 返回如图:
接下来根据Sensirion_Gas_Sensors_SEK-SVM40_Technical_Description_D1来看看如何让SEK-SVM40平台输出我们想要的信号。
传感器上电后最大100ms进入idle模式,此时SVM40准备好接收主设备的命令。接下来进行测量,svm40_start_measurement命令是进入测量模式,svm40_stop_measurement或svm40_device_reset是退出测量模式命令,在测量模式期间SVM40每秒钟进行一次测量,进入测量模式等待一个特定的延时后用svm40_get_signals或r svm40_get_raw_signals命令,再另一个特定延时后读到返回的数据。使用svm40_get_signals命令,一个标准的测量过程如图所示:
SEK-SVM40平台Uart控制测试就到这里,下一章移植到zynq开发板