DOI:10.13436/j.mkjx.2011.09.043
第
32
2011
卷第
年
09
09
期
月
煤 矿 机 械
Coal Mine Machinery
Vol.32 No.09
Sep. 2011
基于
VB
的上位机与
之间的通信研究与实现
DSP
李瑞金 1,
彭双生 2
(1.
安徽理工大学 电气与信息工程学院
摘 要
,
安徽 淮南
安徽省桐城市人民医院 后勤部
安徽 桐城
232001; 2.
通 讯 协 议 研 究 与 实 现 的 基 础 上 编 写 的
:
与
DSP
基 于
之间的串行通信
通信程序的设计并通过具体的实例给出了
OBLM3058B
,
给出了硬件电路与软件设计程序
,
详细介绍了
机之间串行通信的方法
VB
与
功能强大
DSP
,
PC
方便地实现了
PC
,
231400)
上 位 机 与
VB
上位机通信程
实验
之间
。
机和
DSP
TMS320LF2407
序设计与
表明
,
的通信
DSP
,
该串行通信方法简单有效
传输数据准确可靠
、
、
具有一定的参考价值
。
串行通信
关键词
中图分类号
:
: TN914
; MSComm
控件
文献标志码
芯片
;
: A
TMS320F2407
文章编号
: 1003 - 0794(2011)09 - 0232 - 04
Research and Implementation of Communication Between PC and DSP
Based on VB
LI Rui-jin1, PENG Shuang-sheng2
(1. Institute of Electrical and Information Engineering, Anhui University of Science and Technology, Huainan 232001,
China; 2. Anhui Province Tongcheng People Hospital Logisticsdepartment, Tongcheng 231400, China)
Abstract: Based on DSP and OBLM3058B research and implementation of communication protocols are
given, prepared VB PC and serial communication between TMS320LF2407. Hardware circuit and
software design process. Introduced design of VB PC in detail and DSP communication program
communication design and specific examples given by DSP and serial communication of method between
PC.Experiments show that serial communication method is effective and reliable transmission of data,
powerful, and easy to realize PC and the communication between DSP.Have some reference value.
Key words: serial communication; MSComm control; chip TMS320F2407
引言
与其他使用 标准模块格 式的异步外 设之 间 的
0
与
模块之间进行串行通信一方面
DSP
MP3
另一方面
发送串行控制指令
也要将
块发回的相同字节的命令在上位机上显示
可 以 依 此 确 认
据
DSP
模
MP3
控制端
模 块 是 否 正 确 接 收 到 数
与
上 位 机 之 间 通 过
本 文 主 要 介 绍
OBLMMP3
DSP
,
,
进行通信的具体方法和实现步骤
DSP
VB
。
MAX232
。
CPU
数 字 通 信
。
此 电 路 使 用
的
个 外 部 引 脚
SCI
2
进 行 串 口 通 信
SC-
与
,DSP
ITXD、SCIRXD
MAX232
MAX3232
的连接如图
所示
1
。
与
介 绍
MAX3232
:MAX3232
的低压差发送器输出级
电 源 供 电 时 能 够 实 现 真 正 的
,
利用双电荷泵在
收 发 器 是 采 用 专 有
1
硬件电路设计与组成
内 部 包 括
DSP2407
模 块
,SCI
SCI
模 块 支 持
MAX3232
部 只 需 接
个
4
0.1 uF
5 V
3.3 V,
电 容 即 可 完 成
供电电压
或
RS -232
耗电
3.0~5.5 V
性 能
,
外
电 平 到
0.3 mA,
TTL
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
也
避免了手工计算查表选择挂轮
也不会发生
利用挂轮计算程序可以有
套挂轮组方案
准确和方便
求解迅速
4
6
。
,
,
可以从中进行优选
组的一些问题
计算错误
,
提高了效率
,
、
。
“
。
挂轮卡
必须再经过多人审核
,
工艺文件
,
机 床定数
保存不 方便
i2=za/zb×zc/zd=33/83×59/85=0.275 974 48
结语
查表法手工 计算挂轮的 缺 点 是 利 用 计 算 器 计
操
填写内
编制
、
、
而且查
将
查手册还存在调整
。
不一定能 满足前面提
多次在 机
算容易出错且效率很低
作者收集的
”(
容主要包括齿轮参数
审核等项
找困难
会给现场操作带来的困难较大
精度受限
到的挂轮组 选择条件
床上试装
一种表格
,
滚刀 头数
、
管理烦 琐
)
加工适应性较差
选 择挂轮组单 一
须多次查表 计算
齿轮批量小
数量多
品种多
,
,
、
,
,
。
,
、
、
,
,
,
。
参考文献
金福贵
[1]
社
,1987.
杨叔子
.
[2]
:
,
赵淑芬
.
精密通用比值挂轮表
[M].
北京
:
机械工业出版
机械加工工艺师手册
北京
机械工业出版社
作者简介
:
冯天静
(1970- ),
[K].
:
河北沽源人
,2001.
年毕业于山东矿
,1993
业学院计量技术与管理专业
,
现在中煤张家口煤矿机械有限则责任
公司产品工艺研究所从事工艺技术工作
电子信箱
,
:fengtengyu@so-
hu.com.
232
责任编辑
:
武伟民 收稿日期
:2011-03-31
第
卷第
期
09
32
基于
VB
的上位机与
DSP
之间的通信研究与实现
李瑞金
等
,
———
Vol.32No.09
电平的转换
RS232
104
C1
C2
104
C3
104
RXD1
TXD1
机
位
上
B
V
。
1
2
3
4
5
6
7
8
C5
104
MAX3232
U12
C1+
V+
C1-
C2+
C2-
V-
T2OUT
R2IN
VCC
GND
T1OUT
R1IN
R1OUT
T1IN
T2IN
R2OUT
S17
按下发送
3V3
16
15
14
13
12
11
10
9
C4
104
PCRXD2
PCTXD2
RXD2
TXD2
SCTXD
SCRXD
10PB7
R1
VCC
7
0
4
2
F
L
0
2
3
S
M
T
图
机与
1 TMS320LF2407
MAX3232
串行通信程序设计
与
接口电路
DSP
上位机通信程序的设计
2 PC
2.1 VB
通信控件的介绍
(1)MSComm
MSComm
是
windows
控件即
下串行通信编程的
Microsoft Communications Con-
它
使用该控件需要在工
ActiveX
控件
,
trol
为应用程序提供了串行接口
程 菜 单 的 部 件 子 菜 单 的 对 话 框 中 引 入
,
Microsoft
控 件 通 过 串
种处理通信
选 项 即 可
Comm Control 6.0
行传输数据和接收数据
的方式
,MSComm
它提供下列
2
,
,
。
,
控件的
一个是查询方式
端口交互作用的一种非常有效的方法
。
在 事 件 发 生 时 需 要 得 到 通 知
下
,
一个是事件驱动方式
,
事件驱 动 方 式 事 件 驱 动 通 讯 是 处 理 串 行
①
在许多情况
可 以 利 用
事件捕获并处理这些通
事 件 还 可 以 检 查 和 处 理 通 讯 错
事件处理函
就可以在
这种方法的优点是程序
控件对应着一
如果应用 程序需要 访问多个 串 行 端
MSComm
讯 事 件
误
数中加入自己的处理代码
响应及时
个串行端 口
。
使用多个
口
。 OnComm
在编程过程中
可靠性高
MSComm
OnComm
OnComm
。
每个
控件
,
,
。
。
MSComm
;
查询方式 查询方式其实就是事件驱动
,
②
不过在有些情况下
序的每个关键功能之后
属性的值来查询事件和错误
,
,
这种方式显得更为快捷
可以通过检查
只
,
在程
。
CommEvent
控 件 的 常 用 属 性
;
③MSComm
有很多重要的属性
但这几个属性必须熟悉
MSComm
控 件
。
。
数 据
为
其 中
该属
。
CommPort:
为整数
ue
,
Settings:
停止位参数
、
位
字符串表达式
,
属性语法
说明端口
。
语法
,
属 性 语 法
:object.Commport[=value],val-
设置并返回通讯端口号
设置并返回 波特 率
奇 偶 校 验
、
、
。
说明端口的设置值
object.setting[=value],value
。
PortOpen:
为布尔表达式
object.portopen [=value]
说明通信端口的状态
。
返回并删除接收缓冲区中的数据流
,
value
Input:
性在设计时无效
在运行时为只读
,
读取接收缓冲区里的字节数
InBufferCount:
读取或设置接收缓冲区的大小
InBufferSize:
属 性 确 定 被
Input Len:
则
设置
。
Input
Input
InputLen
属 性 读 取 的 字 符
属性读取缓冲区中
。
。
为
0,
。
数
全部的内容
。
属性语法
型
InputMode:
如 果 设 置
。
属性通过一个
put
InputMode
一个
为
Variant .
属性确定用
InputMode
Variant
属性读取的数据类
Input
为
返回文本数据
comInputModeText,In-
如果设置
。
属 性 通 过
comInputModeBinary,Input
返回二进制数据的数组
符串
写到传输缓冲区的一个字符串
object.output[=value] value
Output:?
??
OutBufferCount:
OutBufferSize:
Rthreshold:
CommEvent:
OnComm
设定引发
读 取 或 设 置 串 口 事 件
读取发送缓冲区里的字节数
。
读取或设置发送缓冲区的大小
。
事件的字节数
;
其 中
属性是用来设置在
当
就
控件中的
事件激活前接收缓冲器收到的字节数
。
设置的字数时
,
Com-
通 过 编 程 方 式 了 解
RTHreshold
RTHreshold
事 件
。
MSComm
OnComm
接收到的字节数达到
会 引 起
OnComm
属性通信事件的类型
。
进而做出相应处理
为字
。
。
,
。
mEvent
上位机的接收数据程序步骤
(2)VB
①
DSP
首先进行埠初始化
发来的指令
收
串口初始化程序和接收数据程序如下
。
;②
采用事件驱动方式接
:
Private Sub initial_com(com_num As Integer)
MSComm1.CommPort = com_num
MSComm1.OutBufferSize = 10240
MSComm1.InBufferSize = 1024
MSComm1.InputMode = 1
MSComm1.InputLen = 0
MSComm1.InBufferCount = 0
MSComm1.SThreshold = 1
MSComm1.RThreshold = 1
MSComm1.Settings = com_setting
MSComm1.PortOpen = True
End Sub
Private Sub MSComm1_OnComm()
Dim bytInput() As Byte
Dim intInputLen As Integer
Dim n As Integer
Dim teststring As String
Select Case MSComm1.CommEvent
Case comEvReceive
If Option1.Value = True Then
MSComm1.InputMode = 1 '0:
制方式
文 本 方 式
二 进
,1:
Else
MSComm1.InputMode = 0
End If
intInputLen = MSComm1.InBufferCount
bytInput = MSComm1.Input
If Option1.Value = True Then
For n = 0 To intInputLen
1
–
Text1.Text = Trim(Text1.Text) & “” & IIf(L
en(Hex$(bytInput(n))) > 1, Hex$(bytInput(n)),
“0” & Hex$(bytInput(n)))
233
Vol.32No.09
基于
VB
的上位机与
DSP
之间的通信研究与实现
李瑞金
等
,
———
第
32
卷第
09
期
。
{
Next n
Else
teststring = bytInput
Text1.Text = Text1.Text + teststring
End If
End Select
End Sub
2.2 DSP
DSP
,
的串行通信程序设计部分
程序的主要功能是当按键按下时就发送一
每次按 下按键发
此指 令由
如
此部分程序设计发
按下
的对应功能
暂停
、
个不同功能的指令控制
串指令
出不同的指令
播放
出
分别对应
快进
MP3
快退等
。
模块的不同功能
个字节 组成
,
停止
8
,
,
、
、
8
次后将转到第
条指令循环发送
MP3
。
、
1
8
(1)
程序设计流程图
如图
。
所示
2
,
开始
系统初始化
SystemInitO
口配置
I/O
初始化
SCI
SCI_InitO
按键扫描
有
是
ScanKey( )
?
Numkey++
Numkey≥9?
是
Numkey=1
否
否
根据
的键值
发送不同的功能指令
numkey
一次发
个字节
8
图
系统初始化程序及主程序代码如下
发送程序流程图
2 DSP
:
(2)DSP
void DSP2407_Initialiazition()
{
asm(“SETC
INTM”);
/*
关闭全部中断
intm=
asm(“CLRC SXM”);/* SXM
置
1
禁止符号位扩
1*/
展
*/
{
SystemInit();
系统初始化
//
MCRA=MCRA & 0x00FF; //IOPB0-7
模式
设为
口
IO
PBDATDIR = PBDATDIR & 0x0000;
SCI_Init();
asm(“CLRC INTM”);
while(1)
{
ScanKey();
numkey++;
if (numkey >=9)
numkey = 1;
switch (numkey)
case 1 :SCI_Send(0)
case 2 :SCI_Send(1)
case 3 :SCI_Send(2)
case 4 :SCI_Send(3)
case 5 :SCI_Send(4)
case 6 :SCI_Send(5)
case 7 :SCI_Send(6)
case 8 :SCI_Send(7)
default:SCI_Send(8);
}
;break;
;break;
;break;
;break;
;break;
;break;
;break;
;break;
}
}
void SCI_Initiallization()
{
//IOPA0
=SCITXD,
MCRA=MCRA | 0x0003;
为串口
IOPA1=SCIRXD
SCICCR=0x0007; //
位
位停止位
,1
无奇偶校验位
,
SCICTL1=0x0003; //
SLEEP=1
空 闲 多 处 理 器 模 式
位 元 数 据
,8
接 收
,
发 送
,
内 部 时 钟 使 能
,
//
SCIPRI=0x0000;
//
SCICTL2=0x0002;
SCIHBAUD=0x0002;
高中断优先级
接收中断使能
波 特 率 设 置 为
//40M,
asm (“CLRC CNF”); //
被设置在数据空间
置的片内双方问
RAM
块
B0
asm (“CLRC OVM”); //ovm
常溢出
SCSR1 =0x03FC; //
打开
20*2=40M
ADC,EVA,EVB,CAN
设 置 工 作 频 率
和
关软件看门狗
//
CLKOUT =
的时钟
看门狗时
SCI
,
清
0
累加器结果正
9600
初始化看门狗
打开中断
向所有 中 断 标 志 位 写
2
//
//
//
钟
WDCR=0x006F;
分频
64
KickDog();
IMR=0x0003;
IFR=0xFFFF;
以清除所有中断标志
1
}
main()
SCILBAUD=0x0008;
SCICTL1=0x0023;
}
SCI_Send(int m)
//
{
int k;
for(k=0;k<8;k++)
串口初始化完成
//
一次发送共
个字节数据
8
{
SCITXBUF=mp3[m][k];
while((SCICTL2 & 0x0080)==0); //
等待发送结束
}
}
void c_int1()
{
234
中断接收程序部分
//
第
32
卷第
09
期
基于
VB
的上位机与
DSP
之间的通信研究与实现
李瑞金
等
,
———
Vol.32No.09
if(PIVR!=0x06)
//
高优先级的
接收中断
SCI
KICK_DOG
asm(“CLRC INTM”);
return;
{
}
SCI_RXDATA=(SCIRXBUF) & 0x00FF;//
的数据保存
串口接收
发送程序部分
SCI_Send(SCI_RXDATA); //
IFR=0xFFFF;//
asm(“CLRC INTM”);//
清除中断标志
关闭总中断
}
void ScanKey()
{
{
unsigned int
unsigned int
while(flag==0)
temp, temp 1;
flag = 0;
temp = PBDATDIR ;
temp = temp & 0x0080;
while(temp ==0x0080)
等待
。
//
测 试
IOPB7
没 按 下
一 直
,
{
}
temp = PBDATDIR ;
temp = temp & 0x0080;
delay(2000);
temp = PBDATDIR ;
消抖动
//
temp = temp & 0x0080;
temp1 = temp;
if (temp == 0x0080)
flag = 0;
else
flag = 1;
}
temp = PBDATDIR ;
temp = temp & 0x0080;
while( temp ! = 0x0080)
{
temp = PBDATDIR ;
temp = temp & 0x0080;
}
}
中断向量表部分程序
建立中断向量表
;
.ASM.
.sect
B
“.ecv”
_c_int0
_c_int1
B
B
RSVECT
INT1
INT3
B
INT4
PHANTOM
INT5
INT6
B
中断子向量入口定义
PHANTOM
B
PHANTOM
.text
PHANTOM:
等待按键释放
//
}
3
结语
主要介绍了
RET
.end
文件配置部分程序
.CMD
CMD
MEMORY
{
PAGE 0: VEC: origin = 0x8000,
PAGE 0: Prog: origin = 0x8860,
PAGE 1: B0 : origin = 0x200,
PAGE 1: B1 : origin = 0x400,
PAGE 1: Date: origin = 0x0860,
length 0x040
length 0x6000
length 0x200
length 0x200
length 0x600
}
SECTIONS
{
: {} >Prog PAGE 0 //
: {} >Prog PAGE 0
.ecv : {} >VEC PAGE 0
.text
.cinit
.data : {} >Ddate PAGE 1 //
.bss : {} > Ddate PAGE 1
量和静态变量空间
中断向量表
//
可执行代码和字符串
初始化变量和常数表
.
保留全局变
//
.const : {} > Ddate PAGE 1
switch
表
.switch : {} >Prog PAGE 0 //
建立的表格
.stack
存储器
:
{} > Ddate PAGE 1 //
.system : {} > Ddate PAGE 1
存储器函数分配存储器空间
字 符 串 和
//
包含
.switch
语句
为系统堆栈分配
为动态
//
VB MSComm
通信控件的常用属性
发
和具体接收数据源程序代码同时也 给出了
送指令流程图和具体程序代码
VB MSComm
控 件编程可 以不要了解 硬件如何设 置只要 通 过 软
件编程设置就可完成通信连接
通过实际运行表明
可
通信方法稳定
接口电路简单
,
模块之间的通信
具
可方便实现上位机与
利用
DSP
与
,
,
、
DSP
,
。
,
F2407
RS232
靠
有一定的参考使用价值
参考文献
刘和平
北京
李长林
社
梁天
杨振强
,2006.
基于
. VB
. DSP
北京航空航天大学出版社
[1]
[2]
的
:
:
.
VB
DSP
[3]
,
2005,15(9):96-98.
汤 恒 先
谢 利 理
,
,
计
微处理机
作者简介
[J].
李瑞金
原理及电机控制应用
基于
-
TMS320LF240x
系列
[M].
串口通信技术与典型实例
,2006.
[M].
北京
:
清华大学出版
与
PC
机的串行通信
微机发展
,
[J].
,2008,8(4):186-188.
:
(1983- ),
安徽理工大 学 电 力 电 子 与 电 力 传 动 专 业
控制技术
电子信箱
,
: liruijinrona@163.com.
,
安徽淮南人
硕士研究生
主 要 研 究 方 向
,
现就读于
,
电 力 传 动
:
责任编辑
:
235
武伟民 收稿日期
:2011-03-31
PHANTOM
[4]
李 化 良
基 于
的
VB
.
DSP
与 上 位 机 串 行 通 信 设