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
    +关注

    关注

    544

    文章

    7673

    浏览量

    344238
  • PC
    PC
    +关注

    关注

    9

    文章

    1949

    浏览量

    152770
  • 串行通信
    +关注

    关注

    4

    文章

    533

    浏览量

    35003
收藏 人收藏

    评论

    相关推荐

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

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

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

    串行通信是一种通过单个传输线按照顺序传送数据的通信方式。在串行通信中,每个数据位按照顺序依次传输,一个接一个地发送到目标设备。
    的头像 发表于 03-05 16:38 438次阅读
    常见<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>的区别

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

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

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

    串行通信和以太网通信都通过有线传输数据,但各自有不同的用途。串行通信和以太网通信的主要区别在于:
    的头像 发表于 12-22 08:20 532次阅读
    <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

    PC机与单片机多机实时通信的设计与实现

    电子发烧友网站提供《PC机与单片机多机实时通信的设计与实现.pdf》资料免费下载
    发表于 10-31 09:55 2次下载
    <b class='flag-5'>PC</b>机与单片机多机实时<b class='flag-5'>通信</b>的设计与<b class='flag-5'>实现</b>

    基于STM32处理器和PC主机的USB通信协议的实现

    电子发烧友网站提供《基于STM32处理器和PC主机的USB通信协议的实现.pdf》资料免费下载
    发表于 10-26 10:05 0次下载
    基于STM32处理器和<b class='flag-5'>PC</b>主机的USB<b class='flag-5'>通信</b>协议的<b class='flag-5'>实现</b>

    PC机与多台单片机实时通信系统的设计与实现

    电子发烧友网站提供《PC机与多台单片机实时通信系统的设计与实现.doc》资料免费下载
    发表于 10-19 16:29 4次下载
    <b class='flag-5'>PC</b>机与多台单片机实时<b class='flag-5'>通信</b>系统的设计与<b class='flag-5'>实现</b>

    基于8031单片机串行实现双机口通信

    本系统是利用8031单片机串行实现双机口通信。其中1号发送机8031串行接发送号线P3.1(TXD)连到2号接收机机8031
    发表于 10-19 15:56 1次下载
    基于8031单片机<b class='flag-5'>串行</b>,<b class='flag-5'>实现</b>双机口<b class='flag-5'>通信</b>

    串行通信的数据格式 异步串行通信的波特率

    串口是串行接口的简称,串行接口是采用串行通信方式的接口。串行通信是一种将需要传输的数据由低位到高
    发表于 09-26 14:46 1805次阅读
    <b class='flag-5'>串行</b><b class='flag-5'>通信</b>的数据格式 异步<b class='flag-5'>串行</b><b class='flag-5'>通信</b>的波特率

    串行同步通信串行异步通信的区别

    串口是串行接口(serial port)的简称,也称为串行通信接口或COM接口。
    的头像 发表于 07-19 14:13 7908次阅读
    <b class='flag-5'>串行</b>同步<b class='flag-5'>通信</b>和<b class='flag-5'>串行</b>异步<b class='flag-5'>通信</b>的区别

    串行通信与并行通信的对比 串行通信故障排查和调试技巧

    串行通信适合长距离、抗干扰要求高的场景,而并行通信则适合高速、实时性要求高的场景。
    的头像 发表于 06-29 17:50 1253次阅读

    串行通信调幅和调频方式

    有关串行通信的知识,介绍了串行通信调幅与调频方式,串行数据在传输时,一般采用调幅(AM)和调频(FM)两种方式传送数字信息,
    的头像 发表于 06-29 16:53 808次阅读

    使用PC的RS-232串行端口与2线器件通信

    本应用笔记讨论了如何构建廉价的微处理器电路,允许PC使用其串行端口与2线器件通信。除了提供硬件、固件和软件设计以使PC能够与IC通信的一般见
    的头像 发表于 06-09 16:30 484次阅读
    使用<b class='flag-5'>PC</b>的RS-232<b class='flag-5'>串行</b>端口与2线器件<b class='flag-5'>通信</b>

    LabWindows CVI基本学习教程

    本书主要介绍了LabWindows/CVI 6.0 下的C语言编程技术教程,主要内容有: LabWindows/CVI 6.0 的集成开发环境,面板、控件和菜单的设计,交互式代码生成,程序的调试
    发表于 05-30 14:27 7次下载