参考答案:
【问题1】(顺序不限)
(1)~(4):A、D、F、G
【问题2】
(1)增强驱动能力
(2)滤波,保持信号的稳定性
【问题3】
ARR寄存器的值:99
CCR寄存器的值:20
【问题4】
(1)检查一次无线模块数据的接收
(2)count%2==0
(3)读取MPU6050单元的数据,并进行算法处理
(4)计算当前飞控板系统的姿态,对各个电机进行调速控制
(5)count%200==0
(6)采集电池电压,通过无线模块把电池电压发送给遥控板
详细解析:
本题考查嵌入式软硬件系统协同设计过程中的知识及应用。
此类题目要求考生认真阅读题目中的题干描述,仔细理解设计的原理框图,详细观察提供的硬件原理图和所描述的软件实现流程示意图。前后结合进行题目分析。
【问题1】
1.SPI总线
SPI(Serial Peripheral Interface,串行外围设备接口)是由Motorola公司开发的一个低成本、易使用的接口,主要用在微控制器(MCU)和外围设备芯片之间进行连接。
SPI是一个4线接口,主要使用4个信号:1.主机输出/从机输入(MOSI);2.主机输入/从机输出(MISO);3.串行SCLK或SCK;4.外设片选((CS) ̅)。
根据时钟极性和时钟相位的不同,SPI有4种工作模式。时钟极性有高电平、低电平两种。时钟相位有两个:时钟相位0和时钟相位1。4种工作模式分别是——模式0、模式1、模式2和模式3,它们的区别是定义了在时钟脉冲的哪条边沿转换(toggles)输出信号,哪条边沿采样输入信号,还有时钟脉冲的稳定电平值(就是时钟信号无效时是高还是低)。
2.IIC总线
IIC BUS(Inter Integrated Circuit BUS,内部集成电路总线)是由Philips公司推出的二线制串行扩展总线,用于连接微控制器及其外围设备。
I2C总线是具备总线仲裁和高低速设备同步等功能的高性能多主机总线。直接用导线连接设备,通信时无需片选信号。
在I2C总线上,只需要两条线—串行数据SDA线、串行时钟SCL线,它们用于总线上器件之间的信息传递。
(1)SDA和SCL都是双向的。
(2)每个器件都有一个唯一的地址以供识别,而且各器件都可以作为一个发送器或接收器(由器件的功能决定)。
(3)I2C总线的数据传输过程:
①开始:主设备产生启动信号,表明数据传输开始。
②地址:主设备发送地址信息,包含7位的从设备地址和1位的数据方向指示位(读或写位,表示数据流的方向)。
③数据:根据指示位,数据在主设备和从设备之间进行传输。数据一般以8位传输,MSB先传;具体能传输多少量的数据并没有限制。接收器产生1位的ACK(应答信号)表明收到了每个字节。传输过程可以被中止和重新开始。
④停止:主设备产生停止信号,结束数据传输。
【问题2】
在一般的硬件设计尤其是IIC的电路设计中,对于SDA和SCL两线,由于其内部是漏极开路(open-drain),通过上拉电阻外加一个3.3V电源,用于增强系统的驱动能力。
同时在电源设计中,为了去除干扰噪声,需要对电源进行滤波处理,通常采用电容进行滤波处理,以保护系统电源信号的稳定性。
【问题3】
根据题干的描述可以得到公式如下:
(1)(自动装载寄存器ARR的值+1)*时钟频率=PWM频率
代入公式进行计算:(ARR+1)*1KHz=100KHz,可得到ARR=99;
(2)PWM占空比=CCR/(ARR+1)
代入公式进行计算:20%=CCR/(99+1),可以得到CCR寄存器为20。
【问题4】
根据问题的描述信息,可以获得系统的流程图:
系统启动,如果定时器到,需要检查一次无线模块数据的接收,并进行计数增加。对计数进行判断,如果是除2的余为0则说明是2次中断的倍数到达,需要进行MPU6050单元的数据读取和处理,如果中断是4的倍数,那么就说明需要计算飞控板系统的姿态,并对电机进行调速控制。如果是200次的倍数,则需要采集电池电压,并通过无线模块把电池电压发送给遥控板。