功率电感生产厂家
联系我们
热门搜索
点击排行
推荐阅读
猜猜你喜欢的
技术支持 您所在的位置: 首页 > 技术支持

基于有源滤波器的串口通信设计与实现

来源:    作者:    发布时间:2016-09-18 17:11:01    浏览量:

 写指令中的参数代号是指有源滤波器中需要修改的参数,如01H表示波特率,02H表示小数点位置。被写入参数值用2 B表示,低字节在前,高字节在后。比如,写指令为A5 01 27 01 80 25 5A,则表示要将下位机的波特率改为9 600 b/s。第一个01H表示从机地址,27H表示写命令,第二个01H表示需要修改波特率,要修改成的数据是2580H,十进制为9 600。
3 串行通信软件设计
 串口通信软件设计包括下位机的DSP串口编程和上位机的程序设计两部分。下位机的串口编程主要由串口初始化和通信协议组成,它接收上位机传来的指令,并根据指令作出相应处理。上位机软件设计主要包括串口配置和后续数据处理,它向下位机发送命令,并将接收到的数据进行处理、运算和保存。
3.1 下位机串口软件设计
 下位机的串口编程首先要完成串口的初始化,也就是设置操作所需要的参数,如设定串行通信中字符的格式、波特率和工作方式等。在本系统中,异步通信芯片采用TL16C750,它内部有11个寄存器,占用7个I/O口地址。DSP工作在微处理器模式,选择TL16C750端口地址为4000H~4006H(A15=0,A14=1),并通过控制地址线A0、A1、A2和线路控制寄存器的除数寄存器选通位D7来选通不同寄存器,以便进行读写操作。
在异步串行通信中,一方的发送数据波特率一定要和对方的接收数据波特率相同[4],本系统设置波特率为9 600 b/s,又因TL16C750的晶振是14.745 6 MHz,根据“发送波特率=输入时钟频率÷除数寄存器内容÷16”可得波特率除数寄存器(低位地址是4000H,高位地址是4001H,选择该地址时,线路控制寄存器的D7=1)内容为96,转化成十六进制是0060H。
 线路控制寄存器地址为4003H,它既是可写的也是可读的,该寄存器中的内容规定了通信中一帧的格式。本系统选择通信格式为8 bit数据位,1 bit停止位,1 bit偶校验,因此线路控制寄存器的值为1B。
 系统工作在中断方式下,允许接收错、发送寄存器空和接收数据就绪中断,因此中断允许寄存器(地址为4001H,选择该地址时线路控制寄存器的D7=0)的值为07H。
 将TL16C750的接收准备好信号(RXRDY)和发送准备好信号(TXRDY)与DSP系统的外部中断1(INT1)和中断3(INT3)相连。当DSP接到串口中断时,先屏蔽掉系统的其他中断请求,然后将RXREADY赋值为1,以便用来判断DSP是否完成了此中断响应。如果键盘没有终止串口通信,则将存入缓冲存储器组的数据上传给上位机。串口通信的中断子程序流程图如图2所示。

3.2 上位机串口通信软件设计
 上位机程序使用Visual C++作为软件开发环境。Visual C++在串口通信方面功能很强,不仅操作简单、代码执行速度快,而且界面设计比较好[5]。使用Visual C++进行串口开发有多种方法,如Windows API通信函数、MSComm ActiveX串行通信控件、Visual C++运行库函数,第三方编写通信类都可以实现串口编程。本设计采用MSComm ActiveX串行通信控件来编写通信程序。
 MSComm ActiveX串行通信控件是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件[6]。它提供了事件驱动方式和查询方式两种处理通信的方式。查询方式是通过检查CommEvent属性值来查询事件和错误,然后进行相应的处理;而事件驱动方式是在串口发生事件或错误时,产生OnComm事件进行相应的处理,它响应及时,可靠性高,因此本文选用事件驱动方式。
 首先在VC中建立一个基于对话框的应用程序,在该MFC项目中插入Microsoft Communication Control控件。在使用该控件前,先要对其进行初始化设置,主要包括选择COM口以及设置输入方式、波特率、数据位、检验位、停止位、发送缓冲区大小和接收缓冲区大小等。当然不要忘记打开串口,因为在32 bit Windows中,串口和其他通信设备都被作为文件进行处理,在使用前必须先将其打开。部分初始化程序如下:
m_ctrlComm.SetCommPort(1); //选择COM1
m电感封装_ctrlComm.SetInputMode(1);//输入方式为二进制方式
m_ctrlComm.SetInBufferSize(1024);
//设置输入缓冲区大小
m_ctrlComm.SetOutBufferSize(1024);
//设置输出缓冲区大小
m_ctrlComm.SetSettings(bc1); //设置波特率、校验位、数据位、停止位。其中bc1是从串口参数设置组合框中得到并经sprintf()函数格式化后的字符串

  • 浅析LED路灯的优势及存在的问题摘要:LED路灯与以高压钠灯为代表的传统路灯比较,具有光效高、能耗低、瞬时启动、寿命长、显色性好、结构牢固和便于调光等优势,但价位偏高,目前在技术上尚未成熟,在光学设计、散热和驱动电路等方面存在一些技

  • 基于 KeyStone DSP 的多核视频处理技术摘要随着越来越多的移动手持终端支持视频功能,对于流媒体内容及实时通信的网络支持需求也在显著上升。虽然对已部署的 3G 媒体网关进行升级可以支持较低的分辨率和帧速率,但这种由于自身的有限处理能力而进行的

  • 电源设计指南:拓扑结构(二)中高压变频器主电路拓扑结构的分析比较摘要:对中高压变频器几种常见的主电路拓扑结构进行了分析比较,对不同电路结构的中高压变频器的可靠性、冗余设计、谐波含量及dv/dt等指标进行了深入的讨论,并对中高压变

  •