调试与测试软硬件设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
系统测试软硬件设计
本课题所采用的单片机P89C668内部带有ISP和IAP的片内Flash存储器,其内部有Boot-Rom用于引导RS232 串口下载程序。本课题正是通过程序直接下载到单片机运行调试而不需要仿真器,以减少程序现场运行的不稳定性。以及为了配合本转换器在线调试功能,特意开发了具有输入输出字符功能的串口调试程序,以便观察内部运行的相关状态来进一步完善程序;同时为了使本系统具有很强的应用灵活性能,还开发了通过串口进行相关内部参数的设定的程序,从而使其可以适应不同的系统中[39]。
1 RS232串口硬件的实现
本串口硬件电路采用传统的电平转换芯片MAX232来进行TTL与RS-232C之间的电平转换,由于其内部有专门的升压电路,因此外部只须单一+5V供电,接口方便实用,芯片不易损坏具体电路如图6-1所示。
图6-1 串口扩展电路
2 RS232串口软件实现
串口软件中,由于程序下载软件有专门的厂家提供,不用具体介绍。在本课题中进行程序调试和参数设置所需的输入输出程序设计,主要包括串口中断子程序中将接收的数据存入串口接收缓冲区、将串口发送缓冲区的数据通过串口发送出去、
从串口缓冲区读字符、向串口发送缓冲区写字符、以及利用以上子程序进行进行发送各种格式的数据等(字符型、十六进制、IP格式等)。
3 串口中断子程序实现
串口中断函数在接收中断处理中负责对串口数据的接收,且只将接收数据放到接收缓冲区,接收缓冲区ComRxdBuf大小可根据需要进行调整,由两个指针管ComRxdWrite和ComRxdRead进行管理;其中ComRxdWrite 为接收缓冲区写指针,ComRxdRead为接收缓冲区读指针,且程序以比较此二指针来判断发送缓冲区是否有数据。COM_RXD_BUFF_SIZE 为接收缓冲区容量最大值(数组)。在发送中断处理中只负责处理发送缓冲区的数据输出到串口,输出缓冲区由指针ComTxdRead和ComTxdWrite管理,其中ComTxdWrite 定义为接收缓冲区写指针,定义ComTxdRead为接收缓冲区读指针,且程序以比较此二指针来判断发送缓冲区是否有数据,COM_RXD_BUFF_SIZE为发送缓冲区容量最大值(数组)。具体流程如图6-2所示。
发送中断子程序接收中断子程序
图6-2 中断子程序流程
4 其他串口处理函数[41]
完成上述中断子程序后,对接收和发送数据的处理只须对发送和接收缓冲区操作即可从而减少了程序的复杂性能。读取接收缓冲区一个数据由函数unsigned char Get_Char() 来完成,函数将读得的数据返回给调用此函数的主体来做进一步处理。同样,当要通过串口向外发送数据时则只须将所要发送的数据放入发送缓冲区,然后置发送中断标志位就可通过中断子程序自动将数据发送出去,由函数void Printf_Char(uchar ascii)完成此功能。具体流程如图6-3所示。
Get_char()函数流程Printf_Char()函数流程
图6-3 函数流程
以上面的程序为基础,只要连续向各缓冲区读或写数据即可得到相应的字符串的读写功能。当程序向外输出IP地址及其他参数时,由于单片机内使用十六进制,首先要将其转换成十进制及其相应的ASCII码,然后写入发送缓冲区后连续输出即可得到相应输出形式;同样当输入参数时,单片机收到后先将其十进制数据转换成十六进制,然后进行其他相应的处理。在程序调试时可以用其输出相应的所要了解的参数,以确定程序运行的状态和准确性以使系统进一步不断完善;在程序运行时可以用此来更改系统参数来和加强其灵活应用。PC机相应的串口软件采用比较流行的串口调试助手软件,而且程序可以通过查询命令而得到相应的参数设置命令及其格式。如图6-4所示.为电路启动时输出的命令提示,按照相应的格式用户即可对系统设置相应的参数。同时通过串口发送PING 命令亦可检测网络网络的连接性能。
图6-4 串口示例
由于RS232串口技术由于其本身的电路和协议简单,以及其灵活的特性,其应用越来越广泛。本课题正是利用其简单灵活的特点来进行对程序的调试和参苏设置,实现程序直接在单片机里运行,从而避免了采用仿真器运行调试后烧入单片机后有有可能带来程序运行不稳定的情况。另外如有需要则可将程序稍加改动则可完成以太网数据串口数据相互转换的功能,为本课题的二次开发奠定了硬件基础。在进行网络调试时采用softperfect Network Sniffer软件来抓取网桥与上位机相互通信的数据包,通过对此数据包的分析并加以改进逐渐使程序得以完善。