热度 21
2013-8-11 16:08
1603 次阅读|
0 个评论
今天说说相对较简单的Kinetis KL25单片机的I/O口部分。Kinetis L系列单片机的I/0口根据不同的型号数量上可能有所不同,但大体上操作基本一致。 Kinetis L系列单片机和大多数单片机的I/O口操作一样,也主要分为方向寄存器,数据寄存器,为了增强单片机的I/O操作位处理能力,I/O模块对数据的操作划分了Set,Clear,和Toggle寄存器。通过使能端口的中断功能能产生相应的中断事件。I/O模块的时钟来源为系统时钟。 KL25 I/O口的特点: 1. 在所有数字端口引脚复用模式下,端口输入数据寄存器是有效的 2. 端口数据输出为相应的Set/Clear/Toggle寄存器 3. 端口数据方向寄存器 4. 通过IOPORT零等待的访问GPIO寄存器 KL25 I/O口功能描述: 1. 通用的输入端口。每个引脚的逻辑状态是有效的,能提供数字功能配置和相关端口控制和中断模块使能。 2. 通用的输出端口。每个引脚的逻辑状态通过数据方向寄存器和数据输出寄存器进行配置,能让端口配置为GPIO功能。它的方向位的设置和有些单片机的不同,当方向位设为1时代表输出,设为0时代表输入,此种形式和PIC系列的方式就是相反,不过记忆起来都比较形象。值得注意的是为了加强MCU的位操作处理能力,对于输出的操作划分了几个寄存器如Port Set Output Register,Port Clear Output Register,Port Toggle Output Register。 3. IOPORT功能。关于这点功能我还没具体用过,不是很清楚,就照PDF进行简单翻译吧! 此MCU的GPIO口是具有多口功能它能通过内核直接在F800_0000进行零等待状态的访问,也能通过cross bar/AIPS接口在4000_F000进行访问。当Cortex MO+内核从F800_0000开始进行访问时它又被称之为IOPORT接口。通过IOPORT接口访问时和其它的取指令是平行的,因此是在单周期内完成的(不是很明白,通过查看汇编代码没发现和直接通过GPIO寄存器访问有什么不同,可能主要还是快些吧!) I/O口的工作模式分为四种:Run,Wait,Stop,Debug.只有在Stop模式下GPIO模块是关闭的,其它三种模式下GPIO是同样处于正常工作模式下。PTB0,PTB1,PTD6,PTD7是具有高电流驱动能力,能直接的驱动LED和MOSET。相对而言,此单片机对于GPIO的操作还算比较简单,但由于具有ARM内核所以很多模块的操作都是和其它模块相关联的,比如时钟模块,端口引脚复用模块等等。 一般操作I/O口的步骤为: 1. 使能此端口的时钟,默认下Clock Gating是关闭的。 2. 通过多路复用单元选择GPIO的功能,一般GPIO引脚是具有很多其它功能,需要人为根据需要进行选择。 3. 设置端口方向。 4. 设置数据逻辑状态。