智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 9259|回复: 8
打印 上一主题 下一主题

超核最新v2.41 K60开发库使用解说-- 新

[复制链接]

7

主题

33

帖子

0

精华

高级会员

Rank: 4

积分
513
威望
309
贡献
144
兑换币
126
注册时间
2012-9-17
在线时间
30 小时
跳转到指定楼层
1#
发表于 2013-11-23 18:12:27 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
   一直在关注超核的库,每次更新也都第一时间的下载使用了一番!下面的内容老鸟们可以直接无视了,老鸟
对这个函数库的调用和理解应该都没啥问题,但是对于刚刚接触智能车的童鞋相信还是有点帮助的。。。。
        咱们首先从文件夹的结构说起:总共有三个文件夹和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

3

主题

187

帖子

0

精华

高级会员

Rank: 4

积分
998
威望
457
贡献
301
兑换币
304
注册时间
2015-9-27
在线时间
120 小时
毕业学校
CUSTE
9#
发表于 2016-1-20 09:07:40 | 只看该作者
谢谢分享xx
回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1392
威望
616
贡献
360
兑换币
390
注册时间
2013-3-19
在线时间
208 小时
毕业学校
北华航天工业学院
8#
发表于 2015-6-9 11:02:57 | 只看该作者
你好,我移植 CCD程序 总厨问题 能不能指点一下
回复 支持 反对

使用道具 举报

68

主题

439

帖子

2

精华

版主

Rank: 9Rank: 9Rank: 9

积分
4618
QQ
威望
2342
贡献
1290
兑换币
1175
注册时间
2009-12-24
在线时间
493 小时
7#
发表于 2014-11-7 22:40:56 | 只看该作者
支持下哦~ 老感动了,最新的固件库在这里: http://www.znczz.com/thread-202246-1-1.html
回复 支持 反对

使用道具 举报

21

主题

248

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1653
威望
822
贡献
479
兑换币
516
注册时间
2014-7-12
在线时间
176 小时
6#
发表于 2014-9-6 09:02:06 | 只看该作者
为什么我在用keil加载到我自己的程序的时候总提示..\SRC\SYSTEM\src\uart.c(459): error:  #268: declaration may not appear after executable statement in block
回复 支持 反对

使用道具 举报

3

主题

145

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1133
QQ
威望
580
贡献
325
兑换币
378
注册时间
2012-11-7
在线时间
114 小时
5#
发表于 2014-4-27 12:31:31 | 只看该作者
:lol谢谢分享。不过现在Yandld嫌这结构不好,直接奔linux的写法,出了2.5版本的……让我等用2.4版本的十分尴尬
回复 支持 反对

使用道具 举报

1

主题

72

帖子

0

精华

高级会员

Rank: 4

积分
871
威望
466
贡献
279
兑换币
257
注册时间
2013-8-8
在线时间
63 小时
4#
发表于 2014-3-26 16:58:56 | 只看该作者
感谢!!!!!
回复 支持 反对

使用道具 举报

0

主题

71

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1088
威望
534
贡献
386
兑换币
343
注册时间
2012-11-20
在线时间
84 小时
毕业学校
茅盾中学
3#
发表于 2014-2-1 21:41:27 | 只看该作者
谢谢分享
回复 支持 反对

使用道具 举报

14

主题

607

帖子

0

精华

会长

魅影

Rank: 8Rank: 8

积分
3808

活跃会员奖章在线王奖章优秀会员奖章

威望
1736
贡献
952
兑换币
1177
注册时间
2013-7-27
在线时间
560 小时
2#
发表于 2013-11-23 20:14:00 | 只看该作者
谢谢分享啦,用处不错
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|亿加合和智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-4-27 00:53 , Processed in 0.086458 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表