四旋翼无人机(示意图如图所示)是通过调节四个电机的转速来控制旋翼的转速,从而产生升力并控制升力的变化,以实现四旋翼无人机升降和悬停等飞行姿态。四旋翼无人机控制器的基本功能描述如下: a、可以接收无线遥控器发来的控制命令,以便控制四旋翼无人机的飞行。 b、四

admin2019-06-06  27

问题 四旋翼无人机(示意图如图所示)是通过调节四个电机的转速来控制旋翼的转速,从而产生升力并控制升力的变化,以实现四旋翼无人机升降和悬停等飞行姿态。四旋翼无人机控制器的基本功能描述如下:
a、可以接收无线遥控器发来的控制命令,以便控制四旋翼无人机的飞行。
b、四旋翼无人机的四个电机分成2组(相对的2个电机为一组,同组的电机旋转方向应一致),1组反时针旋转,另1组顺时针旋转。控制器可以分别控制四个电机的转速,旋转方向。
c、控制器控制四个电机同时均匀旋转时,可以控制四旋翼无人机的垂直升降。控制器控制四个电机不均匀旋转时,则可以控制四旋翼无人机前后运动、俯仰运动等。
d、四旋翼无人机可以挂载其他智能设备(如喷洒设备、摄像设备等),控制器可以与这些智能设备通信,以便发送操作命令

根据上述功能要求的描述,若以S3C2410芯片为核心来设计四旋翼无人机控制器,请完善下面的叙述(程序)和回答有关的问题。(完善程序或回答问题所需的寄存器格式见题后的附录)。
(1)在设计四旋翼无人机的控制器电路时,除需要设计最小的硬件系统外,还需要设计无线遥控信息接收电路、电机驱动电路、通信接口电路等。所谓最小硬件系统应该包括电源电路、【81】电路、复位电路、调试测试接口、以及【821】
(2)在设计无线遥控信息接收电路时,若选用S3C2410芯片的SPI0部件来控制无线遥控模块的信息接收,即选用GPE端口的【83】引脚~【84】引脚(注:需写出引脚范围)连接到无线遥控模块相关的SPI信号引脚上。在软件设计时,其驱动程序中,需用下面语句来初始化它们作为SPI引脚使用。
rGPECON=((rGPECON|0x0A800000)&【85】);// rGPECON是GPE端口的控制寄存器
(3)若四旋翼无人机的4个电机采用直流电机,其调速采用PWM调速方式,因此,在设计电机驱动电路时,可选用S3C2410芯片的【86】部件外加功率放大电路来实现。如:利用该部件对应的脉冲输出引脚TOUTn来控制直流电机的电压,在频率一定的前提下,通过改变其脉冲信号的【87】来改变输出给直流电机的电压,从而控制电机转速。
在软件设计时,需要在相关驱动程序中初始化该部件,若所用的其中一个部件的初始化函数编写如下,请补充完善。(注:系统主频参数PCLK为40MHz,输出脉冲的频率为200Hz,分割器(时钟因子)值选择为1/2,预分频系数选择为4,脉冲占空比为50%。所有参数请用十六进制表示,需要的寄存器格式见题后附录)。
void T0Int(void)
{
//设置TCFG0寄存器
rTCFG0=【88】;//dead zone=0, 部件0的预分频系数设为4
//设置TCFG1寄存器
rTCFG1=【89】;//均为中断方式,部件0的分割器(时钟因子)值1/2
//设置部件0的相关常数寄存器
rTCNTB0=【90】
rTCMPB0=【91】
//设置控制寄存器TCON
rTCON=【92】;//仅更新部件0的TCNTB0和TCMPB0寄存器的值,不启动
rTCON=【93】;//仅部件0启动,并自动装载
}
(4)四旋翼无人机的控制器与挂载的智能设备通过串口进行通信,在设计串口通信电路时,选用S3C2410芯片的UART1部件来实现。若通信波特率设为115200bps,数据格式为:8位数据位、1位停止位、无校验。那么,在相关的驱动程序中,可以用下面语句来进行该部件的初始化。
rGPHCON=( rGPHCON & 0xFFFFF0FF) |【94】;//rGPHCON是端口H的控制寄存器
rUFCON1=0x0;//FIFO disable
rUMCON1=0x0;
rULCON1=( 0 <<3 )|(【95】<< 2 ) | (【96】);//设置线路控制寄存器
rUCON1=0x245;//设置控制寄存器
//设置波特率,小数采用四舍五入
rUBRDIV0=((int)(PCLK/(【97】× 16)+ 0.5)-1);
//PCLK是主频
(5)四旋翼无人机的软件设计者还需自行设计一个启动引导程序。在启动引导程序中需要完成异常向量表的设置,并设置各工作模式下的【98】指针。对于S3C2410微处理器来说,其启动引导程序中还需要完成禁止【99】部件和禁止中断,然后通过指令【100】来完成引导应用程序的主函数main()。
说明:下面是试题解答时需要用到的寄存器格式
1)端口E控制寄存器(GPECON)的格式

2)TCFG0寄存器的格式

3)TCFG1寄存器的格式

通过TCFG0、TCFG1的设置,可以确定预分频系数和分割器值,最终通过下面公式计算定时器输入时钟频率。
定时器输入时钟频率= PCLK /(预分频系数+1)×(分割器值)
预分频系数的范围 = 0~255
分割器值的取值范围= 1/2, 1/4, 1/8, 1/16
4)TCON寄存器的格式

5)GPHCON寄存器的格式

选项

答案(1)【81】时钟【82】晶振 (2)【83】GPE13(且[4]为GPE11)【84】GPE11(且[3]为GPE13)【85】0xFABFFFFF (3)【86】定时器【87】宽度【88】0x0004【89】0x0【90】0x4E20【91】0x2710【92】0x2【93】0x9 (4)【94】0xA00【95】0【96】3【97】115200 (5)【98】堆栈【99】看门狗【100】BL _main

解析 (1)一个嵌入式处理器自己是不能独立工作的,必须给它供电,加时钟信号,并提供复位信号,如果芯片没有片内程序存储器,则还要加上存储器系统,然后嵌入式处理器芯片才可能工作。嵌入式处理器运行所必须电路与嵌入式处理器共同构成了这个嵌入式处理器的最小系统。目前所有的控制器均为时序电路,需要一个时钟信号才能工作,大多数控制器具有晶体振荡器(简称晶振)。
(2)S3C2410的GPIO端口GPA~GPH多个并行I/O接口。GPE可作为输入/输出,还可作为I2C、I2S、SD卡以及SPI总线(GPE11~GPE13)的引脚,对应SPI接口的初始化代码是0xFABFFFFF。
(3)定时器可以实现PWM波形,改变其波形即脉冲信号的宽度,就可控制电机转速;定时器计数脉冲周期=1/(PCLK/(预分频值+1)/分频系数),则根据计算,可得寄存器0 的端口值为0x0004,寄存器1的端口值为0x0:控制寄存器设置参照寄存器格式,对相应位进行赋值。
(4)UART的波特率由除数寄存器决定,也取决于外部时钟;UBRDIVn=INT(UCLK/(波特率*16))–1。GPH口除作为输入/输出口,主要作为三个UART串行通信相关引脚,对照GPHCON控制格式进行初始化。
(5)大多数Bootloader都分为两个阶段,在启动引导程序中需要完成异常向量表的设置,并设置各工作模式下的堆栈指针,硬件初始化包括关闭WatchDog和关中断。
转载请注明原文地址:https://kaotiyun.com/show/3YMZ777K
0

最新回复(0)