西安邮电大学嵌入式实验5—UART.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
西安邮电大学嵌入式实验5—UART

西 安年月日?1. 掌握串行通信原理。 ?2. 掌握串行通信控制器UART0工作原理及各个控制寄存器的配置。 ?3. 掌握具体的电路板(开发板)UART0电平转换电路(SP3232E芯片的功能作用,工作原理)。 ?4. 掌握ARM芯片中串行通信部件UART和ARM CPU的数据交换方式。(查询方式、中断方式。 二. 实验内容 将PC串口(COM0)的发送信号(TxD)线连接到开发板UART0口中的RxD信号线,接收信号线RxD连接到开发板UART0口中的TxD信号线,通过PC机串口简单通信软件(EasyARM)向开发板发送字符串,由于交叉连接,开发板将接收到的字符串发送回来,如果EasyARM软件上能够正确的显示到接收到的字符串,表示ARM中的UART0工作正确,即UART0驱动程序功能正确。 理解芯片中UART0部件与ARM CPU核通过VPB接口连接后,数据交换方式,常用查询方式和中断方式,进一步理解外设和CPU交互数据的方式。 三.方案设计 将UARTO开发板按照要求连接到PC上,将程序下载在UARTO上,通过串口监测软件,给UARTO进行串口输入,并监测输出。观察输出结果。 四.测试数据及运行结果 1. 正常测试数据 输入 输出 ① Hello EasyARM2131 Hello EasyARM2131 ② ABCDEFGH ABCDEFGH ③ 1234567890 1234567890 2.非正常测试数据 输入 输出 ① Hello EasyARM2131 syARM2131 ② ABCDEFGH 五.总结 本次实验的目的是掌握串行通信原理,串行通信控制器UART0工作原理及各个控制寄存器的配置,具体的电路板UART0电平转换电路掌握ARM芯片中串行通信部件UART和ARM CPU的数据交换方式。相对前面的实验比较复杂 ,刚开始出现了错误,更换了中断方式,出现了结果,但是结果无法正常显示,在询问老师过后,更改了部分程序,最终正常的输出。 六.附录:源代码(电子版) #define U0RBR (*((volatile unsigned char *) 0xE000C000)) #define U0THR (*((volatile unsigned char *) 0xE000C000)) #define U0IER (*((volatile unsigned char *) 0xE000C004)) #define U0IIR (*((volatile unsigned char *) 0xE000C008)) #define U0FCR (*((volatile unsigned char *) 0xE000C008)) #define U0LCR (*((volatile unsigned char *) 0xE000C00C)) #define U0LSR (*((volatile unsigned char *) 0xE000C014)) #define U0SCR (*((volatile unsigned char *) 0xE000C01C)) #define U0DLL (*((volatile unsigned char *) 0xE000C000)) #define U0DLM (*((volatile unsigned char *) 0xE000C004)) 59 ARM CPU查询方式 #include config.h #define UART_BPS 115200 // 串口通讯波特率 void DelayNS (uint32 dly) { uint32 i; for ( ; dly0; dly--) for (i=0; i50000; i++); } void UART0_Init (void) { uint16 Fdiv; 60 PINSEL0 = 0 // 设置P0.0、P0.1引脚功能为TxD、RxD U0LCR = 0x83; // DLAB=1,允许设置波特率 Fdiv = (Fpclk / 16) / UART_BPS; // 设置波特率 U0DLM = Fdiv / 256; U0DLL = Fdiv % 256; U0LCR = 0x03; } uint8 UART0_GetByte (void) { uint8 rcv_dat; while ((U0LSR 0x01) == 0); rcv_dat = U0RBR; return (rcv_dat); } void UART0_GetStr (uint8 *s, uint32 n) { for ( ; n0; n--) { *

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档