智能车制作

标题: 超核最新v2.41 K60开发库使用解说-- 新 [打印本页]

作者: yangguangyu    时间: 2013-11-23 18:12
标题: 超核最新v2.41 K60开发库使用解说-- 新
   一直在关注超核的库,每次更新也都第一时间的下载使用了一番!下面的内容老鸟们可以直接无视了,老鸟
对这个函数库的调用和理解应该都没啥问题,但是对于刚刚接触智能车的童鞋相信还是有点帮助的。。。。
        咱们首先从文件夹的结构说起:总共有三个文件夹和2个文件。
                     
            
     Doc文件夹
        这个里放的是一个pdf文件
  这个手册是基于上一个版本v2.4的库来写的,和现在的文件夹结构有一点不一样,但是整体的编程思路还是
一样的,函数的调用的方式也基本差不多,所以建议大家使用库的时候还是仔细的读一下这个文件,所谓磨刀
不误砍柴工吗!所有的函数调用方式里面都有的。当然有很多童鞋还是不愿意仔细看的,毕竟做车的用不了这
么多的模块,所以并不愿意把这个文档看完。因为自己也是过来人了,所以下面讲的也是以做车时可能用到的
模块来说。
    Libraries文件夹
        字面意思就很明确了--图书馆or函数库。所有的底层驱动函数都在里面了这个里面还有5个文件夹
                           
         --devices文件夹(该文件夹一般不需要改动)
该文件夹下是超核板子的外围扩展,里面包含了ads7843,kbi,Lcd,Led,mma845x,nrf2401,spiflash
         这几个文件。
             1、ads7843为电阻触摸芯片。貌似对做车没啥用的,和TSI(Touch Sense Input)倒是有点相似,只
         不过一个是电阻的,一个是电容的。
             2、kbi就是个按键的模块。这个有借鉴Linux的“运行时”全部都是传参,而我们可能常用的是"编译时"
             3、lcd这个是液晶屏幕。有2个模块spilcd和lcd_chk60evb,这2个都是液晶的,只不过一个是用在超核
          的开发板(扩展更多)上,一个是用在超核的核心板上。
             4、mma845x是一个三轴数字加速度计传感器。用IIC的方式去读取数据,其实很多IIC的器件都可以参考
           一下这个程序,因为IIC的启动顺序基本就是这样的,而且这个用的是硬件IIC使起来还是比较方便的,但
          是有个I2C_WaitAck(I2C_Type *I2Cx)这个函数的延时有点长了,如果提速的话把10000改小一点,500就
          差不多了
              5、nrf2401--2.4G无线通信模块。nrf2401成本不是很高所以使用的相对来说还是比较多的,对于调车很
           合适能传输大量数据,一次可以传输32个字节,当然也有好多用蓝牙的,蓝牙成本相对来说太高了,而且  
           nrf2401 加了天线够基本传输距离还是不错的,调车绝对是够了
               6、spiflash--扩展flash。这个一般也用不上,k60的存储还是挺大的。

        --drivers文件夹
drivers文件夹里放的都是底层的驱动文件,各个模块的头文件.h和.c文件都包含在里面。inc文件夹里放的是全  
         部的头文件,src文件夹里放着对应的c文件,这些文件在后面的例程里面都会包含进去。后面各个模块的介绍就
         会看到对这些底层文件的调用了。而对于我们做车而言,用的最多的就是

                     @. adc--模数转换。这个模块比较常用,今年摄像头的那是必用了,ENC-03的陀螺仪是模拟量的所以必须
                          要用AD来采集陀螺仪的数值,如果加速度计也是模拟量那肯定也要用的。2轴陀螺仪+3轴加速度计
                          怎么也要用上5路的AD,但是我当时只用了一个加速度计的z轴,和一个陀螺仪的数值,主要还是因为
                          当时参考的是清华直立的方案,转向那个陀螺仪没有加上,就上了个ccd,不过貌似不影响。不过AD使用
                          一定要注意同一个AD模块(AD0或AD1)不要多次改AD的精度,我就在这吃了个大亏啊!!调ccd的时候
                         一加ccd加速度计和陀螺仪示数就不正常,找了好久才发现是AD的问题,在读加速度计时用了AD0精度
                         是12位的。但是ccd的时候也用的AD0,精度变了,是8位的,被坑了好久好久。。。说多了都是眼泪

                      @.delay--延时模块。延时使用的是systick,这个叫滴答定时器,其实他也就是一个定时器,我们一般都是
                           用他来做延时用。以前51的一般都是用递加或者递减的方式延时,这个就谈不上精确了,而且在不同的
                           频率下运行时间是不一样的。从ARM Cortex-M0内核开始,一直到现在的ARM Cortex-M4,这些内核
                           中都搭载了systick滴答定时器,它放在了NVIC中,主要目的是为了给操作系统提供一个滴答中断。当然,
                           毕竟它也是一个定时器,我们就可以利用它来做到精确的软件延时。systick是递减计数的,并且只有24位
                           的寄存器所以延时要注意不要超过最大值。对于1us级的触发不要超过nms<=0xffffff*8*1000/SYSCLK
                     

                      @.enet--外部中断。外部中断也是挺常用的,用来检测起跑线的人也不少吧!不过效果有点马马虎虎吧,我们
                          队当时用的时候就是跑着跑着就停了,可能和赛道,光线各种的影响吧,总之最后停车时没加上吧!外部
                         中断听强大的,脉冲捕捉他也可以干,只不过有现成的模块了,一般也就没人这么用了,清华的调车视频里
                         卓晴老师不是推荐加个无线来遥控停车的吗,或者加个触发按键,车子倒了就触发中断,这个就可以用外部
                         中断来实现

                     @.ftm--弹性定时器ftm支持输入捕捉(可以捕捉编码器产生的方波信号,还可以正交解码)、输出比较(这个没用过)
                        还有一个非常重要的功能-产生pwm信号。做车的话这个是基础,应该没有那种直接给个高电平直接开动的家伙吧!
                        那个满占空的速度还是比较惊人。。。。。pwm信号的产生不算太难吧,超核的例程里也都已经有了,直接调用
                        就行了。

                     @.gpio--普通IO口这个就不说了吧。。。。
                           
                     @.i2c--硬件IIC。人家都说硬件IIC的速度多咋咋咋,但是现在看来有点落差啊!说好的100k,实际测了1k还不到啊!
                         不过我那个是采了6组的数据,6次一起可能会快一点,但是离100k。。。。前面也有讲到超核库的IIC有个小问题
                          I2C_WaitAck(I2C_Type *I2Cx)这个函数的等待时间有点长了,把10000改到500会好很多
         
                     @.lptm--低功耗定时器。这个可以当定时器用,但是一般都是用它来记脉冲了,对编码器的脉冲进行累加,不过有个
                         缺点就是值能测一路脉冲啊!有些组别需要2路脉冲就不太好办了,好像它也是可以分时复用的,就和xs128似的
                        一路脉冲捕捉,但是测2个编码器完全没啥问题,应为没有复用过就不献丑了。网上应该可以百度到。

                     @.pit--周期性中断定时器。我们的程序有很多都会放到中断里去执行,应为在main里时间基本上是不可控的,而pit
                       就可以达到程序执行时间的可控性,假如我就要一秒测一次AD值,在pit中就很容易实现,main就不行了

                     @.uart--串口。做车的一个重头戏就是调试了,有很多东西即便是错了,你也很难发现,通过串口调试把数据传回
                       电脑来观察,就很清晰明了,一般现在好多上位机可以用,生成图像直接就可以观察了,这些基本都要用串口,
                       上面的nrf2401虽然说用的是spi来通信,但是电脑那一端还是要转换成串口的那种格式的,计算机是不认识spi的
                       数据的
         --startup文件夹
           这个里面是一些芯片的配置文件和启动文件,也没研究过,但是肯定是很重要的,一般也别去改动了

       --utilities文件夹
这个文件夹放了2个实用工具,一个是超核的GUI,还有一个是超核的minishell,这2个还是挺实用的
           没钱买液晶屏啊!GUI就没试过了,minishell倒是用了一下,Yandld还稍微指导了一下,挺不错的
           就调用几个函数就好了
            
           需要修改的就是你自己要实现什么样的功能,你完全可以把整个本来的main()函数的内容重新起个
           名字放到里面来调用,这样就可以实现用上位机来控制主函数的执行,就和四旋翼的解锁有点类似
          只不过超核只给了一个LED的参考程序,对于很多新手来说调用还有点难度,老鸟应该还是能够理解
          的吧!还有putty这个上位机貌似很强大啊!调用的结果就是这样的:灯可以亮灭
                                                    

       --znfat文件夹
znFAT 一种较为完备的嵌入式平台上的FAT32文件系统解决方案,具体怎么搞的就不清楚,也没用过
          内存卡模块,大家有兴趣可以研究一下

   Projects文件夹
              该文件夹下放的都是例程。有这么几个文件
                     
              CHK60EVB Examples下的例程是给超核的开发板用的,跟核心板有差别的,用错了效果就不对

                了,做车的话大部分人买的估计都是核心板吧!所以千万不要选错了。
              CHKAtom_Examples下的例程才是个核心板用的各个模块的程序都很齐全的,参考一下DOC文件

                夹下的pdf文件,调用起来应该问题不大。就不一个个说了
              Templete(bootloader)这个程序是专门给使用bootloader下载的童鞋用的,里面更改了中断向量

                 表不过基本上k60+jlink都是标配了,估计用的也不多哈
              剩下的几个文件夹就没啥讲的了。。。。。。。。。。。。。。。

  能说的大概也就这么多,能力有限可能有一些小错误啥的,就请大家指正吧!最后感谢一下Yandld的及时解答
  附上超核库的最新下载地址http://www.znczz.com/forum.php?mod=viewthread&tid=202246

作者: wraith    时间: 2013-11-23 20:14
谢谢分享啦,用处不错
作者: 爱看下雪    时间: 2014-2-1 21:41
谢谢分享
作者: yaorumeng    时间: 2014-3-26 16:58
感谢!!!!!
作者: 爱可死/X    时间: 2014-4-27 12:31
:lol谢谢分享。不过现在Yandld嫌这结构不好,直接奔linux的写法,出了2.5版本的……让我等用2.4版本的十分尴尬
作者: 小白开水    时间: 2014-9-6 09:02
为什么我在用keil加载到我自己的程序的时候总提示..\SRC\SYSTEM\src\uart.c(459): error:  #268: declaration may not appear after executable statement in block
作者: yandld    时间: 2014-11-7 22:40
支持下哦~ 老感动了,最新的固件库在这里: http://www.znczz.com/thread-202246-1-1.html
作者: hermes    时间: 2015-6-9 11:02
你好,我移植 CCD程序 总厨问题 能不能指点一下
作者: 刘云峰1996    时间: 2016-1-20 09:07
谢谢分享xx




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2