《电子系统设计与工程实践2》实验讲义(AW60)(实验2_串口通信).docVIP

《电子系统设计与工程实践2》实验讲义(AW60)(实验2_串口通信).doc

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

《电子系统设计与工程实践 2》实验讲义(AW60 版) 实验二 串口通信实验 一、实验目的 了解 AW60 单片机串口通信基本原理。 了解中断的基本原理。 掌握基于构件库的串口编程基本方法。 掌握基于轮询和中断方式的串口接收数据编程方法。 二、实验仪器 自制 AW60 单片机开发板 V1;BPM 调试器;PC 机 三、预习练习 为使实验能顺利地进行,课前对教材相关内容进行复习,对实验原理、内容、 步骤、方法要做充分预习,编写相关实验程序(电子版)。 在预习报告中写出所编写的程序思路、画出主函数和中断处理函数流程图、 列出全局变量、主函数、中断处理等主要函数的程序代码。 四、实验原理 1. AW60 串口编程基本流程 AW60 对串口的编程主要涉及的寄存器有: SCI 波特率寄存器:SCIxBDH、SCIxBDL。 SCI 控制寄存器:SCIxC1、SCIxC2、SCIxC3,其中 SCIxC1 主要控制串口的工作 方式,SCIxC2 主要控制发送器/接收器使能、发送和中断允许。 SCI 状态寄存器:SCIxS1、SCIxS2,其中 SCIxS1 包含发送和接收标志位,可用 于查询。 串口数据寄存器:SCIxD,用于缓存发送数据和接收数据。 编写 SCI 程序主要包括三部分: (1)SCI 初始化 设置波特率:根据通信双方的波特率,设定 SCI 波特率寄存器 SCIxBD 中分频 因子。需要先写 SCIxBDH,再写 SCIxBDL。 设置工作模式(帧格式):更新 SCI 控制寄存器 1(SCIxC1),设定环路模式、 8 位还是 9 位数据位、是否允许硬件奇偶校验等,如无特别需求,可取其初始值 而不做设定。 《电子系统设计与工程实践 2》实验讲义(AW60 版) 使能接收和发送器工作:更新 SCI 控制寄存器 2(SCIxC2)来允许发送、接 收,以及是否允许发送中断和接收中断等。 如需要,更新 SCI 控制寄存器 3(SCIxC3),再对发送数据是否取反、是否允 许错误中断等进行设定。 (2)数据发送 允许 SCI 发送之后,通过读 SCI 状态寄存器 1(SCIxS1)判断其中的“TDRE 位” 是否为 1 来判断发送数据寄存器是否为空;当发送数据寄存器为空时,可以写发 送数据到发送数据寄存器 SCIxD。 写发送数据到 SCIxD 之后,通过查询或中断方式判断 SCIxS1 中的“发送完成 标志位 TC”是否为 1 来判断当前数据是否发送完成;当前字符发送完成后,可以 回到上一步继续下一个数据的发送。 (3)数据接收 允许 SCI 接收之后,通过查询或中断方式判断 SCIxS1 中的“接收数据寄存器 满标志位 RDRF”是否为 1 来判断是否接收到了新数据;当接收到新数据时,读寄 存器 SCIxD 来保存新数据,RDRF 自动清零。 2. SCI 构件中常用函数说明 (1)void SCIInit(uint8 SCINo, uint8 sysclk, uint16 baud); 功能:初始化 SCIx 模块,x 代表 1、2; 参数:uint8 SCINo: 第 SCINo 个 SCI 模块,其中 SCINo 取值为 1、2;如果 SCINo 大于 2,则认为是 2; uint8 sysclk:系统总线时钟,以 MHz 为单位; uint16 baud: 波特率,如 4800、9600、19200、38400; (2)void SCISendN(uint8 SCINo, uint16 n, uint8 ch[]); 功能:串行发送 N 个字节; 参数:uint16 n:发送的字节数; uint8 ch[]: 待发送的数据; (3)uint8 SCIReN(uint8 SCINo, uint16 n, uint8 ch[]); 功能:从串口接收 N 个字节的数据; 参数:uint8 SCINo: 第 SCINo 个 SCI 模块,其中 SCINo 取值为 1、2; uint16 n: 要接收的字节数; uint8 ch[]: 存放接收数据的数组; 返回值:接收标志= 0 接收成功= 1 接收失败; 3. 基于构件库的中断编程方法 《电子系统设计与工程实践 2》实验讲义(AW60 版) (1)在main.c 中编写中断初始化程序,允许相应中断(模块中断和总中断 ); 开放总中断: #define E nableInterrupts() asm(“CLI”) 关闭总中断: #define DisableInterr upts() asm(“SEI”) (2)在 isr.c 中定义中断处理函数,用 in terrupt 声明所定义的函数为 IS R; interrupt void ISR_N ame(void)

文档评论(0)

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

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

1亿VIP精品文档

相关文档