Word版可编辑-ARM通讯程序设计精心整理.doc_第1页
Word版可编辑-ARM通讯程序设计精心整理.doc_第2页
Word版可编辑-ARM通讯程序设计精心整理.doc_第3页
Word版可编辑-ARM通讯程序设计精心整理.doc_第4页
Word版可编辑-ARM通讯程序设计精心整理.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统二课程设计报告ARM通讯程序设计设计日期:2011年07月4日 至 2010年07月8日设计题目:ARM通讯程序设计 设计的主要内容:一、 确定大概的设计框架。二、 具体设计1、 接口设计2、 硬件设计3、 画出软件流程图,编程实现三、总结:存在问题与改善,工作小结指导教师: 2011年7月2日教师评阅意见书:评阅教师: 2011 年 月 日摘 要设计ARM板到主机的网络通信 ,大致是通过在ARM板的RS232接口接收计算机传过来的数据,然后再通过RS232回传对计算机,并在计算机上显示出来。另外,如果数据需要保存,可以保存到一个txt文本文档中。通过UART串口通讯,首先是计算机端通过Console.ReadLine();获取的键盘输入的数据,经过封装,用函数Write()的接口_serialPort.Write(chars,0,1);发送到串口。然后在ARM板方面实现各个针脚对应的前提下,ARM板把接口Uart_Getch();接收到的数据进行解包。回发时又对数据进行封装,然后再通过接口Uart_SendByte(ch);通过串口发送给计算机,计算机通过接口_serialPort.ReadExisting();读的回送的数据,然后显示出来。关键字:ARM,PC机,通讯程序 ,UART1选题的意义本课题是设计ARM板到主机的网络通信。意义在于可以实现ARM板与电脑主机的通讯。可以把ARM板的数据或信息发送到PC机了,数据处理完之后再发送回ARM板。可以弥补ARM板在功能上的很多不足。在微控制领域具有重大的意义。2.1 系统方案设计通过在ARM板的RS232接口接收计算机传过来的数据,然后再通过RS232回传对计算机,并在计算机上显示出来。另外,如果数据需要保存,可以保存到一个txt文本文档中。2.2实现原理 2.2.1 UART原理:S3C2410A的UART提3个独立的异步串行I/O口,他们都可以运行与中断模式或DMA模式。S3C2410的每个UART由波特率发生器、发送器、接收器以及控制单元组成。波特率发生器可以由CLK或UEXTCLK提供时钟。发送器和接收器包含16字节的FIFO和数据移位器。数据被写入FIFO,然后在发送之前拷贝到发送移位器中。接下来数据通过发送数据引脚(TxDn)被移出。同时,接收到的数据从接收数据引脚(RxDn)移入,然后从移位器拷贝到FIFO中。 2.2.2数据的发送:发送的数据帧是可编程的。它包括1个起始位、58个数据为、1个可选的奇偶校验位和12个停止位,具体设置由行控制寄存器(ULCONn)指定。发送器还可以产生暂停条件,使得在帧发送期间迫使串口输出0.暂停信号在当前发送的字完成之后发出。暂停信号发出之后,继续向Tx FIFO发送数据。 2.2.3数据的接收:与数据发送类似,接收的数据帧也是可编程的。它包括1个起始位、58个数据位、1个可选的奇偶校验位和12个停止位,具体设置由行控制寄存器(ULCONn)指定。接收器可以检测溢出错误和帧错误。2.3功能设计ARM板方面:主要通过Uart_Getch();Uart_SendByte(ch);两个函数负责接收数据并回传数据。 计算机PC平台方面:通过Read();Write();两个函数负责传出数据并接收回显数据。2. 4接口设计 通过UART串口通讯,首先是计算机端获取的键盘输入的数据,经过封装,用函数Write()的接口发送到串口。然后在ARM板方面实现各个针脚对应的前提下,ARM板把接口接收到的数据进行解包。回发时又对数据进行封装,然后再通过接口通过串口发送给计算机,计算机通过接口读的回送的数据,然后显示出来。3 硬件设计LPC2132的最小系统以上是LPC2132的最小系统,最小系统是任何单片机开发的最核心部分,它是整个控制模块最关键的部分。如普通单片机一样它包括了外部晶振,复位电路,不过LPC2132在使用时还需另外将几个管脚拉高或者拉低。LPC2132的串口LPC2132的串口于大部分设计一样,由于一般PC机得串口外接处电源电压为5V,因而需要一块MAX232芯片将电平经行转换才行。图中由于在proteus中无法找到具体的串口,因而只有两根线,分别是数据发送和数据接收,另外的一根地线在此省去了。LPC2132的显示电路LPC2132的显示电路由两块74HC595芯片串行控制的,他们在控制时,一块控制位选,一块控制段选段,从而完成对于某一位数码管的显示。由于同时只能控制一位七段式数码管,因此需要以动态扫描的形式方能完成完整的显示。4 软件设计4.1 软件流程图 在使用ARM芯片时,首先需要将芯片进行设置,这些设置包括PLL(锁相环)的设置,为ARM的各个部分选择合适的时钟源,并未各个端口选择合适的第一,第二或者第三功能。然后根据要完成的目标,为UART0经行初始化,然后将要发送的数据通过串口发送给PC机,PC机通过串口接收数据后,通过键盘讲一个指令通过串口返回给ARM,ARM通过串口接收到数据后,将它在发送给数码管进行显示。4.2使用UART进行串口通信,需要设置以下与UART相关的寄存器。表 :UART行控制寄存器(ULCONn),其功能及位描述 UART行控制寄存器(ULCONn)表:UART行控制寄存器(ULCONn)位描述 :表:UART控制寄存器(UCONn),其功能及位UART控制寄存器表:UART控制寄存器(UCONn)位描述表:UART FIFO控制寄存器(UFCONn),其功能及位描述UART FIFO控制寄存器表:UART FIFO控制寄存器(UFCONn)位描述4.3 ARM端主要代码文件4.4 软件实现代码/*Copyright (c)*主函数, 调用要实现功能的各函数*/#include config.h#include /*/#defineUART_BPS115200/ 串口通讯波特率char INFO = ARM IS READY!;/* 函数名称 :write595()* 函数功能 :向595芯片中写入一个数据* 入口参数 :要向595中写入的数据* 出口参数 :无*/void write595(unsigned char data) unsigned char i; IO0CLR=17; for(i=0;i8;i+) if(data&0x80) IO0SET=16; else IO0CLR=16; data=1; IO0SET=14; IO0CLR=14; IO0SET=17;/* 函数名称 :void write_data()* 函数功能 :在数码管的某一位显示数据* 入口参数 :数码管的位选和数码管的段选* 出口参数 :无*/void write_data(unsigned char d,unsigned char n) write595(segd); write595(10; dly-)for (i=0; i50000; i+);/* 函数名称 :UART0_Init()* 函数功能 :串口初始化,设置为8位数据位,1位停止位,无奇偶校验,波特率115200。* 入口参数 :无* 出口参数 :无*/void UART0_Init (void)uint16 Fdiv;PINSEL0 = (PINSEL0 & (0x0F) | 0x05;/ 设置I/O连接到UART0U0LCR = 0x83;/ DLAB=1,允许设置波特率Fdiv = (Fpclk / 16) / UART_BPS;/ 设置波特率U0DLM = Fdiv / 256;U0DLL = Fdiv % 256;U0LCR = 0x03;/* 函数名称 :UART0_GetChar()* 函数功能 :从串口接收字节数据,并等待接收完毕,查询方式。* 入口参数 :无* 出口参数 :Rcv_Data 要返回的数据*/char UART0_GetChar(void)uint8 Rcv_Data;while(U0LSR&0x01)=0);Rcv_Data=U0RBR;return(Rcv_Data);/* 函数名称 :UART0_SendByte()* 函数功能 :向串口发送字节数据,并等待发送完毕,查询方式。* 入口参数 :dat要发送的数据* 出口参数 :无*/void UART0_SendByte (uint8 dat)U0THR = dat;while (U0LSR & 0x40) = 0);/ 等待数据发送完毕/* 函数名称 :UART0_SendStr()* 函数功能 :向串口发送一字符串* 入口参数 :str要发送的字符串的指针* 出口参数 :无*/void UART0_SendStr (char *str)while (1)if (*str = 0)break;/ 遇到结束符,退出UART0_SendByte(*str+);/ 发送数据/* 主函数* 功能 :蜂鸣器滴滴间隔的发出声响,同时串口以115200波特率打印Hello,wellcome to use JASK-RF2132 DemoBoard!字样*/int main (void)uint8 temp;PINSEL0=0x00000000; PINSEL1=0x00000000; /IO口初始化 UART0_Init(); / 串口初始化 while(1) UART0_SendStr(INFO);/串口打印 temp=UART0_GetChar();write_data(1,temp);/*End Of File*/5 总结5.1 存在的问题与解决方法在硬件方面,由于一开始对各种嵌入式系统平台、对嵌入式系统各端口、端口数据帧、端口物理特性等的不了解,以及客观条件的限制,在硬件的选择方面花了一定的时间,在ARM7与ARM9、USB接口与RS-232接口的选择上,我从老师、师兄以及上网找资料了解了这方面信息,并结合自身条件,从具有实际应用价值、开发难易度、以及开发时间各方面考虑,最终确定选择ARM7和RS-232接口。在软件方面,对于一些寄存器和函数接口等不熟悉花了太多时间,通过上网及参考了一些资料熟悉各函数接口及寄存器。在PC端程序中使用了相对比较熟悉的微软.net平台,并能快速开发出通信程序。在网络通信方面,一开始通信时遇到接收数据不一致甚至乱码的情况,利用排除法,后发现由于在嵌入式系统中程序的波特率与PC端接收程序的波特率不一致导致而成。修改之后顺利完成。5.2 工作小结通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。安排课程设计的基本目的,在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟。尤其是观察、分析和解决问题的实际工作能力,以便培养成为能够主动适应社会主义现代化建设需要的高素质的复合型人才。作为整个学习体系的有机组成部分,课程设计虽然安排在两周进行,但并不具有绝对独立的意义。它的一个重要功能,在于运用学习成果,检验学习成果。运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。对我们计算机专业的本科生来说,实际能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。这也是一次预演和准备毕业设计工作。通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。课程设计促进了我系人才培养计划的完善和课程设置的调整。近年来,我系为适应学生的实践需要陆续增设与调整了一系列课程,受到同学的欢迎,其中这次的设计很受同学们的喜欢。课

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论