FREESCALEK20UART串口实验报告.docxVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
FREESCALEK20UART串口实验报告

UART串口实验报告【实验目的】1、学习异步串行通信原理,理解字符与字符码的关系;2、学习Kinetis微控制器的UART模块。【实验任务】1、学习和运行Task1,掌握UART模块的编程方法;2、完成Task2和Task3. 【实验内容】1、(TASK 1)让单片机给计算机串口发送完整ASCII码表,每16个字符换行。1.1ASCII码表ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,ASCII码以0x00~0x7F这128个8 bit的数表示常用的英文、数字和符号。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。根据图1,发送完整的ASCII码表,实际上是需要从串口发送0x00到0x7F这128个数,数据类型是C语言的unsigned char。1.2单片机的初始化设置初始化SCI串口的波特率为9600。查阅芯片手册《K20P120M100SF2RM.pdf》可知,需要配置UART0_BDH、UART0_BDL和UART0_C4的BRFA位。设置波特率时,需要同时写入UART0_BDH和UART0_BDL。因为写入BDH之后把数值放在临时数据存储区里直到BDL写入才把数据放入寄存器。图1 ASCII码表[1]图2 芯片手册关于波特率设置(UART0_BDH、UART0_BDL)的说明波特率的值,遵循如下的计算公式:图3 芯片手册关于波特率设置(UART0_C4)的说明UART module clock总线时钟为System clock,System clock在上电后默认是DCO时钟经过FLL倍频之后输出的MCGOUTCLK,MCGOUTCLK默认为20.97MHz,所以UART module clock默认为20.97MHz。由上面公式可得BRFD值,而BRFA[4:0]=32*BRFD,由此可得出UART0_C4中BRFA[4:0]的值。要得到9600的波特率(UART baud rate),显然计算可得寄存器的设置值SBR应为0x85,BRFA=0x00。对应写成C语言语句就是:UART0_BDH = 0x00;UART0_BDL = 0x85;UART0_C4=0x00;初始化UART0串口启用发送接收器。查阅芯片手册,找到UARTx_C2寄存器的说明如下:图4 芯片手册关于UARTx_C2的说明从图4可知,要启用发送接收器,需将TE、RE两位置为1。需设置UART0_C2 = 0x0C。因此结合波特率,写出UART0串口的初始化函数如下:voidUART0_Init() { //Systemclock = 20.97MHz UART0_BDH = 0x00; UART0_BDL = 0x85; UART0_C4=0x00; UART0_C2 = 0x0C; }1.3 发送函数发送一个字节,需要先查询状态UART0_S1的TDRE位为1时,发送寄存器为空,可以发送一个新的字节。此时将要发送的字节写入UART0_D寄存器。写成C语言函数如下:voidUART0_SendChar(unsigned char data) {while(!(UART0_S10x80)); UART0_D=data; }1.4 程序清单综上所述,结合前面已经学过时钟设置,可以汇成以下代码:main.c#includederivative.h/* include peripheral declarations */voidUART0_Init(){UART0_BDH = 0x00;UART0_BDL = 0x85;UART0_C4=0x00; //波特率9600UART0_C2 = 0x0C; //打开发送和接收器}voidUART0_SendChar(unsignedchar data){while(!(UART0_S10x80));UART0_D=data;}voiddelay(){unsignedinti,j;for(i=0;i5000;i++){for(j=0;j100;j++) //嵌套的循环体,延时asm(nop); //空跳转}}voidSystem_Init(){SIM_SCGC4|=0x400;// 使能UART0的时钟SIM_SCGC5|=0x200; // 使能PORTA的时钟PORTA_PCR1=0x200; //配置端口PTA1为UART0复用端口PORTA_PCR2=0x200; //配置端口PTA1为UART0复用端口}intmain(){unsignedcharascii_char;System_Init();UART0_Init(

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档