0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何利用Lab Windows/CVI实现PC与DSP的串行通信功能

电子设计 作者:电子设计 2018-08-30 10:11 次阅读

0 引言

随着数字信号处理理论及微电子技术的高速发展,数字信号处理器(DSP)已广泛应用于各个控制领域。而在控制系统中,通常会利用PC机与DSP之间的通信来对系统各个状态/参数进行监控。这种方法既利用了DSP功耗低、价格相对便宜、功能强大、抗干扰能力强、适宜于分布现场等优点,同时又结合了PC机的软硬件资源丰富、管理功能强大、人机界面友好、操控平台稳定可靠、数据通信方便快捷等系统功能优势。为此,本文拟通过使用比较广泛的RS-232-C接口标准来研究PC与TMS320F2812 DSP之间的异步串行通信。

1 硬件设计

这里采用最简单的三线连接方法,即PC机与DSP的发送、接收端彼此交叉连接,地线对应连接的方法。另外,由于DSP的串行通信接口SCI的两个外部引脚SCITXD和SCIRXD的信号为TTL电平,与RS-232-C标准逻辑电平不一致,因此,要进行信号电平转换后才能连接到PC机的串口接头DB9,图1所示是其硬件连接电路,其中电平转换选用MAX3232芯片和若干电容来实现,使用时只用其中的一对收/发单元。

2 软件设计

2.1 通信协议

本设计将通信的帧格式设置为1个起始位,8个数据位,无奇偶校验位,1个停止位。图2所示为其数据帧格式,其传输波特率为9600 bps,采用全双工通信方法。

PC机发送数据包的格式是:包头+功能码+参数码+数据内容+校验和,本设计分别设置它们占1、2、2、4、4个字节。其中包头是一个数据包开始的标志,这里设置为字符’~’;功能码表示本次通信要完成的操作,其中”01”表示向DSP发送参数,”02”表示让DSP回传数据;参数码表示通信传送的数据类别,”01”表示要传送P参数,”02”表示要传送I参数,”03”表示要传送D参数。假如通过PC机来设置DSP中数字PID控制程序的参数P为15.20,可以设定数据的量纲为1:100,那么就应当发送15.20×100=1520=05F0H,即依次发送字符’0’=30H、’5’=35H、’F’=46H、’0’=30H;且在前面发送的字符串为”~010105F0”。校验和的计算是把从功能码到数据内容己经转换为ASCII码的全部字节连续累加,其值为7EH+30H+31H+30H+31H+30H+35H+46H+30H=021BH,所以,PC向DSP发送完整的数据包为字符串”~010105F0021B”,其格式如图3所示。

DSP上传电流、电压、频率等实时数据的数据包格式与图3类似,但它可以不使用功能码或参数码。如频率数据包的包头采用字符’*’,电流数据包的包头采用字符’#’,以示区别即可。

2.2 上位机PC端程序

PC机主要完成三部分工作:一是对从机进行控制(比如修改参数),二是对从机采集的数据进行处理和数值计算,三是向用户提供友好、美观的仪器界面。以上功能均可依靠软件实现。上位机软件既可以使用Visual C++、VisualBasic等通用的开发工具,也可以使用LabWin-dows/CVI、LabView等专用于计算机测控领域的虚拟仪器软件开发平台。LabWindows/CVI是NI公司开发的32位、以ANSI C为核心的交互式虚拟仪器开发环境,它将功能强大的C语言与测试技术相结合,具有灵活的交互式编程方法和丰富的库函数,可为开发人员建立监测、自动测试、数据采集、过程监控等系统提供理想的软件开发环境,是实现虚拟仪器及网络化仪器的快速途径。由于其简单易学,故可大大缩短开发周期。LabWindows/CVI具有专门用于RS-232串行通信的函数库,主要包括:串行口打开/关闭函数(OpenCom/OpenComConfig和CloseCom)、串行口输入/输出函数(ComRd、ComRdByte、ComWrt、ComWrtByte)、串行口控制函数(FlushInQ、FlushOutQ)、串行口状态查询函数(GetInQLen、GetOutQLen)、串行口事件处理函数(InstallCom-Callback)等5大类。以下是程序部分代码:

主函数:

PC机发送程序:




PC机要能向DSP发送控制命令,比如开机,关机,修改参数等,下面以修改PID控制参数P为例。

2.3 下位机DSP程序

DSP的软件开发可利用集成开发环境CCS3.1(Code Composer Studio),并采用C语言进行编程。利用DSP的SCI模块实现串行通信的主程序流程图如图4所示。DSP的串行通信程序设计可采用查询法或中断法来进行数据的收发,这里采用中断方式接收数据,而用查询方式发送数据。DSP收到PC机发送来的数据时,便转入相应的中断子程序,其中断服务子程序流程如图5所示。其串口SCI初始化配置如下:


如何利用Lab Windows/CVI实现PC与DSP的串行通信功能?

void SCI_Init(void)

{

SciaRegs.SCICCR.all=0x0007;//字符长度8位

SciaRegs.SCICTL1.all=0x0003;//使能发送和接收

SciaRegs.SCICTL2.all=0x0002; //使能接收中断,禁止发送中断

SciaRegs.SCIHBAUD=0x00;//置波特率高8位

SciaRegs.SCIHBAUD=0xF3;//置波特率低8位

SciaRegs.SCICTL1.all=0x23;//使SCI退出复位

}

DSP收到字符串”~010105F0019D”之后,首先进行和校验。如果正确,则根据功能码和参数码判断PC机发送的是否是修改参数P的命令。然后提取数据”05F0'’,将其转换为十进制数1520,再除以100即得到要设置的P值15.20;如果和校验出错,则要求主机重发。若PC机发送的是上传数据的命令,则将发送标志变量send_flag置1,这样,在主循环中,经过判断后,便可向PC机发送数据。

3 结束语

本文利用LabWindows/CVI开发平台编写了上位机PC程序,同时利用CCS3.1开发环境编写下位机DSP程序,然后通过RS232总线进行串行通信。利用这种方法设计的PC机与DSP的串行通信系统具有硬件结构简单、成本低、实现容易等特点,并具有良好的可移植性和可扩展性,能够很好地满足PC与DSP的通信需求。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • dsp
    dsp
    +关注

    关注

    552

    文章

    7962

    浏览量

    348291
  • PC
    PC
    +关注

    关注

    9

    文章

    2066

    浏览量

    154036
  • 串行通信
    +关注

    关注

    4

    文章

    566

    浏览量

    35296
收藏 人收藏

    评论

    相关推荐

    UART通信协议介绍和数据传输工作流程

    UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可实现全双工传输和接收。UART通常用来实现
    的头像 发表于 10-24 14:20 396次阅读
    UART<b class='flag-5'>通信</b>协议介绍和数据传输工作流程

    如何实现51单片机与PC机的串行通信

    51单片机与PC机的串行通信是一种常见的通信方式,它允许单片机通过串行接口与PC机进行数据交换。
    的头像 发表于 10-21 11:35 427次阅读

    利用Tl的智能高端开关实现SPI通信

    电子发烧友网站提供《利用Tl的智能高端开关实现SPI通信.pdf》资料免费下载
    发表于 09-24 09:28 0次下载
    <b class='flag-5'>利用</b>Tl的智能高端开关<b class='flag-5'>实现</b>SPI<b class='flag-5'>通信</b>

    2026年AI PC市场将占Windows PC半壁江山

     根据最新市场研究机构Canalys的权威预测,人工智能(AI)个人电脑(PC)在Windows PC市场的渗透率正经历前所未有的飞跃。该机构预计,从当前的不足10%起步,AI PC
    的头像 发表于 09-06 16:09 797次阅读

    如何实现ESP32-S2 CDC与PC端的通信

    CDC数据包完全没有。 目前S2 USB OTG的资料实在太少,不知道到底要如何实现S2 CDC与PC端的通信
    发表于 06-25 08:29

    使用USBUART组件与主机PC通信,如果在串行端口打开的情况下终止固件,主机端为什么会报错?

    我正在使用 USBUART 组件与主机 PC 通信,我一直在寻找某种机制来关闭 MCU 端的串行端口,或者至少通知主机我将关闭端口。 我遇到过这样一个问题:如果在串行端口打开的情况下终
    发表于 06-03 08:41

    兆易创新推出PC指纹识别解决方案,带来安全便捷新体验

    (Match-on-Chip)和GSL6150H0 MoH(Match-on-Host)。方案基于先进的生物识别技术,通过便捷的指纹读取功能,帮助用户快速、安全地登录Windows PC设备。其中,GSL6186
    的头像 发表于 05-22 11:01 401次阅读

    STM32F207利用DMA功能实现串口1与串口6之间双向通信吗?

    请问一下大家,STM32F207利用DMA功能实现串口1与串口6之间双向通信么?建立通信桥梁不需要CPU参与。
    发表于 04-29 08:53

    数字信号处理DSP库文件的使用方法和功能实现

    本文首先介绍数字信号处理(DSP),是指将连续的模拟信号转换为不连续、离散的数字信号并进行处理以提取所需的信号(信息)的过程。然后通过一个简单的Lab来说明DSP库文件的使用方法和功能
    的头像 发表于 04-03 14:09 2533次阅读
    数字信号处理<b class='flag-5'>DSP</b>库文件的使用方法和<b class='flag-5'>功能</b><b class='flag-5'>实现</b>

    常见串行通信协议 串行通信和并行通信的区别

    串行通信是一种通过单个传输线按照顺序传送数据的通信方式。在串行通信中,每个数据位按照顺序依次传输,一个接一个地发送到目标设备。
    的头像 发表于 03-05 16:38 1224次阅读
    常见<b class='flag-5'>串行</b><b class='flag-5'>通信</b>协议 <b class='flag-5'>串行</b><b class='flag-5'>通信</b>和并行<b class='flag-5'>通信</b>的区别

    微软推出Windows 11 PC兼容安卓设备摄像头功能

    用户在运行Windows 11操作系统的PC端,可以借助Android智能手机和平板电脑的摄像头功能来获取更好的图像质量和更便捷的使用感受。此项功能使得用户能实时切换前后置摄像头,在网
    的头像 发表于 03-01 09:54 483次阅读

    面向高速串行通信的工程设计实现

    在高速串行通信系统中,差分阻抗的精确控制是实现信号完整性和降低电磁干扰的关键因素,对电子工程师来说,理想中的差分阻抗是100Ω,但由于实际布线原因,如接地屏蔽的布局,很难实现
    的头像 发表于 02-22 09:08 470次阅读

    英飞凌推出CYUSBS236 USB转串行通信(双通道)开发套件

    英飞凌科技(Infineon Technologies)近日宣布推出全新的CYUSBS236 USB 转串行通信(双通道)开发套件。该开发套件基于英飞凌的CY7C65215 USB 串行桥控制器,为开发者提供了快速、简便地
    的头像 发表于 01-24 17:12 853次阅读

    串行通信和以太网通信,该怎么选才好?

    串行通信和以太网通信都通过有线传输数据,但各自有不同的用途。串行通信和以太网通信的主要区别在于:
    的头像 发表于 12-22 08:20 1067次阅读
    <b class='flag-5'>串行</b><b class='flag-5'>通信</b>和以太网<b class='flag-5'>通信</b>,该怎么选才好?

    使用ad2s1210edz与28335dsp串行通信,运行dsp测试test point,sclk和rdi均测不到输入信号是为什么?

    各位朋友,小弟最近正在使用ad2s1210edz与ti的28335dsp串行通信,测电机转子位置。 根据说明对link进行了配置,sample选择了button switch,cs接低,rd接高
    发表于 12-21 07:31