买了一块飞凌的RT1052的开发板,主要是看中了它的核心板价格便宜准备后面产品使用。使用了一段时间然后今天准备做个记录,上一下关于LPSPI1和UART2的DMA操作
由于现在RT1052的网上资料并不多,学习过程比较缓慢后面我想大家有学習的人,都多在网上讨论放些资料,这样这个片子应该也是很好用了从硬件性价比上说,RT1052真的要胜过STM32H7的很多但是可能原来用习惯了STM32,熟悉它的编程思想感觉上手STM32就是快,而RT1052就感觉编程上比较难但用了一段实际,感觉主要还是网上资料多少问题STM32的资料多,大部分時间都能找到对应的案例参考就不用思考了,直接使用而RT1052确实资料太少,但是带来的问题也是对STM32很多东西估计就了解就不深入了用昰没问题的,但是谈精通就说不上了
在使用LPSPI和UART上主要是停留在了DMA这个上面,对整个东西画了些时间今天总结一下,当然可能也还没有非常清晰但至少有些脉络。在这里要感谢野火的教程后面我也上传上来大家可以看看,如果没买开发板的还是推荐野火的,资料比較多看了野火]《i.MX RT库开发实战指南》的第19章,对RT1052的DMA结构有了一个了解然后看了官方的关于DMA的例子,有如下总结:
= 0CR[GRP1PRI] = 1。优先级数值越大对應的优先级越高默认情况下,DMA 通道组 1 的所有通道的优先级高于 DMA 通道组 0 的所有通道的
优先级DCHPRIn(n 取 0 到 31),每一个 DMA 通道有各自的通道优先级设置寄存器
2、RT1052 大多数外设能够申请 DMA 传输请求,在 RT1052 官方的 SDK 库中定义了 114个 DMA 请求源借助 DMAMUX 模块 (自己理解就是一个多路通道切换配置开关,配置那个DMA通道和那个请求对应)每一个 DMA通道可以选择任意一个 DAM 触发源作为 DMA 的触发信号。这样可以极大的提高 DMA 使用的灵活性与使用效率
3、传输控制描述符 TCD(transfer-control descriptor)。这一部分自己还没有很好的理解感觉就是设置DMA传输的一些参数的,诸如每次传输多少个字节对齐方式,循环传输多少次等一些参数这个可能后面还要多多了解。
用官方库一般程序需要步骤:
2、初始DMAMUX配置好通道和对应传输请求
3、配置传输及回调函数
我把自己測试的工程上传上来,供大家参考由于SPI和UART里面有官方库直接的SPI_DMA和UART_DMA的文件,已经做了一些封装上说的初始过程更简单了,然后关于管脚嘚配置在pin_mux.c文件的void BOARD_InitPins(void)内
一下工程文件可以直接放在NXP的SDK里面如下路径\boards\evkbimxrt1050\driver_examples\lpspi,直接打开MDK然后编译就留可以了使用的存储配置文件是对应飞凌开发板嘚,如果要对应自己的开发板估计要做些修改