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初始化配置如下:
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的通信需求。
中电器材(CEAC)成为Intersil在中国的授权分销商
全球汽车电动化的趋势不可阻挡,且发展方向已经清晰明朗
浅谈MOS管的二阶效应
技术驱动向新,并联机器人进化之路
用于开发声学拓扑晶体管的设计原则
如何利用Lab Windows/CVI实现PC与DSP的串行通信功能
高德红外黄立:锻造红外科技领军人才团队,研发人员达1800余人
淘汰还是新生?关于机器人换人的思考
台积电第二代 5nm 工艺性能提升水平有望高于预期
氮化镓功率芯片:革命性的半导体技术
HASH算法加密芯片的工作原理及其在STM32 MCU上的应用
pcb接线端子类型
芯片设计中的功耗估计与优化技术
平台型芯片企业翱捷科技发布2022年第一季度报告
华为荣耀Note8与小米5s plus对比哪个好?哪个更适合入手?
构建MBD仿真模型和状态机
Google已删除了被Joker恶意软件感染的17个应用程序
基于AT89C55单片机和PCA82C250实现分布式通信网络的设计
基于STM32F103C8T6单片机的智能疫苗箱
安徽十三五:新能源发展战略规划