查看: 1971|回复: 0

通信接口的软件设计步骤

[复制链接]

该用户从未签到

发表于 2011-1-7 20:44:54 | 显示全部楼层 |阅读模式
分享到:
     tms320f240是f24x系列面向数字控制芯片的典型代表。由于tms320f240并不具备人机界面,在实际使用过程中,需要为它提供一个人机接口或上层控制接口,以便于观察控制效果或传递必要的控制信息。因此,实现tms320f240与pc之间串行通信接口的设计方法,具有较高的实用价值。
    1 通信协议的设定
    uart通信对噪音比较敏感,特别是脉冲边沿抖动。所以,为了确保uart能够正确工作,必须能够检测它的开始和结束字节。也就是说,需要一定的数据包格式,即使是使用一个uart端口,在这个数据包中的每一个字节也都要编成uart格式。因此在异步串行通信中,收、发双方必须事先规定字符格式、采用的波特率,以及时钟频率和波特率的关系。
    这些规定是通过初始化设置与串行通信有关的寄存器来实现的。本通信系统中,规定字符格式为:每一帧的数据占10位,一位奇校验位,8位数据位,1位停止位。中间的8位数据位即为有效的通信传输字节。双方的波特率设置为19200bps。同时,为了增强通信的可靠性,减少通信的误码率。
    特征码选用0xff、0xaa、0x55这3字节为发送数据包的前导数据,这是因为这几字节在传输噪声中同时出现的几率很小,特征码起到向接收方表明有数据发送过来的作用,通知接收方可以开始接收有效数据;字节数是数据包中除了字节数这一项之外,其他所有项字节的长度;有效数据字符串是通信发送方要传送的有效数据;校验和是数据包中除了校验和这一项之外所有项字节的无进位累加和,用于校验通信是否正确。
    同时,在通信过程中约定了双方的软件握手方法。为了不使通信过于复杂,提高通信速度,可以直接将握手信号0xff嵌入到数据包中。软件握手协议规定如下:pc定时发送符合通信协议规定的数据包,dsp接收到的第四字节若为握手信号0xff,则将校验正确后的有效数据存储,并从中分解有效字节信息,然后回送相同格式的数据包。若pc接收到的数据包的第四字节不是0xff,则摒弃该数据包。
    2 dsp端下位机sci通信程序的编制
    在dsp端的软件程序设计中,通过中断方式接收pc发送过来的数据包,握手并校验确认后接收有效数据,再将pc所需的数据打包回送。基于dsp功能模块化的特点,其串行通信汇编程序的编制主要分三个步骤:
    (1)初始化设置时钟源模块,得到所需的cpuclk和sysclk(因为计算波特率时与之有关);
    (2)设置sci模块,初始化各sci控制寄存器;
    (3)编写串行通信中断服务子程序,即可完成dsp与pc之间的串行通信。
    3 pc端上位机通信程序的编制
    上位pc串行通信程序在windows 2000平台下采用visual c++ 6.0实现。vc自带的activex控件microsoft communications control,即mscomm控件,提供了对windows通信驱动程序的api函数接口,为应用程序提供了通过串行口收发数据的简便方法。因此直接在应用程序中嵌入mscomm控件,可以方便地进行计算机串口的通信管理。即只需设置mscomm控件的相应属性,调用控件的相应方法和事件,按照通信协议的要求定时发送数据包,上位机即可完成相应功能,实现数据通信任务。
    mscomm控件提供下列两种处理通信的方式:事件驱动方式和查询方式。上位pc一般采取事件驱动的方式接收来自于下位机dsp的二进制数据。事件驱动方式的工作原理类似于中断,当有通信事件发生时(如发送数据、接收数据等),就会触发oncomm事件,在该事件的处理函数中调用getcommevent函数,通过返回值即可确定是哪类事件,再做出相应的数据处理,完成双方之间的通信。
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条



手机版|小黑屋|与非网

GMT+8, 2024-11-23 03:02 , Processed in 0.117608 second(s), 15 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.