发新帖本帖赏金 10.00元(功能说明)我要提问
返回列表
打印
[活动专区]

【AT-START-F425测评】通过VCP实现SCPI通信

[复制链接]
1761|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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

源代码参看附件

vcp_loopback.zip (3.83 MB)






62185623736f75dd4a.png (180.79 KB )

62185623736f75dd4a.png

使用特权

评论回复

打赏榜单

ArterySW 打赏了 10.00 元 2022-03-25
理由:我很认同

评论
jgp886585 2022-3-27 12:55 回复TA
用这个SCPI协议的不多吗? 
沙发
muyichuan2012| | 2022-3-25 11:46 | 只看该作者
美女图片是加分项

使用特权

评论回复
板凳
muyichuan2012| | 2022-3-25 11:46 | 只看该作者
图片是加分项

使用特权

评论回复
地板
jgp886585|  楼主 | 2022-3-27 12:55 | 只看该作者

使用特权

评论回复
发新帖 本帖赏金 10.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

231

主题

678

帖子

1

粉丝