官方有基于DMA的SPI介绍吗

发表在 SPI2019-7-17 17:37 [复制链接] 12 654

如题,有没有利用DMA进行SPI通信的介绍或者例程呢?
  m2 A% z0 B3 J. t2 M' H$ D8 n- p+ I
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-7-17 21:06:25 | 显示全部楼层
可以打开通过 spi 控制的硬件,例如 spi flash 打开 spi dma 其读写速度会有明显提升。
使用道具 举报 回复
发表于 2019-7-17 21:52:31 | 显示全部楼层
本帖最后由 CrisJay 于 2019-7-17 21:54 编辑 1 e7 b% m2 Q" [5 |4 d
Summer_gift 发表于 2019-7-17 21:06) }3 z/ Y, x7 B* X/ l: _
可以打开通过 spi 控制的硬件,例如 spi flash 打开 spi dma 其读写速度会有明显提升。 ...
$ {$ c: |1 s; X- @3 L5 s* z2 ~
好的,谢谢!是直接通过menuconfig选中 ENABLE SPI TX(RX) DMA 就可以吗,还是需要进行一些修改或者其他配置?
使用道具 举报 回复
发表于 2019-7-18 07:58:20 | 显示全部楼层
CrisJay 发表于 2019-7-17 21:52
# U* u2 A7 t* G" _8 c/ m好的,谢谢!是直接通过menuconfig选中 ENABLE SPI TX(RX) DMA 就可以吗,还是需要进行一些修改或者其他配 ...
* ]/ M0 O9 n3 X8 t$ _
只需要 menucofig 选中即可。
使用道具 举报 回复
发表于 2019-7-18 08:29:56 | 显示全部楼层
Summer_gift 发表于 2019-7-18 07:586 S' e3 q0 b/ Z' _
只需要 menucofig 选中即可。
* t+ u* N4 Z. B' A
OK,感谢解答
使用道具 举报 回复
发表于 2019-7-18 18:12:15 | 显示全部楼层
在RTT_IOT对应的正点原子的开发板上,其LCD接的是SPI3口。使用RTT官方的 “stm32l475-atk-pandora” bsp配合最新的RTT框架,无法利用SPI3对应的DMA进行数据的发送。而且我发现menuconfig中有SPI1和SPI2选项但是没有SPI3选项(我后来自己加上的),加上SPI3并且加上了BSP_SPI3_TX_USING_DMA后程序能够正常进行DMA的初始化,但是会死在
  1. while (HAL_SPI_GetState(spi_handle) != HAL_SPI_STATE_READY);
复制代码
这上面,经检查引脚以及中断都配置了。DMA使用的是手册上对应的DMA2Channel2。将menuconfig中的Enable SPI3 TX DMA关闭后LCD可以正常使用。请问一下是不是SPI3的DMA还不完善呢?还是我自己有地方操作不对?
使用道具 举报 回复
发表于 2019-8-16 08:37:58 | 显示全部楼层
CrisJay 发表于 2019-7-18 18:12
! }9 w8 X/ H; \* M在RTT_IOT对应的正点原子的开发板上,其LCD接的是SPI3口。使用RTT官方的 “stm32l475-atk-pandora” bsp配 ...
% u4 n) T& O8 T4 `! \+ a1 i
这个问题你解决了吗,朋友
使用道具 举报 回复
发表于 2019-8-16 09:22:36 | 显示全部楼层
楼主能把你的代码看下吗
使用道具 举报 回复
发表于 2019-10-3 09:49:56 | 显示全部楼层
CrisJay 发表于 2019-7-18 18:12; K# b6 s$ d8 w$ a$ C2 t$ q$ N# ~) d
在RTT_IOT对应的正点原子的开发板上,其LCD接的是SPI3口。使用RTT官方的 “stm32l475-atk-pandora” bsp配 ...

( U' q5 h( C) o我感觉LCD不能用DMA方式进行SPI发送吧?你看看控制LCD除了正常的SPI口,是否还有D/C接口?若有,需在发送SPI数据同时进行D/C的控制,DMA方式没有对D/C的控制,那就肯定不行了。
使用道具 举报 回复
发表于 2019-10-3 11:05:10 | 显示全部楼层
hw75320 发表于 2019-10-3 09:49
3 A# _$ a0 Z7 N' F- r* P8 H我感觉LCD不能用DMA方式进行SPI发送吧?你看看控制LCD除了正常的SPI口,是否还有D/C接口?若有,需在发送 ...
( ?, y1 z9 \  @: s/ O& l
D/C其实可以手动控制的,或者在DMA驱动中加入D/C控制的流程。不过这个是很早之前做的了,目前没有再进行研究,以后可能会再去研究研究
使用道具 举报 回复
发表于 2019-10-3 11:33:56 | 显示全部楼层
CrisJay 发表于 2019-10-3 11:050 }7 j0 v1 D- ^3 O3 J( V
D/C其实可以手动控制的,或者在DMA驱动中加入D/C控制的流程。不过这个是很早之前做的了,目前没有再进行 ...
8 D* K6 i: Z1 i+ @2 H( o
嗯,除非在DMA驱动中加入对D/C的控制,与SPI口数据做到时序上同步。顺便咨询一下,你有DMA发送的源码不?若有,能否提供一份,学习学习。谢谢!
使用道具 举报 回复
发表于 2019-10-3 11:38:34 | 显示全部楼层
hw75320 发表于 2019-10-3 11:33
9 S* z) E- ]# a" I2 {6 B嗯,除非在DMA驱动中加入对D/C的控制,与SPI口数据做到时序上同步。顺便咨询一下,你有DMA发送的源码不? ...

$ [3 H& b) {, [1 H7 A" i4 k1 R这是很久以前的了,是感兴趣做的,源码已经找不到了,以后再做可以交流交流
使用道具 举报 回复
发表于 2019-10-3 11:41:05 | 显示全部楼层
CrisJay 发表于 2019-10-3 11:387 n6 d4 `- Z& y9 u) Y) u1 q2 i
这是很久以前的了,是感兴趣做的,源码已经找不到了,以后再做可以交流交流 ...
- _9 W5 ^: U( m; W& f
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

快速回复 返回顶部 返回列表