在线时间4069 小时
UID3441752
注册时间2017-11-21
NXP金币753018
TA的每日心情 | 开心 2024-3-26 15:16 |
---|
签到天数: 266 天 [LV.8]以坛为家I
管理员
- 积分
- 32035
- 最后登录
- 2024-4-26
|
为方便参加恩智浦大学生智能车设计竞赛的同学们,成都逐飞科技设计制作了i.MX RT1064核心板,并配套开发了相应的函数库。
本文为逐飞科技来稿,在此分享给大家,对不参加智能车竞赛的朋友也有很大的帮助作用。
点此回顾上期内容“GPIO详解”。
各位朋友好,逐飞科技连载的“基于RT1064的智能车应用入门指导”开发分享又来投稿啦!希望我们能有精力坚持做好这次连载分享,同时十分感谢来自恩智浦的支持,感谢梁平老师帮忙检查修改文中错误。接下来进入我们今天分享的主题——“FAST GPIO模块详解与使用示例”。
对i.MX RT系列MCU了解的朋友应该知道,RT1052是最先发布的RT系列MCU,在使用的过程中很多朋友发现其IO翻转的速度只有大约10M左右,很多人都认为600M的主频,GPIO的速度才只有区区的10M实在是太慢了。
针对这个问题NXP在后来推出的RT1060系列MCU中加入了快速GPIO,大幅度的提升了GPIO速度,最高可达150M的IO翻转速率。IO翻转速率高了之后,有助于使用IO模拟IIC、SPI、8080等协议时提高速度。例如库里面的2寸并口屏幕就是采用快速GPIO来模拟8080实现的,相较于普通IO,速度提升十分明显。
Fast GPIO模块
FAST GPIO功能
相较于普通的GPIO,Fast GPIO的IO翻转速率最高可达150M,而普通的GPIO的IO翻转速率大约为10M左右。
FAST GPIO库函数
以下函数均位于zf_gpio.c和zf_gpio.h中。
fast_gpio_init函数参数
fast_gpio_set函数参数
fast_gpio_get函数参数
fast_gpio_dir函数参数
fast_gpio_toggle函数参数
FAST GPIO库宏操作
以下宏函数均位于zf_gpio.h中。
以上宏操作仅列出了B端口的宏定义,将PORTB换成PORTC、PORTD即可操作C、D端口。
使用宏操作相较于使用库函数具有速度更快的优点,因为宏操作实际上是直接操作的寄存器,相对于库函数来说减少了函数调用的时间。
PORTB_FAST_DR宏操作参数
PORTB_FAST_PSR宏操作参数
PORTB_FAST_SET宏操作参数
PORTB_FAST_CLR宏操作参数
PORTB_FAST_TOGGLE宏操作参数
GPIO使用示例
FAST GPIO输出模式(核心板LED闪烁)
#include "headfile.h" //包含头文件
int main(void)
{
DisableGlobalIRQ();
board_init(); //务必保留,本函数用于初始化MPU 时钟 调试串口
//初始化B9端口 输出模式 初始化之后输出低电平 使用默认引脚配置FAST_GPIO_PIN_CONFIG
fast_gpio_init(B9,GPO,0,FAST_GPIO_PIN_CONFIG);
EnableGlobalIRQ(0);
while(1)
{
fast_gpio_set(B9,1); //熄灭核心板LED
systick_delay_ms(100);//延时100ms
fast_gpio_set(B9,0); //点亮核心板LED
systick_delay_ms(100);//延时100ms
}
}
编程要点1:在使用GPIO时,务必在while(1)之前对端口进行初始化,然后再进行其他的操作。
编程要点2:在初始化GPIO时,最后一个参数可以直接使用FAST_GPIO_PIN_CONFIG宏定义参数,不需要自己去选择很多个配置参数然后相或,提高易用性。请注意这里与GPIO输出、输入、中断等的宏定义不一样。
FAST GPIO输入模式
#include "headfile.h" //包含头文件
uint8 pin_status;
int main(void)
{
DisableGlobalIRQ();
board_init(); //务必保留,本函数用于初始化MPU 时钟 调试串口
//初始化D0端口 输入模式 使用默认引脚配置FAST_GPIO_PIN_CONFIG
fast_gpio_init(D0,GPI,0, FAST_GPIO_PIN_CONFIG);
EnableGlobalIRQ(0);
while(1)
{
pin_status = fast_gpio_get(D0);//获取D0端口电平状态
//可以直接通过IAR或者MDK的在线调试窗口查看pin_status变量的值
//0:低电平 1:高电平
//D0端口接地时为低电平
//D0端口内部设置了上拉电阻,因此悬空时为高电平
}
}
编程要点:与上一个示例的注意事项一致。
本期逐飞科技“基于RT1064的智能车应用入门指导”之“FAST GPIO模块详解与使用示例”专题分享就到这里,大家在使用库的过程中如果遇到什么问题、或发现不足、或对库有什么建议请及时联系“逐飞科技”,我们将尽快完善。
PS:通过QQ群(逐飞科技__智能车③部:824575535)可以联系到我们,群里也方便大家讨论交流,也可与管理员私信,保障该开源库有问题时可以及时得到解决。然后再分享给各位使用,形成良性循环。接下来我们将会分章节详细介绍多个模块的使用。感谢关注“逐飞科技”,下期再见!
作者:范兵@逐飞科技 文章出处:恩智浦MCU加油站
|
|