发表于: 2016-2-16 11:22:06 | 显示全部楼层

本篇文章介绍如何使用Kinetis SDK 1.2.0附带的FatFs库以及Eclipse Luna的Processor Expert进行设置。FatFs是一个通用的FAT文件系统,主要用于小型文件系统,由Chan编写。我比较喜欢使用Processor Expert,可能是因为它产生的代码量通常比直接使用KSDK库文件要小一些。我遇到了很多陷阱以及复杂的设置,并且想和大家分享最终我是如何使它正常工作的。


前提条件


在开始之前,请确保已经对开发环境进行了设置,并且在Eclipse Luna已经可以使用KSDK1.2.0编译和调试代码。如果没有,请参考另一篇文章:工具链:KSDK1.2.0与Eclipse4.4(Luna)以及GNU ARM插件。


建立新的工程


1.  在Eclipse中,在顶部菜单移动鼠标到“File”菜单项,在下拉菜单中选择“Kinetis Project”。

newkinetisproject_thumb.png


2.  给工程起个名字。我倾向于使用这种方式进行命名,开始是开发板或者是处理器的类型,紧跟着下划线,然后是工程的目的,这样我也可以创建用于其他开发板/处理器的相同目的的工程。设置工程的位置,我用的是工作区的默认位置。点击Next

nameproject.png


3.  选择使用的开发板,然后点击Next

developmentboard.png


4.  选择“KSDK 1.2.0”。设置KSDK路径的位置,我用的是绝对路径,如果你已经在Windows操作系统的环境变量中设置了路径,命名为“KSDK_PATH”,指向KSDK文件夹的位置,你也可以选择环境变量。我的KSDK的位置是安装的默认位置。

确保已经选中“Processor Expert”复选框。选择的角度单选按钮和工程的模式没有联系。单击Next按钮。

sdkandpeselect.png


5.  选择“GNU C Compiler”,并点击“Finish”按钮。

selectgnucompiler.png


注意:Processor Expert完成工程的初始化源码需要等待一段时间。通过查看Eclipse右下角,请密切关注进度何时达到100%。

generatingcode.png






跳转到指定楼层
发表于: 2016-2-16 11:56:07 | 显示全部楼层

打开Processor Expert


在继续之前,请确保现在可以生成工程,并且没有错误。如果有错误,那么请确保你已经按照指示进行操作,并且理解了文章工具链:KSDK以及Eclipse 4.4(Luna)和GNU ARM插件中描述的如何设置Eclipse环境,特别是“设置Eclipse工作区首选项”部分。

1.  打开 Processor Expert,在Eclipse的右上角有一个按钮。

openpeperspective.png

如果没有,请点击“Open Perspective”按钮,然后在出现的表中选择“Processor Expert”。

openperspective.png

addpeperspective.png


添加SD卡组件


1.  点击“Components Library”选项卡,搜索组件“fsl_sdcard”并双击。

component_fsl_sdcard.png


2.  在Components窗口选择“memoryCard1:fsl_sdcard”。

select_memorycard1.png


3.  单击“Component Inspector”选项卡。然后选择Initialization选项卡。取消选中“Auto initialization”。这一步是非常重要的,因为FatFs组件将会替我们完成初始化。其实即使你不使用FatFs,每次想要打开SD卡的文件,需要手动执行这一步。

sdcard_disable_initialise.png


4.  现在返回Components窗口,展开"memoryCard1:fsl_sdcard"组件,然后选择“fsl_sdhc1:fsl_sdhc”组件。

select_fsl_sdhc1.png


5.  单击“Component Inspector”选项卡。然后选择“Configurations”选项卡,然后发送模式选择“ADMA2”。确保选择“GPIO”用于Card detection typeFRDM-K64F开发板的SD卡卡座和连接到PTE6的开关相连,用来监测卡的插入。SD卡卡座本身也可以检测卡的插入,但是通过设置和使用GPIO引脚会更容易些。

不用担心时钟总线设置成400KHz,当fsl_sdcard组件初始化后,该组件最终能达到50MHz。你不会在这个例子中看到该代码,但是基本上,当FatFs组件打卡一个文件时,该组件执行挂载检测SD卡,然后初始化fsl_sdcard,以不同的速度进行,首先100KHz,然后400KHz,然后25MHz,最后是50MHz。

set_adma2.png


6.  现在切换到“Pins”选项卡。参考FRDM-K64F开发板的用户手册的第7部分“Secure digital card”,然后将引脚按照指定的进行映射。

fsl_sdhc_pins.png


7.  现在切换到“Initialization”选项卡。我们需要确保生成了中断服务程序的处理程序,因为fsl_sdcard初始化会用到。我们不能添加处理程序,除非先启用“Auto initialisation”然后勾选“Install interrupts”复选框。除了能够安装中断以外,没有什么特殊的需要来设置“Auto initialise”。预计KSDK以后的版本又能会分开这两个属性。幸运的是,当fsl_sdcard程序的初始化代码先关闭fsl_sdhc,然后重新初始化时,启用Auto initialization并没有引起危害。

fsl_sdhc_initialization.png


回复

使用道具 举报

发表于: 2016-2-18 11:23:21 | 显示全部楼层

添加Init_Port组件


1.  单击“Components Library”选项卡,搜索组件Init_Port并双击。

component_init_port.png


2.  在Components窗口选择“PORTA:Init_PORT”。

select_init_port.png


3.  单击“Component Inspector”。将Device改成“PORTE”,启用Clock gate,初始化Pin 0,设置Mux control为“SDHC01_D1”。

对于引脚0-5,请参考K64的参考手册K64P144M120SF5RM的“3.9.7.2 SD bus pullup/pulldown constraints”章节,该章节介绍了需要启用的上拉电阻设置 以及需要“Pull Up”的Pull选择。

我没有找到相关的文档,但是我发现仅当slew rate设置成“Fast”以及Drive strength设置成“High”,SD卡主机才能运行在50MHz。

init_port_pin0_settings.png


添加GPIO组件


1.  单击“Components Library”选项卡,搜索组件fsl_gpio并双击。

component_fsl_gpio.png


2.  在Components窗口选择“gpio1:fsl_gpio”。

select_gpio1.png


3.  单击“Component Inspector”选项卡。选择Input pins选项卡,在Input configuration 0部分将Pin改成“SD_CARD_DETECT”,也是PET6引脚。我们需要检测SD卡何时插入,所以在该引脚上我们需要一个中断,在Interrupt/DMA下选择“Interrupt on either edge”。参考 FRDM-K64F开发板用户手册的第7章节:“Secure digital card”。在该章节里指出当插入SD卡时,该引脚与VDD短路。因此,我们必须保证该引脚处于下拉状态。勾选Pull enable复选框,设置Pull select为“Down”。取消勾选Passive filterDigital filter

fsl_gpio_input.png


4.  选择Output pins选项卡。取消勾选Output pins复选框。我们不需要配置任何GPIO为输出引脚。

fsl_gpio_output.png


5.  选择Initialization选项卡。确保勾选“Auto initialization”和“Input pins”复选框。取消勾选Output pins复选框。现在这里需要注意的是在Interrupts下PORTE的中断是禁止的。参见下一步启用该中断。

fsl_gpio_init1.png


6.  要启用PORTE中断,选择“Events”选项卡,然后在PORTE IRQ handler旁边选择“generate code”。如果转回到Properties选项卡,你应该会看到现在启用了PORTE的中断。

fsl_gpio_events.png

回复

使用道具 举报

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

本版积分规则

主题 47 | 回复: 68



手机版|

GMT+8, 2024-5-1 01:21 , Processed in 0.038883 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

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