在线时间4749 小时
UID3441752
注册时间2017-11-21
NXP金币82850
TA的每日心情 | 开心 2025-7-11 08:53 |
---|
签到天数: 301 天 连续签到: 2 天 [LV.8]以坛为家I
管理员
  
- 积分
- 39276
- 最后登录
- 2025-7-21
|
一、库的由来
恩智浦近年来推出了i.MX RT系列高性能跨界MCU,其超高的性能吸引了众多单片机开发者的关注。
在全国大学生“恩智浦杯”智能汽车竞赛的这个圈子里也圈粉众多,参赛的高校学生们表现出了很高的热情,尤其对i.MX RT1060系列,大家都想用上这款目前史上最强MCU,“逐飞科技”作为该项赛事的第三方硬件模块供应商,希望能为参赛同学们更快用上这款高性能MCU做点事情,于是我们做了既能适配智能车竞赛使用需求,又能适合用于其他产品开发的“RT1064库”开发工作。
库的主要工作是将单片机的功能模块封装成符合大家使用习惯的函数,同时还做了一些提高RT1064性能的优化工作,比如:外置SDRAM加速、优化TCM空间分配、指定代码运行位置、支持快速GPIO与ROM API等,这便是“逐飞i.MX RT1064开源库”的由来。
该库已通过Git进行开源,开源库的码云链接如下:
http://gitee.com/seekfree/RT1064_Library。
二、库的结构
直接上图,一目了然!
这是目录结构图:
Example文件夹下放置的是库例程,主要展示如何使用库实现单片机片内的外设功能。内容如下图所示:
nxp_libraries文件夹下放置的是NXP官方提供的SDK。内容如下图所示:
seekfree_libraries文件夹下放置的是逐飞科技精心编写的底层驱动,底层驱动是用NXP官方的SDK进行二次封装,以简化各个模块的使用步骤,使用更加方便。
如果不是参加竞赛的用户,可以使用这一层的驱动来实现RT系列的快速上手,也可以通过查看我们的代码用于学习如何使用SDK。
这部分目前支持ADC、FLEXIO_Camera、CSI接口、片内flash读写操作、GPIO、IIC、PIT、PWM、QTIMER、ROM API(用于操作FLASH)、SPI、SYSTICK、UART。如果有需要其他功能亦可直接调用SDK来实现其他功能。内容如下图所示:
seekfree_peripheral文件夹下放置的是各类常用的模块驱动,当使用到这些模块时只需要调用函数即可实现相应的功能,非常的简单方便。
目前实现了1.8寸TFT、ICM20602六轴陀螺仪、IIC通讯协议(模拟IO)、1.14寸IPS液晶屏、2.0寸8位并口屏幕、L3G4200D三轴陀螺仪、MMA8451三轴加速度计、MPU6050六轴陀螺仪、总钻风摄像头(flexio与CSI可同时采集)、NRF24L01无线模块、OLED显示屏、彩色摄像头(即将推出)、虚拟示波器通讯协议、无线转串口模块。内容如下图所示:
IAR和MDK文件夹下放置的是工程文件,根据自己使用的软件,从对应的文件夹打开整个工程,支持两个软件打开工程,使得用户选择IDE时更加的自由。
CODE文件夹下放置的是用户自己添加的代码文件,当用户自己添加文件的时候我们建议全部添加在这个文件夹内。
USER文件夹下放置的是main.c isr.c文件.
三、库应用举例1
例如我们需要使用单片机D13引脚输出一个50Hz的PWM,占空比为百分之10的波形。
我们可以在seekfree_libraries文件夹下找到zf_pwm.c文件,在文件里面我们可以找到pwm_init函数来实现我们想要的功能,如果是第一次使用库可能对函数的功能并不是很清晰,则可以查阅编写在函数上方的备注信息,了解函数实现的功能以及函数的参数所代表的意义。如下图所示:
一个参数指定引脚,参数不可随意设置,必须选择对应的枚举值,方便用于选择引脚,枚举定义如下图所示:
第二个参数是需要输出的频率,单位是Hz。
第三个参数为pwm的占空比,占空比为百分之5000/PWM_DUTY_MAX*100,PWM_DUTY_MAX在fsl_pwm.h文件中,默认为50000。
按照要求调用初始化函数的时候,如下编写即可pwm_init(PWM1_MODULE0_CHB_D13,50, 5000);
如果要修改占空比,可以使用voidpwm_duty(PWMCH_enum pwmch, uint32 duty)函数即可。第一个参数为引脚,第二个参数为需要达到的占空比的值。
四、库使用举例2
使用CSI接口采集总钻风摄像头并显示在1.14寸IPS液晶屏幕上。
我们可以在seekfree_peripheral文件夹下,找到关于总钻风(MT9V03X)和1.14寸IPS的驱动,我们只需要调用相当的初始化函数,以及对应的显示函数,即可完成一个比较复杂的采集工程。具体操作如下图所示:
五、特点简介
对于“逐飞i.MX RT1064开源库”,在设计之初就是为了能够高效率地使用这个高性能的MCU,因此我们从以下几个方面来提升RT1064的性能。
外置SDRAM加速:
该开源库将用户代码+中断函数+中断向量表,在上电后自动加载到外置SDRAM。相较于官方库,可以实现更加迅速的中断响应及中断处理速度。极大地提升了运行速度。
优化TCM空间分配:
在i.MX RT系列单片机内部,RAM分为ITCM、DTCM、OCRAM,但是仅仅只有ITCM、DTCM可以运行在600M的频率,OCRAM只有150M的频率,可以看出TCM的速度是最快的。
因此库将DTCM的空间从默认的128KB提高到了448KB,可以提供更多的高性能TCM空间。便于保存更多更大的变量或数组。
指定代码运行位置:
提供了简单的方法以指定代码在不同的RAM内运行,当计算一些多而复杂的运算时,可以将代码放入ITCM内以获得最高的运行速度。具体可以参考开源库内的库例程。
支持快速GPIO与ROM API:
对快速GPIO提供了支持,快速GPIO最高能达到150M的IO翻转速率,以此实现更高的IO操作速率。
提供了ROM API的支持,可以方便的操作片内的Flash以实现保存数据。
六、结束语
RT1064的库就先介绍到这里,大家在使用库的过程中如果遇到什么问题,可以在QQ群里讨论:QQ群技术交流平台【逐飞科技__智能车③部 824575535】
也欢迎大家提出改进建议。
作者:逐飞科技 文章出处:恩智浦MCU加油站
|
|