logo资料库

基于VB的上位机与DSP之间的通信研究与实现.pdf

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
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 与 上 位 机 串 行 通 信 设
分享到:
收藏