本帖最后由 jgp886585 于 2022-3-20 22:29 编辑
#申请原创# #有奖活动# @21ic小管家
简介(摘自百度百科)SCPI于1990与IEEE 488.2协议一起面世。这套标准定义了可用于控制一切仪器的语法,命令结构以及数据格式。比如,通用的命令,如配置仪器参数的命令CONFigure,测量命令MEASure等。这些命令可用于任一仪器,并且同一类的命令属于同一子系统里。SCPI同时也定义了若干仪器的种类。比如,任何可控制的电源都会实现DCPSUPPLY基本功能类型。仪器的类别规定了它们会去实现什么样的子系统,当然也包括针对仪器的特定功能。
工程搭建安装pack包
我使用的是Keil5,所以只下载了Keil5支持包,然后根据开发板型号安装相应MCU的支持包,双击支持包直接开始安装 如果能够在Keil5中找到芯片型号,说明安装成功
移植工程
此处需要通过VCP实现SCPI,为了不影响原来的工程,将工程单独复制一份出来,就会发现很多报错,其实是因为库的路径发生了变化,所以需要重新选择库路径 对照例程里的路径,将要用到的文件全部复制出来放在工程里,然后调整路径 修改文件路径 之前使用ST的做上边的操作就可以了,但是这个工程看了下修改完路径,c文件还是带感叹号,编译还是有问题,报错的提示发现文件还是指向原路径,只能手动将所有文件重新添加了一次。。。。 调整完成之后,编译无警告无错误
添加SCPI解析库
添加SCPI模块,SCPI是github找的一个大神写好的,源地址参考资源2,之前有用过,基本实现了完整功能,只是代码比较难理解,当然可能也是我的功底不够,反正能用,我就没有深究他的底层逻辑。 这个代码用版本5编译的话始终是有错误存在,无法解决,改成编译级6就好了.
代码修改
在USB VCP接收函数中增加SCPI结束符判断标志,SCPI一般以0x0D和0x0A为结束符,对该协议感兴趣得可以参看该协议文档。 修改main函数中得处理流程,加入对SCPI指令得解析。 print函数需要重定向到VCP,示例代码默认是重定向到串口的,所以我屏蔽了示例中的重定向代码 还有一些小修改就没有列出来的,可以查看源代码。
通信演示
SSCOM是支持自动添加回车换行的,所以为了方便,将该选项勾上。
说明
1.之前做手术没有时间,手术之后又是出差(为了写个评测,出差背着电脑),所以时间比较仓促,该示例只是简单实现了功能,需要使用的话可能逻辑需要调整,需要增加异常处理机制。 2.本人编程属于自学,底子较薄,偏向于应用,对原理理解比较浅薄,有问题的地方,或者有大神对该比较了解的,欢迎指教,非常感谢!
资源地址https://www.arterytek.com/cn/product/AT32F425.jsp#Resource https://github.com/j123b567/scpi-parser
源代码参看附件
|
用这个SCPI协议的不多吗?