智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3481|回复: 9
打印 上一主题 下一主题

【开源】一份基于KSDK2.1的KV58模板工程

  [复制链接]

6

主题

260

帖子

2

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
9895
威望
4260
贡献
2655
兑换币
1570
注册时间
2016-1-15
在线时间
1490 小时
毕业学校
哈尔滨工业大学(威海)
跳转到指定楼层
1#
发表于 2017-7-31 13:54:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
做车两年,感谢论坛上大佬们的无私贡献,让我学到了很多。今年用NXP官方出品的MCUxpresso SDK(原KSDK)撸的KV58,感觉资料和文档相当短缺,对初学者来说不是很易用。前期投入了不少精力才完成了底层配置,这个过程也让我对Kinetis有了更深刻的理解。本工程是基于KSDK例程模板修改而来,优化了原工程滥用宏定义导致时钟频率计算不正常的不便利,模仿lpld提供了软硬两个延时函数。已完成常见智能车制作常见模块的初始化配置,可结合KSDK手册参考阅读,了解KSDK的使用。同时附上一些自己今年陆陆续续移植的驱动,常见或者不常见的,成品或半成品,L3G4200D/NRF24L01/ST7735/SSD1351/OV7725/TVP5150/VL53L0X/ADNS9800。限于不便透露我们的源代码,就不提供单独的例程了,需要的可以自己移植。
回复

使用道具 举报

6

主题

260

帖子

2

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
9895
威望
4260
贡献
2655
兑换币
1570
注册时间
2016-1-15
在线时间
1490 小时
毕业学校
哈尔滨工业大学(威海)
2#
 楼主| 发表于 2017-7-31 13:54:47 | 只看该作者
红领巾KV58 模板.zip
链接: https://pan.baidu.com/s/1c1vGBW 密码: mfdh
回复 支持 反对

使用道具 举报

6

主题

260

帖子

2

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
9895
威望
4260
贡献
2655
兑换币
1570
注册时间
2016-1-15
在线时间
1490 小时
毕业学校
哈尔滨工业大学(威海)
3#
 楼主| 发表于 2017-7-31 13:54:57 | 只看该作者
接下来解析一下这个工程。

时钟部分:
/board/src/clock_config.c
如果想超频,修改这个文件里的
mcgConfig_BOARD_BootClockRUN.pll0Config.prdiv和vidv改变pll的预分频和倍频系数,以改变MCG的输出;
再注意配置simConfig_BOARD_BootClockRUN.clkdiv1,对Core、Bus、FlexBus、FastPeripheral/Flash配置合适的分频系数。(注意KV58的Flash频率不能超过32.5Mhz!)

管脚复用部分:
/board/src/pin_mux.c
具体复用表参见datasheet pinout一章,推荐使用PORT_SetPinMux而不是工程中多用的PORT_SetPinConfig设置复用功能!

外设初始化部分:
/board/src/board.c
常见外设功能的初始化代码集中在这个文件内。可以参考着代码和KSDK手册熟悉库的使用。
注意:KSDK默认外设库的FTM操作很坑,一是PWM精度只有100,二是CnV的触发和同步方式非常坑爹。
本人修改了几行底层代码。现在工程里PWM精度默认10000,同时每调用一次FTM_UpdatePwmDutycycle,都会强制触发Software Trigger,重装时间点设置为计数器溢出时。如果不想深入了解,直接调用函数就行。如果想自己修改,请阅读RM关于FTM部分的内容,CnV等寄存器的缓冲机制,以及Enhanced PWM Synchronization Mode的同步状态机。

最后一点,外设初始化的时候多要提供一个总线频率,如I2C_MasterInit(I2C1, &I2C1_config, SystemBusClock);
此时,需要确认待初始化的外设是挂载在哪条内部总线上的(读Reference Manual相关章节可以知晓),然后提供当前这条内部总线的频率。工程在clock_config.c中完成MCG、SIM初始化后调用了经过修改的SystemCoreClockUpdate()函数,会自动根据预设的分频系数和有源晶振频率计算各个总线的频率值,外设初始化时直接调用即可。如果提供了错误的初始化频率,可能会导致外设的工作频率不正常。

附可调用的频率变量列表:
SystemCoreClock - CPU内核频率,默认235Mhz
SystemFlexBusClock - FlexBus频率
SystemBusClock  - BUS频率
SystemFlashClock    - FLASH频率(事实上由于KV58的Flash和Bus共用一个分频系数,意味着FlashClock==BusClock)
SystemMCGFFClock - MCGFF时钟频率,一个低速时钟,用于给舵机FTM模块提供低频时钟源,实现低频率的PWM输出(50HZ)
回复 支持 反对

使用道具 举报

5

主题

38

帖子

0

精华

高级会员

Rank: 4

积分
830
威望
423
贡献
253
兑换币
221
注册时间
2016-7-27
在线时间
77 小时
毕业学校
家里蹲
4#
发表于 2017-7-31 13:59:46 | 只看该作者
顶~666
回复 支持 反对

使用道具 举报

9

主题

115

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3741
威望
1755
贡献
1086
兑换币
1166
注册时间
2017-3-6
在线时间
450 小时
5#
发表于 2017-7-31 14:03:53 | 只看该作者
大神啊~6666
回复 支持 反对

使用道具 举报

6

主题

260

帖子

2

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
9895
威望
4260
贡献
2655
兑换币
1570
注册时间
2016-1-15
在线时间
1490 小时
毕业学校
哈尔滨工业大学(威海)
6#
 楼主| 发表于 2017-7-31 14:05:51 | 只看该作者
补充一点,工程模板时钟是利用50Mhz外部有源晶振,以PLL倍频的方式产生的MCG时钟,芯片工作在高性能模式,并且默认我在sys_init里就打开了fpu和所有IO的时钟门控。如果有低功耗需求,请根据自己实际需求修改。MCG的状态转移需要遵循特定的顺序,KSDK的函数内部实现了这个顺序,不需要额外操心。直接设置目的模式就行。

我自己测试模板全速运行程序主板电流7V@200mA左右,主要是LDO太多,比较费电。功耗包括KV58和7725。
回复 支持 反对

使用道具 举报

3

主题

44

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2744
威望
1392
贡献
858
兑换币
924
注册时间
2014-9-24
在线时间
247 小时
毕业学校
实验小学
7#
发表于 2017-8-1 10:36:34 | 只看该作者
用KEx Tools配置时钟和引脚复用很方便
回复 支持 反对

使用道具 举报

3

主题

346

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
7307

活跃会员奖章优秀会员奖章论坛元老奖章在线王奖章

威望
3760
贡献
2651
兑换币
2477
注册时间
2016-5-3
在线时间
448 小时
8#
发表于 2017-8-30 13:53:21 | 只看该作者
大牛
回复 支持 反对

使用道具 举报

1

主题

83

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2431
威望
1520
贡献
669
兑换币
447
注册时间
2015-1-25
在线时间
121 小时
毕业学校
济南大学
9#
发表于 2017-8-30 15:03:32 | 只看该作者
这个就很6
回复 支持 反对

使用道具 举报

11

主题

128

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3932
威望
1831
贡献
1107
兑换币
1186
注册时间
2014-10-19
在线时间
497 小时
毕业学校
太和一中
10#
发表于 2017-8-30 15:51:39 | 只看该作者
这个是M7内核啊,666
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 19:30 , Processed in 0.080184 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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