关于电子设计大赛无人机题的学习笔记(1) MSP432入门和飞控源码框架解析

关于电子设计大赛无人机题的学习笔记(1) MSP432入门和飞控源码框架解析

电赛无人机题及其情况简述

电子设计大赛 —四天三夜爆肝大赛那个 大家懂得都懂 今年被老板抓了带队参加,这倒没啥总体来说当时接了这个活还蛮快乐的,新的芯片还能做无人机开发,老快乐了。以前用32做过ROBOMASTER 去年战绩还是挺不错的,去年电控主力!!
但是,但是,但是,假期开工四天时间 直接人就裂了 ,最主要的原因 老板要求必须要用MSP432P401R来做 就TI家的芯片 ,真的开发经历 直接血泪史 ,各种裂开(小声BB),主要原因
1.必须用KEIl做开发
2.从放假到比赛 工期只有三周左右 从零到一个亿 emmmmm好叭 也没事啦 毕竟老板导师 ,以后 还要跟着老板混
3.TI的芯片资料实在少到可怜 干个啥第一步google 10min ---- 无,csdn/github/starkoverflow -----无 好叭芯片手册 ——-----第二天凌晨五点 终于找到了 , 测试 ----失败 第三天凌晨 ----问题解决了 ,人麻了
4.大一小菜鸡真的见过的场面太少了
程序和飞机老板联系到了一家研发无人机的企业 _–中科浩电 提供了起步资源,算是勉强能开工
顺便备赛期间还在做DJI开源飞控的二次研发 哇这个飞机已经做好的飞控和DJI的比起来 仿佛 emmm算了不描述了…。。。
好了吐槽结束 现在开始正式的学习笔记

学习记录 D7.17-D7.22

本来是想把每一篇心得和记录分开写分开发留个技术手册 下次有人用这个神奇的芯片的时候少走点弯路
但是备赛时间太紧张了,等比完赛我会专门写几个处理问题的专题文档留做备用的。现在只能写个重要问题记录和技术日志。

1 编译烧录日志,问题测试记录/环境搭建

XDS下载器安装正常流程中遇到的相关问题及解决方案

录的时候会出现驱动安装

  • == 驱动安装过程中必须保证 驱动安装在C盘==

  • 可能会要求进行固件升级,固件升级的时候需要保证不断电 断电会刷砖(未找到修复方案)

Cannot Load Flash Programming Algorithm 问题的解决方案

  • 烧录的时候出现该报错进行FLM remove 重置即可
  • 最好在之后的烧录过程中把16K的FLASH FLM配置文件直接REMOVE掉,这样就再没出过这个报错。

2 无线调试器的装配

JTAG 接口

       jtag在TI 的相关板子中使用的接口方式是TI_JTAG,并且在和XDS调试仿真器的更换过程中要仔细按照tI官方给的方案才能联通 ,略微有点复杂但是 最后基于JTAG进行下载调试还是实现了

无线调试器

正点原子提供的无线调试器可以进行无线调试操作,接线方式理论上和JTAG 一致
无线调试器由于驱动问题 设备管理器中识别异常,解决方案暂时未找到

目前的解决方案

还是用lunchpad上自带的xds110调试器还是好使 …白瞎了花了那么多时间,最后再看情况搞吧

3 MSP432401R里的时钟信号设置和应用方式

先放一段配置代码 后面再补相关文献资料和讲解,这个和PWM波调制花了一整天时间看了三四十页 datasheet才搞定 比较麻烦



时钟配置方法   //结构体用于配置时钟基本信息

下面的函数包含了所需要的时钟配置方法

  eUSCI_UART_Config uartConfigA0 =
    {
    
    
            EUSCI_A_UART_CLOCKSOURCE_SMCLK,          // SMCLK Clock Source
            6,                                      // BRDIV = 78
            8,                                       // UCxBRF = 2
            32,                                       // UCxBRS = 0
            EUSCI_A_UART_NO_PARITY,                  // No Parity-
            EUSCI_A_UART_LSB_FIRST,                  // LSB First
            EUSCI_A_UART_ONE_STOP_BIT,               // One stop bit
            EUSCI_A_UART_MODE,                       // UART mode
            EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION  // Oversampling
    };

  MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P1,
            GPIO_PIN2 | GPIO_PIN3, GPIO_PRIMARY_MODULE_FUNCTION);    
    MAP_UART_initModule(EUSCI_A0_BASE, &uartConfigA0);
		CS_setDCOCenteredFrequency(CS_DCO_FREQUENCY_12);	// set DCO 12MHZ
    /* Enable UART module */
    MAP_UART_enableModule(EUSCI_A0_BASE);
    /* Enabling interrupts */
    MAP_UART_enableInterrupt(EUSCI_A0_BASE, EUSCI_A_UART_RECEIVE_INTERRUPT);
    MAP_UART_enableInterrupt(EUSCI_A0_BASE, EUSCI_A_UART_TRANSMIT_INTER

4 MPU 6050

我们复用中科浩电写的一部分代码没注意到A0人家已经给光流传感器给占了 于是只能换一换方案
因为A0口被串口占用,在测试样例代码过程中发现串口数据会被光流数据占用

在到达测试代码之前会产生不正常的数据流混杂
请添加图片描述

pwm 相关应用方法和计算方法

Timer_A is a 16-bit timer/counter with up to seven capture/compare registers. Timer_A can support
multiple capture/compares, PWM outputs, and interval timing. Timer_A also has extensive interrupt
capabilities. Interrupts may be generated from the counter on overflow conditions and from each of the
capture/compare registers.

— TI user guide

输入捕获,简单的说就是通过检测TIMx_CHx上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的通道的捕获/比较寄存(TIMx_CCRx)里面,完成一次捕获。

时钟的四种模式

请添加图片描述时钟的对应模式下生成的包含了多种模式 的电平转换机制,在比较寄存器CCRX到达不同的值得时候产生的效果包含了图中所示的机制

捕获/比较寄存器与引脚之间有映射对应关系----一定要注意这一点

在测试过程中犯了个很傻的错误 也做个小记录 示波器的阈值电压设错了 一直没检查出来问题 觉得是pwm波调制的有问题
请添加图片描述
示波器的阈值电压需要进行设置,如果设为3.3V,如果电压不完全够会出现波形完全不正常的情况

飞控主程序研究进展

FMU来自中科浩电

代码架构分析

但是轮询操作 kernel polling(); 十分暴力

直接把DOC时钟开到满,然后在不同时间 即在不同的频率上对应的不同的中断直接打开 (小声) 这DOC真是太难了 233333

在飞控中采用状态机逻辑操作,

状态机 的paRT1 负责操作 当前状态机的状态保持
包括的内容有 状态机的下一个状态 ,当前状态的参数 和当前状态的保持时长
状态机的paRT2 负责操作当前状态机的具体功能实现
状态机的标准写法值得学习
(代码下次再贴)
这是暂时的研发进展 会保持进展和记录

猜你喜欢

转载自blog.csdn.net/qq_32464727/article/details/119011009
今日推荐