嵌入式技术基础与实践-王宜怀复习指导_第1页
嵌入式技术基础与实践-王宜怀复习指导_第2页
嵌入式技术基础与实践-王宜怀复习指导_第3页
嵌入式技术基础与实践-王宜怀复习指导_第4页
嵌入式技术基础与实践-王宜怀复习指导_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、嵌入式复习整理第1章 概述1. 嵌入式系统定义:一种计算机硬件与软件的组合,也许还有机械装置,用于实现一个特定的功能。在某些特定情况下,嵌入式系统是一个大系统或产品的一部分。2. 微控制器的含义:在一块芯片上集成了中央处理单元(CPU)、存储器(RAM/ROM等)、定时器/计数器及多种输入输出(I/O)接口的比较完整的数字处理系统。 第2章 AW60硬件最小系统与S08CPU1. AW60的组成结构:S08CPU、存储器、定时器接口模块、定时器模块、看门狗模块、 通用IO模块、串口通信模块(SCI)、串行外设接口(SPI)、 IIC模块、A/D转换模块、键盘中断模块、时钟发生模块、复位与中断模

2、块等。2. AW60存储器映像:所谓存储器映像(Memory map),是指地址$0000 - $FFFF这个64KB空间,哪些地址被何种存储器或I/O寄存器所占用。(1) 2KB的RAM:地址为$0070 - $086F,用于存放用户数据(主要是全局变量)和堆栈空间。(2) 两段Flash存储器,$0870 - $17FF,$1860-$FFFF,存储程序、常量和中断向量。(3) I/O映像寄存器:直接页寄存器、高端页寄存器和非易失性寄存器。3. AW60引脚:电源类信号引脚、复位信号引脚、主要功能模块引脚和其他引脚。4. AW60最小硬件系统:包括电源及其滤波电路、复位电路、晶振电路及其P

3、LL滤波电路、写入器接口电路。5. S08CPU的特点:(1) 目标代码与M68HC05系列、M68HC08系列MCU向上兼容;(2) 具有16位堆栈指针SP、16位变址寄存器HX,16种寻址方式;(3) 最高达40MHz CPU内部总线频率、64KB程序/数据存储器空间;(4) 不经过累加器A的存储器之间数据直接传送;(5) 快速8位8位乘法指令、快速16位与8位相除指令,增强的BCD指令;(6) 模块化结构,可扩展的内部总线定义可使寻址范围超过64KB;(7) 低功耗的STOP、WAIT模式。6. S08CPU的内部寄存器:(1) 累加器A(Accumulator):8位通用寄存器,用来存

4、放操作数和运算结果。(2) 变址寄存器HX(Index Pointer) :16位寄存器,H是高8位,X是低8位,可单独使用。(3) 堆栈指针SP(Stack Pointer) :指向下一个栈地址的16位寄存器,堆栈指针SP采用递减的结构,即进栈时SP减1,出栈时SP加1。(4) 程序计数器PC(Program Counter) :也是16位的,可寻址范围达64KBPC存放下一条指令的地址,在执行转移指令时存放转移地址,在执行中断指令时存放中断子程序入口地址。(5) 条件码寄存器CCR(Condition Code Register) :8位的寄存器,其中5位(除了中断屏蔽位I)用于指示执行完

5、指令的结果状态,这些位可由程序来测试。7. S08 CPU的寻址方式:(1) 内在寻址方式(INH)(2) 立即寻址方式(IMM)(3) 直接寻址方式(DIR)(4) 扩展寻址方式(EXT)(5) 无偏移量变址方式(IX)(6) 8位偏移量变址方式(IX1)(7) 16位偏移量变址方式(IX2)(8) 相对变址寻址方式(REL)(9) 存储器:直接地址直接地址寻址方式(DD)(10) 存储器:直接地址变址、变址加1的寻址方式(DIX+)(11) 存储器:立即数直接地址寻址方式(IMD)(12) 存储器:变址直接地址、变址加1的寻址方式(IX+D)(13) 无偏移量变址、变址加1寻址方式(IX+

6、)(14) 8位偏移量变址、变址加1寻址方式(IX1+)(15) 8位偏移量堆栈寻址方式(SP1)(16) 16位偏移量堆栈寻址方式(SP2)8. S08 CPU的指令系统:(1) 数据传送指令:取数指令、存数指令、堆栈操作指令、寄存器间数据传送指令、存储器间数据传送指令。(2) 算术运算指令:加减指令堆栈操作指令、乘/除法指令、加1/减1指令、取反/求补指令、比较指令、清零指令、测试是否为0指令、SP与HX增加指令。(3) 逻辑运算指令:完成逻辑与、或、异或等操作。(4) 位操作类指令:位测试、位置1、位清0等操作。(5) 移位类指令:单向移位指令、循环移位指令。(6) 程序控制指令:一般转

7、移指令、特殊转移指令、跳转指令 。(7) 其他指令。第3章 第一个样例程序及CodeWarrior工程组织1. 通用I/O接口:I/O接口,即输入输出接口,是微控制器同外界进行交互的重要通道。所谓通用I/O,也记为GPIO(General Purpose I/O),即基本的输入/输出,有时也称并行I/O,或普通I/O,它是I/O的最基本形式。2. 上拉电阻和下拉电阻:MCU的某个引脚通过一个电阻接到电源(Vcc)上,这个电阻被称为“上拉电阻”。与之相对应,若MCU的某个引脚通过一个电阻接到地(GND)上,则相应的电阻被称为“下拉电阻”。3. AW60的GPIO接口:AW60有7个GPIO口,每

8、个GPIO口的名称由一位英文字母组成,分别是A、B、C、D、E、F、G。GPIO模块的每个口最多对应8个GPIO引脚,但各个GPIO口的编程寄存器均为8位,没有对应引脚的位无效。GPIO的基本寄存器:(1) 端口数据方向寄存器(DDR):若为0,则为输入,若为1,则为输出。(2) 端口数据寄存器:存放要输入或输出的数据。第4章 基于硬件构件的嵌入式系统开发方法1. 嵌入式系统开发主要存在以下两大问题:硬件设计缺乏重用支持驱动程序可移植性差 2. 根据接口之间的生产消费关系,接口可分为两类:提供接口和需求接口。根据所拥有接口类型的不同,硬件构件分为三类:核心构件、中间构件、终端构件。第5章 串行

9、通信接口SCI1. 串行通信的概念:SCI(standard non-return-zero mark/space data format) “标准不归零传号/空号数据格式,通常采用NRZ数据格式。“不归零”的最初含义是:用正、负电平表示二进制值,不使用零电平。“mark/space”即“传号/空号”分别是表示两种状态的物理名称,逻辑名称记为“1/0”。下图给出了8位数据、无校验情况的传送格式2. 奇偶校验:字符奇偶校验检查(character parity checking)称为垂直冗余检查(vertical redundancy checking,VRC),它是每个字符增加一个额外位使字符

10、中“1”的个数为奇数或偶数。奇校验:如果字符数据位中“1”的数目是偶数,校验位应为“1”,如果“1”的数目是奇数,校验位应为“0”。偶校验:如果字符数据位中“1”的数目是偶数,则校验位应为“0”,如果是奇数则为“1”。3. 串行通信的传输方式:单工(Simplex)、全双工(Full-duplex)、半双工(Half-duplex)。4. AW60的SCI模块的编程结构:从程序员角度看,涉及SCI的有8个8位寄存器,其中2个波特率寄存器,1个数据寄存器,3个控制寄存器,2个状态寄存器。SCI波特率计算公式:SCI波特率= fBUSCLK/(16BR),其中fBUSCLK为内部总线频率SCI控制

11、寄存器1(SCIxC1)用于设置SCI的工作模式,可选择运行模式、唤醒模式、空闲类型检测以及奇偶校验。SCI控制寄存器2(SCIxC2)用于收/发及相关中断控制的设置。5. SCI模块的编程结构:(1) SCI构件的初始化功能函数:void SCIInit(uint8 SCINo, uint8 sysclk, uint16 baud)uint16 ubgs = 0;if(SCINo 2)SCINo = 2;/ 若传进的通道号大于2,则按照2来处理/ 计算波特率并设置:ubgs=fsys/(波特率*16)(其中fsys=sysclk*1000000)ubgs = sysclk *(10000/(

12、baud/100)/16;/ 理解参考上一行,此处便于CPU计算SCI_BDH(SCINo) = (uint8)(ubgs & 0xFF00)8);SCI_BDL(SCINo) = (uint8)(ubgs & 0x00FF);/ 无校验,正常模式(开始信号+8位数据(先发最低位)+ 停止信号)SCI_C1(SCINo) = 0b00000000;/ 允许发送,允许接收,中断方式收发SCI_C2(SCINo) = 0b00001100;(2) SCI构件的单字节发送功能函数:void SCISend1(uint8 SCINo, uint8 ch)if(SCINo2)SCINo = 2;/ 若传

13、进的通道号大于2,则按照2来处理while(!SCI_S1(SCINo) & 0b1000000);/ 判断发送缓冲区是否为空SCI_D(SCINo) = ch;(3) SCI构件的单字节接收功能函数:uint8 SCIRe1(uint8 SCINo, uint8 *p)uint16 k;uint8 i;if(SCINo2)SCINo = 2;/ 若传进的通道号大于2,则按照2来处理for(k=0;k=0xFBBB)/ 接收失败i = 0xFF;*p = 0x01;return i;6. 中断向量表:中断向量表是一个指针数组,其中每一项都存放了中断处理函数的入口地址。7. 中断的处理过程一般为

14、: 关中断、保护现场、 执行中断服务程序、 恢复现场、开中断。8. AW60中断源:AW60有26个中断源,按优先级从高到低的顺序分别是:复位中断(1个)、SWI指令中断(1个)、 引脚中断(1个)、低电压检测中断(1个)、ICG中断(1个)、定时器中断(10个)、SPI中断(1个)、SCI中断(6个)、键盘输入中断(1个)、ADC转换完成中断(1个)、I2C中断(1个)和实时中断(1个)。26个中断源只有18个中断向量,有的是几个中断源使用同一个中断向量。第6章 GPIO的应用实例键盘、LED与LCD1. 键盘(1) AW60的键盘中断模块:AW60单片机上的PTG0 PTG4、PTD2 P

15、TD3、PTD7共8个引脚与键盘中断模块(KBI)的引脚复用。键盘中断矢量地址:$FFD2$FFD3。键盘中断初始化顺序:先设置键盘中断状态和控制寄存器(KBI1SC),后设置键盘中断引脚使能寄存器(KBI1PE)。(2) 键盘编程扫描一次4X4键盘并返回扫描键值:uint8 KBScan1()uint8 line,i,tmp,tmp1,tmp2;line = 0b11111110;/ 是第一根行线为0(低电平)for(i = 0;i4;i+)/ 当前扫描的一行,输出低电平KB_GP = line;/ 输出开始扫描asm(“NOP”);asm(“NOP”);/ 读取键盘口数据寄存器tmp1 =

16、 KB_DP;/ 输入扫描结果tmp2 = KB_GP;/ 整合扫描结果,即键盘输入引脚的4位tmp = (tmp1 & 0x80);tmp1 &= 0x0C;tmp1 = (tmp13);tmp |= tmp1;tmp |= (tmp2 & 0x1F);/ 通过观察4根列线中是否出现低电平来判断当前行有无按键if(tmp & 0xF0) != 0xF0)/ 当前行有按键按下break;line = (line 1) | 0x01;return tmp;2. 数码管LED编程实例:(1) LED的引脚使用:利用MCU的PTB口控制8个位段(数据),PTB7 PTB0分别接h-a位段,PTD0,

17、PTD1,PTD4,PTD5作为片选端(位控制)。(2) LED编程结构:void LEDInit()/ LED初始化LEDdata_D = 0xFF;LEDcs_D = 0x33;void LEDshow1(uint8 I,uint8 c)/ 在LED上的第i位显示数字LEDcs = CStablei;LEDdata = Dtablei;void LEDshow(uint8 *Buf)/ 在LED上显示4个十进制数uint8 i,j,c;for(i=0;i4;i+)c = Bufi-0;LEDshow(3-I,c);/ 延时for(j=0;j100;j+);3. 液晶LCD编程实例(1) L

18、CD的基本特点和分类方法1)低电压微功耗,2)平板型结构,3)使用寿命长,4)被动显示,5)显示信息量大且易于彩色化,6)无电磁辐射LCD的分类:1) 按电光效应分类,LCD可分为电场效应类,电流效应类,电热效应类和热效应类。2) 按现实内容分类,LCD可分为字段型,点阵字符型,点阵图形型。3) 按LCD的采光方式分类,分为带背光源与不带背光源两大类。(2) HD44780:HD44780的外部引脚一般有14条,其中有8条数据线,3条控制线。HD44780指令集:(要求RS = 0)1) R/W = 0,DATA = 0000 0001 ,清屏2) R/W = 0,DATA = 0000 00

19、1* ,归位3) R/W = 1,读忙操作。(3) LCD的引脚使用在实验板上LCD数据线7-14引脚分别MCU的PTA0-PTA7连接,LCD的控制线RS,R/W,E(4,5,6引脚)分别与MCU的PTC4,PTC6,PTF6连接。(4) LCD编程结构:void LCDinit(void)uint16 i;/ 定义数据口(PTA0-PTA7)为输出LCDdata_D = 0b11111111;/ 定义控制口(PTC4,PTC6)为输出LCDctrlD1 |= (1LcdRS);LCDctrlD1 |= (1LcdRW);LCDctrl1 &= (1LcdRS);/ RS,R/W=00,写指

20、令LCDctrl1 &= (1LcdRW);/ 定义控制口(PTF6)为输出LCDctrlD2 |= (1LcdE);LCDctrl2 |= (1LcdE);/ E=1/ 1功能设置LCDcommand(0b00111000);/ 5*7点阵模式,2行显示,8位数据总线/ 2显示开关控制LCDcommand(0b00001000);/ 不闪烁,关光标显示,关显示/ 3清屏并等待结束LCDcommand(0b00000001);for(i=0;i40usfor(i =0;i1000;i+)asm(“NOP”);/ 2数据送到LCD数据线上LCDdata = cmd;/ 3给出E信号的下降沿,将数

21、据写入LCD中LCDctrl2 |= (1LcdE);asm(“NOP”);asm(“NOP”);asm(“NOP”);LCDctrl2 &= (140usfor(i =0;i2)TPMNo=2;else if(TPMNo= 60)/ 秒溢出*(p+1) += 1;/ 分加1*(p+2) = 0;/ 清秒if(*(p+1) = 60)/ 分溢出*p += 1;/ 时加1*(p+1) = 0;/ 清秒if(*p = 24)/ 时溢出*p = 0;/ 清时5. AW60定时器的脉宽调制(PWM):分为两种模式,边沿对齐PWM和中心对齐PWMvoid PWM(uint8 TPMNo, uint8 C

22、HNo, uint16 Period, uint8 Duty)uint16 j;TPM_CSTR(TPMNo) = 0x00;/ 计数寄存器初值 = 0x0000TPM_CNTH(TPMNo) = 0x00;TPM_CNTL(TPMNo) = 0x00;/ 设置PWM波的周期 = PeriodTPM_MODH(TPMNo) = (uint8)(Period8);TPM_MODL(TPMNo) = (uint8)Period;if(Duty100)Duty = 100;else if(Duty0)Duty = 0;j = (Period/100)*Duty;if(TPMNo 5)CHNo = 5

23、;/ 根据占空比,设置相应通道数值寄存器TPM1_CHVH(CHNo) = (uint8)(j8);TPM1_CHVL(CHNo) = (uint8)j;/ 设置定时器1通道状态和控制寄存器TPM1_CHSCSTR(CHNo) = 0b00101000;else/ 定时器2if(CHNo2)CHNo = 2;/ 根据占空比,设置相应通道数值寄存器TPM2_CHVH(CHNo) = (uint8)(j8);TPM2_CHVL(CHNo) = (uint8)j;/ 设置定时器1通道状态和控制寄存器TPM2_CHSCSTR(CHNo) = 0b00101000;第8章 串行外设接口SPI1. 串行外

24、设概念:一种同步串行通讯接口,用于微处理器和外围扩展芯片之间的串行连接,现已发展成为一种工业标准。时钟极性(CPHA):表示时钟信号在空闲时是高电平还是低电平。时钟相位(CPOL):决定数据是在SPSCK的上升沿采样还是在SPSCK的下降沿采样。2. SPI模块的时序:确保发送数据在一周期开始的时刻上线,接收方在1/2周期的时刻从线上取数,这样是最稳定的通信方式。3. AW60 SPI模块编程SPI模块有5个8位寄存器,分别是2个控制寄存器,1个波特率寄存器,1个状态寄存器和1个数据寄存器。void SPIInit()SPI_CR1 = 0b01010000;/ 不产生中断,主机方式,时钟空闲

25、低电平SPI_CR2 = 0b00000000;SPI_BR = 0b01000001;void SPISendOntByte(uint8 data)SPI_DR = data;while(0=(SPI_SR & (1SPI_SendEmyptBit);/ 查询SPI状态寄存器是否发送成功void SPIRecvOneByte()while(0=(SPI_SR & (1SPI_ReceiveFullBit);/ 判断接收缓冲区是否满return SPI_DR;第9章 Flash存储器在线编程1. Flash存储器编程方法有:写入器模式(监控模式)和在线编程模式(用户模式)2. Flash存储器

26、的基本特点:固有不挥发性;易更新性;成本低、密度高、可靠性好。3. Flash编程的基本操作有两种: 擦除(Erase):将存储单元的内容由二进制的0变成1写入(Program):将存储单元的内容由二进制的1变成0擦除和写入操作都是通过设置或清除Flash存储器的控制寄存器(FLCR)的某个或某些位来完成的。4. Flash存储器的编程寄存器:6个,对应地址为$1820-$1826Flash时钟分频寄存器(FCDIV)、Flash选项寄存器(FOPT)、Flash配置寄存器(FCNFG)、Flash保护寄存器(FPROT)、Flash状态寄存器(FSTAT)、Flash命令寄存器(FCMD)5

27、. 在运行flash擦除及写入程序时,flash区会被加上高于普通工作电压的编程电压,导致flash区读取不稳定,应该怎么解决此问题?答:为了使擦除,写入程序正常执行,需将擦除,写入子程序移入RAM中并转入RAM区执行。为此需在RAM区开辟一个缓冲区,供程序移入使用。6. Flash在线编程,开发擦除与写入子程序时,应该注意哪些问题?1) RAM中要留有足够的缓冲区。2) 擦除及写入子程序中要调用的延时子程序均随其后。3) 擦除及写入子程序中对延时子程序的调用必须使用“BSR 子程序名”。4) 擦除及写入子程序中及其中的延时子程序,若含有跳转语句,只能使用“BRA 地址”。5) 使用不同型号芯

28、片,延时时间应该根据芯片手册予以变动。6) 写入程序运行之前必须有擦除动作。7) 由于擦除是每次擦除一页,所以数据应该合理安排,避免误擦。8) 页首地址的定义须遵照保护寄存器FLBPR定义的规则。9) 在线编程时使用的Flash存储区域应在程序Flash存储区域之前。第10章 集成电路互连总线IIC1. IIC总线:主要用于同一电路板内各集成电路模块之间的连接。2. IIC总线的特点:1) 在硬件上,二线制的I2C串行总线使得各IC只需最简单的连接,而且总线接口都集成在IC中,不需另加总线接口电路 2) I2C总线还支持多主控(multi-mastering) 3) 串行的8位双向数据传输位速

29、率在标准模式下可达100kbps,快速模式下可达400kbps,高速模式下可达3.4Mbps4) 连接到相同总线的IC数量只受到总线最大电容(400pf)的限制。但如果在总线中加上82B715总线远程驱动器可以把总线电容限制扩展十倍,传输距离可增加到15m 3. AW60的IIC模块相关寄存器:寄存器名称缩写地址基本功能地址寄存器I2C1A 0x00000058设置从机地址分频寄存器I2C1F 0x00000059设置I2C模块的工作频率等控制寄存器I2C1C 0x0000005A设置传输格式、中断使能等状态寄存器I2C1S 0x0000005B表明I2C模块的工作状态数据I/O寄存器I2C1

30、D 0x0000005C收发数据第11章 模数转换模块1. A/D转换的基本问题:(1) 采样精度:数字量变化一个最小量时模拟信号的变化量,即我们通常所说的采样位数。(2) 采样速率:完成一次A/D采样所要花费的时间。(3) 滤波:为了使采样的数据更准确,必须对采样的数据进行筛选去掉误差较大的毛刺。(4) 物理量回归:在实际应用中,得到稳定的A/D采样值以后,还需要把A/D采样值与实际物理量对应起来,这一步称为物理量回归。2. AW60的A/D转换结构:AW60芯片内部集成了一个8位/10位精度的逐次逼近式的A/D转换模块,最多可支持28路独立的模拟输入(AD0AD27),但在64引脚封装中,只引出16个通道供用户使用(AD0AD15),这些通道与I/O引脚复用。 3. AW60的A/D转换模块编程寄存,8个寄存器:2个状态和控制寄存器,1个数据结果寄存器,1个比值寄存器,1个配置寄存器,3个引脚控制寄存器4. AD构件的函数原型:(1) AD转换模块初始化void ADCinit (void)ADC_ADC1CFG = 0b10110011;ADC_ADC1SC1 = 0b00000000;ADC

温馨提示

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

评论

0/150

提交评论