爱板网论坛

查看: 3062|回复: 19

[技术讨论] 飞控套件上手ABC

[复制链接]

主题

好友

106

积分

童生

  • TA的每日心情

    2016-7-14 01:29
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2016-7-12 10:38:19 |显示全部楼层

    ----------------------------------------------2016.8.18---------------------------------------------------------------


    嗯,刚才去论坛看了下各位的帖子,突然想到一个问题,前些天有小伙伴儿问我,为什么按照我说的,像飞控发送0-9的指令,飞控没有反应,不会像我说的返回各种传感器数据,这里说明一下,需要连接的串口是 “USB 串行设备 (COMx)”,而CDC那个是DEBUG那里的接口,并且,记得两个USB线都需要插上,这个之前我说过,原因我也没深究。
    还有就是,并不是所有的代码烧进去之后都会出现这两个串口,有的版本的代码烧进去之后就只有 “Jlink CDC UART Port (COMx)”,这个是Jlink的调试接口,不是这个。


    ----------------------------------------------2016.8.18---------------------------------------------------


    关于新版飞控代码开启APP遥控模式
    详细来说,有两种方法:
    1.飞控板上预留的串口接收机接口,RC-Control,的 P0.4,这是飞控板遥控数据输入的地方,接串口设备的TX引脚,通过这里输入的指令包的模式位,来控制飞控响应这里来的,还是APP来的遥控数据
    2.当然,这里永远有第二选择,简单方便,代码里有个宏开关,打开,就只响应APP的遥控


    我们还是都说明下吧
    1.首先看之前我们看过的遥控数据,RC-Control端的,
    看到第13,14字节,飞行模式,然后这飞行模式的值怎么取呢,我们回到源代码找答案:找到RCReceive.h这个头文件


    看到了吧,这里定义了两个模式对应的值,并且这是个16位的数据,转换成16进制后就是两个字节的数据了,刚好对应遥控数据包里的两个字节
    经测试,FLIGHTMODE1是蓝牙遥控模式,对应的16进制数据是 0x26 0xCA,所以,将你平时发送的数据包里的响应字节换成这两个就好了


    2.好了,还是来说第二种方法,逼近简单粗暴还很有效
    同样是得先找到头文件:哦不用了,就是刚才那个头文件并且上面刚才的截图就有,看到第一个宏定义,我就不重新放图了哈,
    就上面那个就行,好了,看到第一个宏定义:#define BT_ONLY 通过字面意思想必大家也知道什么意思了吧,就是指响应蓝牙的遥控数据
    你们看到的我这里是这样的,你们的工程里是被注释掉了的,只需要取消注释,重新编译工程,然后烧写代码,OK,你的工程也可以使用APP控制了。

    刚才我又把这帖子的原来的部分看了一遍,其实这里的很多之前也提到过,比如方法一的说明,之前也讲到过。多亿,如果大家以后有什么问题,还是希望大家能翻翻以前的资料,招呼找哦啊有没有能用到的,可能不是直接有用,但是可以给你一定的参考和启发嘛,客观您说是不~

    好了,就到这里,一直时间不是很多,写这些我有组孩子不好语言,经常删删改改的,今天就先更新这么多吧。改天把大家遇到的问题整理一下。



    --------------------------------------------------------------------------------------------------------------------------------------------------------

         看来教程这个教程会很长,还很杂,嗯,对。
          希望写完之后大家有问题能先来教程贴看看。
          当然希望大家也把自己的经验分享分享,一起,跟这英某凌坑x的源码工程干一架!


    --------------------------------------------------------  第一次使用华丽的分割线  ---------------------------------------------------------



    这几天熬了几夜,摸索出来的一些结果,在这里跟大家分享一下,因为资料有限,感觉很容易走很多弯路浪费时间.想在这里跟大家分享一些.


           我已经没有搞了,等下个月再回来看看小伙伴儿们的进度,希望到时你们也分享分享哟

    好,不废话了.

    1.关于DAVE的使用


    首先是版本,飞控工程和电调工程都是基于DAVE3开发的,同时DAVE4不想下兼容,SO,坑爹,只能使用3.


    DAVE3下载链接



           点击DOWNLOAD,
           在这里,找到没~
           QQ截图20160713192601.jpg

           之后会出来一个注册页面。。。嗯,不对,咱还是先倒回去下,注册下,
           哈哈哈哈哈~
           QQ截图20160713194624.jpg

           好了,我们回去继续下载
           可能会因为浏览器Cookie相关问题导致返回去之后账户还是没登录,好吧,咱们再来详细点,如何找到下载链接
           英飞凌官网
           QQ截图20160713200150.jpg
    QQ截图20160713200251.jpg

           QQ截图20160713200329.jpg


          

    然后是安装


    完整的安装包在安装时,同时会向主安装目录安装库,所以可能安装完之后不能直接编译工程,需要确认工程设置里的库函数路径是正确的。


    比如一开始的时候我就安装在D盘,而工程里的设置,有两个库的路径,是设置在C盘的,所以如果DAVE3没有安装在C盘,需要自己手动改一下工程设置,反正我是不喜欢工具软件装C盘。。。嘿嘿

           这会儿我们先把工程导入的步骤说完的,
          
           来,这里。

           工程导入

           桌面找到DAVE图标打开(会提示选择一个WorkSpace,为飞控工程新建一个问)

           QQ截图20160713202356.jpg

          
           左上角,File-Import-DAVE Project

           QQ截图20160713210632.jpg

           QQ截图20160713210807.jpg


           找到下载的飞控工程文件夹(我的已经添加了工程,别介那灰色啊~),Finish , 搞定

           QQ截图20160713210953.jpg


           好了,我们来确认工程库文件夹路径是否正确

        1).先在对应工程上右击,

    QQ截图20160712102550.jpg



    properties,出来工程设置框。


    QQ截图20160712102747.jpg



    找到图中所以设置,将其更改为你电脑上库所在路径(通常是根据你DAVE的安装路径来决定,库文件夹就在安装文件夹根目录),

    图中我的是刚导入的工程,也还没修改,我的DAVE安装在D盘,需要改为D盘路径

    像这样


    QQ截图20160712103123.jpg


    你们就按照自己的路径来改咯。

    库路径没有正确会在编译过程中出现很多头文件找不到的错误,所以,举一反三,如果发现有很多头文件找不到的时候,记得检查下库路径


    (这里再补充下,是一个小伙伴儿遇到的问题)


    他也是按照流程做了,可还是出现头文件的缺失:ARMCM4.h,而且我看了下我电脑上,这个头文件是有Keil目录下才有。呃。。。这 个,我们用的是DAVE的嘛,此处省略数天时间,结论是,记得按照:

            File-Import-Infineon-DAVE Project。。。

    这样,导入工程,然后再进行编译。


    2.关于转换工程到Keil下开发


    一开始因为没有详细的资料,一度认为没法完全转换过去,后来找到了资料,官方,详细,有效!(还是资料重要啊)

    首先是资料链接

    教程上说明很详细,我就分享下我尝试的过程。

    1).按照教程操作完之后,在Keil下编译,还是会出现很多头文件的缺失,这里算是一个小技巧吧,找到缺失的是哪个头文件,然后根据包含关系,到DAVE工程下找到它所在路径,然后就这个路径添加到Keil工程中.

    2).原工程中有几个宏定义,虽然DAVE生成的某个头文件中会自动加上这些宏定义,但是有些函数库,最底层的,没有包含其他头文件的,这些宏定义自然就对其不可见,所以需要自己在Keil工程设置中手动定义。

        这里直接给出飞控工程需要定义的两个宏:ARM_MATH_CM4,__FPU_PRESENT,_RTE_

    3).暂时没有想到,如果想起来了再添加吧


    3.固件烧写与调试方法

    飞控固件烧写

           对于飞控,板子上自带OBD板载仿真器,,其通过DEBUG-USB接口与电脑相连
           在这里

           QQ截图20160713222508.jpg


           如果使用DAVE,调试,它会自动安装Jlink最新驱动,调试的时候直接就可以下载
           同时,英飞凌也提供了单独的下载工具,XMC™ Flasher
         
    独立下载工具XMC Flasher的使用

           工具的运行依赖于JRE,所以请自己想办法安装好Jre,以便使用此工具
          
           QQ截图20160713223129.jpg


           首先是仿真器的连接,
                  Configurations-Change-Select Emulator...-OK
           此时点击Connect...按钮便可与飞控板连接,然后是
                 Select File...
           找到需要烧入的hex固件
                Program
           Done.

    电调固件烧写

           下面大家先看着,如果发现我讲得你晕乎乎了,这里有位小伙伴整理了详细的烧写过程,很有条理,推荐给大家
           Thanks to Lonely Byte,撒花~
          
           由于电调调试接口是外接的,并且Jlink又比较常见,所以我们就用它好了
           首先是接线,调试接口是电调板子上朝上的插针,根据电路图看引脚定义,将其与Jlink连起来,记住,SWD模式。
           (为什么?不知道
           QQ截图20160713225811.jpg
    QQ截图20160713225925.jpg


           接下来进行固件的烧写。
           映像中当时我尝试的时候,XMC Flash 在这里没法用,当然也可能是我记错了,大家可以试试,方法在上面已经讲过。
           这里就说下使用Jlink进行烧写的步骤。

           开始菜单-Jlink文件夹-JFlash,打开JFlash.(之前有同学问,JFlash是什么,我电脑上没有,怎么办?   呃。。。对于这个问题我是这么想的:需要用Jlink--->没有Jlink--->搜索\了解\下载--->正常使用--->继续干活儿)
          
           好了好了,回来。

           QQ截图20160713233421.jpg


           首先是设置:Option-Project settings...-Target Interface:SWD

           QQ截图20160713234033.jpg


           然后。。。别急!还有第二步:CPU-Device-Infineon-XMC1302-0128

           QQ截图20160713234240.jpg


           好了,现在,打开hex文件:File-Open Data File...

           QQ截图20160713234431.jpg


           嗯,对,现在:Target-Auto
           完成之后就行了。

    4.关于飞控与电调的通信方式

    环形串口结构的数据包格式。飞控Wiki链接有原始讲解,结合源码分析效果更佳哦~

    数据包总长度为13字节,前12字节,每3字节为一组,第一字节为命令标志字节,剩下两字节为16为电机调速数据,高字节在前,此3字节数据有4组,分别对应4个电调,最后一位是整个数据包结束标志。


    数据包从XMC4500串口1的1通道TX引脚 P0.1发送到电调1的RX,电调1将其中前3字节数据小包取出后,将后3字节数据往前移动3字节位,后面空出的3字节填充状态与数据值,并继续将13字节数据包往下一个电调节点传。最后,4号电调将数据包发送回XMC P0.0脚。

           QQ截图20160714004232.jpg



           下面介绍测试例子。

           使用一条串口线,或者其他单片机串口,作为向电调发送数据包的测试端。

           此时我们可以不用为电调接功率电源,只需保证3.3v端供电便可。

           将串口线TX 连接电调RX端,嗯,另一根可以不接。别走!地线接上。。。
           串口波特率设置为115200,HEX发送模式,数据包测试实例如下:


    22 02 00 22 02 00 22 02 00 22 02 00 04

           QQ截图20160714000910.jpg


           点击发送,如果操作无误,电调上绿灯会亮起,红色则代表错误
           这里可能会出现的问题我就暂时不写了,我码字好慢。。。

           此时如果需要测试电机,便可按照电路图引脚定义为电调接好功率端电源和电机,设置串口工具连续发送间隔为10ms左右,点击定时发送后即可观察到测试效果

    5.关于飞控的一些调试选项

    传感器数据和其他数据的输出。


           飞控固件烧写成功后,便可通过其USB接口的虚拟串口通道与电脑进行串口通信,下面是具体步骤说明

           同时将飞控板DEBUG 和 USB 丝印处的USB接口连接到电脑,(没去深究为什么,只插USB口不会有虚拟串口通道)
           此时电脑 “设备管理器” 可看到 “端口” 下面新出现一个串口号,使用串口工具,同样以115200的波特率,与其连接上。
           现在的需要取消HEX传送模式了,同时也取消HEX显示模式,这里指令有9条:1,2,3,4,5,6,7,8,9.


    呃,,,虽然我也觉得这指令集合有点,略Low,不过简单易用就行了嘛。具体说明在此
          
           usb-code.PNG


           嗯,可能你发现了,不过其实是有指令 "4"的,我们还是看源码;


       QQ截图20160714005318.jpg



            看,是有吧。

           简单介绍下:
           1   返回当前遥控器数据,油门、偏航、升降(应该理解为俯仰Pitch更合适)、副翼(应该理解为横滚Roll更合适)
           2   “启动内部PWM”,没搞明白,没有仔细纠结源码了
           3   Yaw,Pitch,Roll, 偏航,俯仰,横滚,角度值
           4   没懂,需要看源码
           5   4轴电机油门输出,PWM值,
           6   没搞清,看看源码呢
           7   哈哈哈
           8   嘿嘿嘿
           9   气压,温度,XXX

           好了,以上是串口信息说出的简单说明,要想看连续数据变化的话,同样可以向飞控连续发送指令,不过提个醒,

           别 2 了。。。

           嗯,,,我的意思是,指令2,发送一次就停不下来了,只能重启

    (突然想起那啥,黄金口诀:小什么重启,大问题重什么,,,)

    6.关于飞控的遥控方法

    遥控信号的输入方式和数据格式。


           两个消息:好消息和坏消息~
           好消息是,飞控板上预留了遥控器信号输入接口,需要自己焊上插针,
            
             QQ截图20160714012047.jpg



           另一个消息就是,这个接口,并不是惯性思维想到的PPM接收机输入接口,而是。。。

           又是一个坑爹的串口。。。咦~不对,想了想其实也可以是一个好消息。这意味着我们可以选用很多种通信模块作为遥控器了,只要是串口透传的模块,直接接上便能用,不用购置或者自制PPM信号板了。
           当然更多的还是觉得坑爹,以至于测试的时候我一直是用一根串口线连着,然后拿在手机飞。

           言归正传,将转口线TX端连接到最上面P0.4插针上,注意,地线。
          

    接着同样以HEX模式,通过串口下飞控发送遥控数据

    这里先上遥控数据协议:

         


           16字节的数据包包含了标志字节和各参数字节,第5字节是任意值

    这里有一点需要注意,各参数都是有范围的,错误的数据将会使得飞控有不可预测的响应。并且还有一个通道数据量程中点值的概念,举个例子,俯仰Pitch的数据范围是1000 - 2000 ,这个时候我们应该取1500这个值来作为测试所用值,因为与此值差别过大的值,都会影响调试时飞控对姿态的调整,所以,并不是数据在允许范围之内就行。

    我们再来对照代码

            

          这里是遥控数据的最大/最小值,中间是对应的16进制值,右侧是16进制中点值,这些是我另外注释上的。
          我们姑且认为这些是合适值进行测试,因为中点值在设计中可能不是线性计算得到的。
          那么我们的测试用遥控数据便可以出炉了

          30 00 01 80 00 A2 0B FF 2B FE 13 FD 21 32 1B FF

          为什么油门值没有使用中点值? 嘿,兄弟,你在逗我!
          作为验证,此时可以通过飞控USB虚拟串口端口发送指令1,查看飞控接收到的遥控数据

          不过在实际操作的时候,发现上面所选取的值并不是很准,具体原因,可能需要大家自己来试试了。

    7.关于飞控的PWM信号输出

    PWM信号的改接方法和输出方式。

    好晚了,明晚再码字吧。。。


    回复

    使用道具 举报

    主题

    好友

    14

    积分

    白丁

  • TA的每日心情
    郁闷
    2016-7-19 16:18
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2016-7-16 10:41:51 |显示全部楼层
    对我帮助很大,谢谢
    回复

    使用道具 举报

    主题

    好友

    95

    积分

    童生

  • TA的每日心情
    难过
    2016-8-16 16:21
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2016-7-27 15:43:04 |显示全部楼层
    谢谢,对我帮助也很大
    回复

    使用道具 举报

    主题

    好友

    82

    积分

    童生

  • TA的每日心情
    奋斗
    2016-10-6 13:13
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2016-8-7 15:20:23 |显示全部楼层
    多谢分享,最后两个图片看不了  楼主能否重新上传最后两张图片 多谢
    回复

    使用道具 举报

    主题

    好友

    51

    积分

    童生

  • TA的每日心情

    2016-8-14 11:56
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2016-8-14 14:42:05 |显示全部楼层
    楼主可否发一份成功移植到keil下的工程???我照着教程文档做下去,出现了很多问题,如下图。
    AZQ0CD@[Q]7`XW{0PY8)U3G.jpg
    RD2K)H}MH@LX@1U@{OU%~ST.png
    回复

    使用道具 举报

    主题

    好友

    106

    积分

    童生

  • TA的每日心情

    2016-7-14 01:29
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2016-8-18 21:08:28 |显示全部楼层
    南风吹梦 发表于 2016-8-14 14:42
    楼主可否发一份成功移植到keil下的工程???我照着教程文档做下去,出现了很多问题,如下图。 ...

    之前是转换了一次老版本的工程,这几天看得时候发现好像被我删掉了,等过几天空了我再用最新版本的工程试一遍
    回复

    使用道具 举报

    匿名  发表于 1970-1-1 08:00:00
    post_deleted
    回复

    使用道具

    主题

    好友

    165

    积分

    童生

  • TA的每日心情
    郁闷
    2016-9-1 11:36
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2016-8-22 15:28:47 |显示全部楼层
    大神,为何我的RCReceive.h中没有#define BT_ONLY?难道是代码不够新?
    /*
    * RCReceive.h
    *
    *  Created on: 22.12.2014
    *      Author: maan
    */

    #ifndef RCRECEIVE_H_
    #define RCRECEIVE_H_

    #ifndef DEBUG_ON_PC
    #include <DAVE3.h>
    #endif

    #define RC_UART_Handle                   UART001_Handle0
    #define BT_UART_Handle UART001_Handle1

    //Scale factors for angle and power                                                // other divisions tried with good stabilization
    #define SCALE_YAW        90.0                        // from -10..+10    // divided by 3
    #define SCALE_PITCH        30.0                // from -10..+10                // divided by 10
    #define SCALE_ROLL        30.0        // from -10..+10                        // divided by 10
    #define SCALE_POWER        100.0                        // from 0..100

    //Scale factors for joysticks to norm vaue between -1 and 1
    #define THROTTLE_MIN        306
    #define THROTTLE_MAX        1783
    #define RUDDER_MIN                6450
    #define RUDDER_MAX                7884
    #define ELEVATOR_MIN        4400
    #define ELEVATOR_MAX        5834
    #define AILERON_MIN                2354
    #define AILERON_MAX                3788

    //Values for Flightmode ON/OFF
    #define FLIGHTMODE0                        8498
    #define FLIGHTMODE1                        9930

    void RC_Receive_Int_Handler();
    void BT_Receive_Int_Handler();
    void WatchRC(void* Temp);
    void WatchRC_Init();
    uint8_t GetRCCount();
    int mergeBytes (uint8_t a, uint8_t b);
    void GetRCData(float* power, float* yaw, float* pitch, float* roll);
    long map(long x, long in_min, long in_max, long out_min, long out_max);
    #endif /* RCRECEIVE_H_ */
    回复

    使用道具 举报

    主题

    好友

    61

    积分

    童生

  • TA的每日心情
    开心
    2016-8-23 20:13
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2016-8-23 16:31:43 |显示全部楼层
    本帖最后由 ず竹叶萧萧は 于 2016-8-23 16:40 编辑
    sjh2100 发表于 2016-8-22 21:16
    如何下载pinus 调控板软件?使用jlink方式接线没有说清楚,我的jlink无法连接。请楼主百忙之中指点一二。谢 ...

    接线问题吗?把Jlink的SWDCLK和SWDIO两根线引出来然后按照电路图接好就行了,还有地线。没太懂你的问题所以不一定能帮上忙。http://blog.sina.com.cn/s/blog_154d272c90102wo6t.html
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /3 下一条

    手机版|爱板网

    GMT+8, 2018-5-28 15:55 , Processed in 0.118228 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-5   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001056号

    Powered by Discuz!

    返回顶部