一个寄存器变化引起的变化

昨天下载了最新的飞思卡尔基于Cortex M4核的kinetis kv4xMCU数据参考手册,发现跟之前用的对于I2C模块一个寄存器的描述有变动,正好最近有使用过这个模块,所以非常敏感的仔细阅读了变化的这部分,总结一下分享给各位猿友,希望对大家有帮助

主要变化

新的参考手册主要增加了启动信号的中断,以前的版本没有启动信号中断的检测,其实主要是寄存器I2C_FLT的变化。通过对比可以发现,在新的参考手册中增加了启动中断使能和启动信号中断检测标志,因为在新的参考手册中启动信号中断检测标志占了一位FLT的域,所以FLT的取值设置范围由25-1变为了24-1,这一点也要注意。

老的版本的参考手册(Rev 1, 06/2014)对I2C_FLT的描述

寄存器的具体描述可以参考下图

新版本的参考手册(Rev 2, 02/2015)对I2C_FLT的描述

寄存器的具体描述可以参考下图

驱动程序的变化

由于新的参考手册增加了对启动中断的支持,所以对驱动程序的开发在处理中断程序时要增加对启动中断的判断和清中断标志,这一变化使得I2C的整个处理流程都可以在中断中完成,之前的版本启动信号要在中断之外处理,有点不方便,这次飞思卡尔的加入启动信号的中断检测方便不少,具体的中断流程的变化可以对比一下,在没有启动中断检测时,进入中断只要清I2C的IICIF中断标志,如下图流程图片段所示:

在新增加启动信号中断检测后,进入中断要判断是不是启动停止中断和重复启动中断,如果是要先清启动停止中断的标志,在清除IICIF中断标志,顺序不能乱。新的中断流程图片段如下图所示:

总结

要关注MCU或者数据参考手册的变化和勘误表的变化,以使你的代码更加优化和方便。多上官网查看产品的资料,相信你一定收益匪浅。

原文发布于微信公众号 - 嵌入式程序猿(InterruptISR)

原文发表时间:2015-08-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Youngxj

涛先森悬浮客服插件1.1

1825
来自专栏派森公园

深入理解Linux LA

经常和Linux打交道的童鞋都知道,load averages是衡量机器负载的关键指标,但是这个指标是怎样定义出来的呢?

1634
来自专栏Rainbond开源「容器云平台」

​Kubernetes集群中的高性能网络策略

1383
来自专栏张善友的专栏

MVC结构简介

本文编译自J2EE的相关文档。 MVC(Model-View-Controller)应用程序结构被用来分析分布式应用程序的特征。这种抽象结构能有助于将应用程序分...

1875
来自专栏企鹅号快讯

AI入门工具篇-Tensorflow安装

还记得去年大火大热的AlphaGo吗?从2015年开始,AlphaGo这名“网络棋手”先后挑战了欧洲围棋冠军、世界围棋冠军,几战成名后,吸引了大量的关注。而它背...

3988
来自专栏Java技术分享

redis是个单线程的程序,为什么会这么快呢?

摘要: redis是个单线程的程序,为什么会这么快呢?每秒10000?这个有点不解,具体是快在哪里呢?EPOLL?内存?

3627
来自专栏ImportSource

MartinFowler告诉你大数据架构师必备的NoSQL技能-版本戳(下)

上一集:MartinFowler告诉你大数据架构师必备的NoSQL技能-版本戳(上) 上集我们说了在single-server以及在“主从复制模型”(mast...

3829
来自专栏ATYUN订阅号

腾讯开源围棋AI程序PhoenixGo,复现AlphaGo Zero

PhoenixGo是一个围棋AI程序,它执行AlphaGo Zero论文“掌握无人知识的Go游戏”。它也被称为FoxGo中的“BensonDarr”,CGOS中...

2402
来自专栏Albert陈凯

使用storm trident消费kafka消息

storm通过保证数据至少被处理一次来保证数据的完整性,由于元祖可以重发,对于一些需要数据精确的场景,可以考虑用storm trident实现。 传统的事物型...

3169
来自专栏企鹅号快讯

分布式TensorFlow入坑指南:从实例到代码带你玩转多机器深度学习

AI UNION 人工智能产业技术创新战略联盟 这里是人工智能联盟,汇聚了最新的AI新闻资讯,还有最前沿的国内外AI开源技术,最具价值的AI创新企业,最具权威的...

2137

扫码关注云+社区

领取腾讯云代金券