打印
[Kinetis]

FRDM-K22F基于Kinetis SDK1.1的I2C通信HAL层例程

[复制链接]
1106|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vigous1|  楼主 | 2015-3-29 10:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

飞思卡尔去年终于推出了好多人都翘首以盼的底层驱动库Kinetis SDK,看名字就知道了,这个驱动库主要是针对飞思卡尔ARM家族Kinetis系列的了,目前已经更新到v1.1版本了。针对该驱动库的具体介绍在这篇**里我就不赘述了,建议大家直接到飞思卡尔的官网去仔细查阅和下载,其官方链接为http://www.freescale.com/zh-Hans/webapp/sps/site/prod_summary.jsp?code=KINETIS_SDK&fsrch=1&sr=3&pageNum=1&uc=true&lang_cd=zh-Hans,当然,刚开始支持的芯片系列有限,不过随着版本的不多更新,会有越来越多的芯片被添加进来。

    本篇**的主要目的是给出一个基于SDK HAL层的I2C通信例程供参考移植,毕竟用到I2C的地方还是比较多的,像外扩EEPROM,电源管理芯片等都需要与主MCU进行I2C通信。所以那怎样基于SDK编写HAL层的I2C驱动代码呢,虽然SDK里面自带Demo例程里已经有I2C的Driver层驱动了,但是Drvier层有其自身局限性(实现的形式和功能比较固定,一般作为演示用例还好),而HAL层则灵活的多(HAL层实际上就是对底层寄存器进行了封装,屏蔽了硬件的兼容问题),使用HAL层可以最大程度的利用外设模块。FRDM-K22板子上自带了一个飞思卡尔自家的6轴传感器E-Compass(3轴加速度+3轴地磁),通信接口为I2C和SPI接口可选,本篇博客既然以I2C为例介绍,所以就选择I2C接口,板子上已经将该传感器与MCU连好了,并且加了上拉电阻,所以硬件工作无需额外了,只需要在软件上下功夫就可以了,下面我简单介绍下开发平台和开发环境:

开发平台:FRDM-K22F,板载传感器的从机地址为0x1C,通信波特率为90kbps

开发环境:IAR 7.3

例程模板:KSDK_1.1.0\demos\hello_world\iar\frdmk22f

需要提一下的是,我写的代码是在SDK1.1中的Hello world例程的基础上修改的,修改后的代码我已上传到博客最后的附件中,将附件中.c文件的所有内容覆盖原来的在SDK1.1安装目录下hello_world例程的hello_world.c文件中的所有内容即可,然后编译并下载到板子上,运行PC端的串口调试助手或者超级终端(串口波特率为115200),复位MCU,此时会打印出"Hello World!”,然后向板子发送任意一个字符即可输出板载传感器6个轴向的数据,如下图:



好了,就说到这了,由于附件的代码里我已经都做了相应的注释,所以就不在博客里一一去剖析解释了(实在是有点麻烦,呵呵),我相信看完代码就都明白了,呵呵。


相关帖子

沙发
vigous1|  楼主 | 2015-3-29 10:57 | 只看该作者
附件为源代码 i2c_test.zip (2.15 KB)

使用特权

评论回复
板凳
FSL_TICS_ZJJ| | 2015-4-2 10:54 | 只看该作者
非常感谢你关于Kinetis的经验分享 !

使用特权

评论回复
地板
yinhaix| | 2015-12-3 13:47 | 只看该作者
没有中断啊

使用特权

评论回复
5
yinhaix| | 2015-12-3 14:10 | 只看该作者

使用特权

评论回复
6
奥德赛| | 2015-12-3 20:05 | 只看该作者
如何改成keil版本的呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

88

主题

427

帖子

15

粉丝