飞思卡尔ppt第05章.pptVIP

  • 8
  • 0
  • 约1.85万字
  • 约 61页
  • 2018-01-03 发布于湖北
  • 举报
飞思卡尔ppt第05章

5.3 AW60的SCI构件设计与测试 5.3.1 SCI构件设计概述 将SCI的初始化、接收和发送三种基本操作封装为三个独立的功能函数: 初始化函数:完成对SCI模块的工作属性设定; 接收功能函数:完成数据接收任务; 发送功能函数:完成数据发送任务。 均放置于SCI.C文件,配以头文件SCI.h SCI模块 * 嵌入式硬件构件与软件构件的层次模型 * 实现构件化编程的SCI软件模块应当具有以下几个特点: SCI模块是最底层的构件,它主要向上提供三种服务,分别是SCI模块的初始化、接收单个字节和发送单个字节,向下则直接访问模块寄存器,实现对硬件的直接操作。另外,从实际使用角度出发,它还需要封装接收N个字节和发送N个字节的子功能函数 SCI模块在软件上对应1个SCI.c程序源代码文件和1个SCI.h头文件,当需要对它进行移植时,大多数情况下只需简单拷贝这两个文件即可,无需对源代码文件和头文件进行修改,只有当实施不同芯片之间的移植时,才需要修改头文件中与硬件相关的宏定义 上层构件或软件在使用该构件时,严格禁止通过全局变量来传递参数,所有的数据传递都直接通过函数的形式参数来接收。这样可使程序接口简洁,避免全局变量可能引发的安全隐患。 * SCI模块(SCI构件)的5个基本功能函数 (1)SCI初始化: void SCIInit(uint8 SCINo, uint8 sysclk, uint16 baud) 通过其中一个串口发送一个字节: void SCISend1(uint8 SCINo, uint8 ch) 通过其中一个串口接收单个字节: uint8 SCIRe1(uint8 SCINo, uint8 *p) 通过其中一个串口发送N个字节: void SCISendN(uint8 SCINo, uint8 n, uint8 ch[]) 通过其中一个串口接收N个字节: uint8 SCIReN(uint8 SCINo, uint8 n, uint8 ch[]) * 5.3.2 SCI构件的头文件SCI.h 头文件SCI.h中的内容可分为两个主要的部分,它们分别是5个函数原型的声明和外设模块寄存器相关信息的定义。 5个函数原型的声明:给出了本SCI构件对上层构件或软件所提供的接口函数。 外设模块寄存器相关信息的定义:指明了本“元构件”与具体硬件相关的信息 * 5.3.3 SCI构件的C语言源程序文件SCI.c 1、SCI构件的初始化功能函数:SCIInit 波特率寄存器SCIXBD赋值 //1.计算波特率并设置:ubgs = fsys/(波特率*16)(其中fsys=sysclk*1000000 ubgs = sysclk*(10000/(baud/100))/16; //理解参考上一行,此处便于CPU运算 SCI_BDH(SCINo) = (uint8)((ubgs 0xFF00) 8); SCI_BDL(SCINo) = (uint8)(ubgs 0x00FF); // Sysclk为总线频率 // Baud为波特率 * 1、SCI构件的初始化功能函数:SCIInit SCI控制寄存器SCIXC1、 SCIXC2赋值 //无校验,正常模式(开始信号 + 8位数据(先发最低位) + 停止信号) SCI_C1(SCINo) = 0 //SCI控制寄存器1 // |||||||+-PT ---奇偶校验类型,在PE=1时有用 // ||||||+--PE ---奇偶校验使能,PE=0,无校验 // |||||+---ILT ---闲置线路类型选择 // ||||+----WAKEI---接受长期唤醒方式选择 // |||+-----M ---9位或8位数据选择 M=0,8位数据帧 // ||+------RSRC ---接收器源选择 // |+-------SCISWAI 等待模式中SCI停止 // +--------LOOPS---循环模式选择,LOOPS=0,正常模式 //允许发送,允许接收,中断方式收发 SCI_C2(SCINo) = 0 //SCI控制寄存器2 // |||||||+-

文档评论(0)

1亿VIP精品文档

相关文档