请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32定时器触发DMA数据传输失败的典型案例

[复制链接]
yumeii 发布时间:2020-1-7 14:05
有人使用STM32的定时器事件触发DMA,让其将内存数据传输到通信外设的数据寄存器进行发送,发现DMA根本就不动作。
" a, ^) f, Q( D6 j2 ?4 M0 f% Q& m9 ~  p  z# h
  d8 B  o. Q/ I  C* V4 \" w9 S# p
比方以基于STM32F411的芯片为例,通过TIM3更新事件触发DMA请求,DMA从内存将数据送到SPI1的数据寄存器,从而完成数据发送。
/ i7 A+ U4 @5 Y0 f* f3 {
2 ?, Y) ]: q: B5 Z: n

, y7 ]' D' D/ g- [他采用CubeMx进行配置。基本配置如下:[文中图片可以放大观看]
* V( b) ~* k6 I8 b9 L* m. w& d9 k
# c) \! y* {9 C& g- _
( y) Z( I: b& \% ]& o
1.png
7 q" a$ q# V2 v/ t$ q! m/ h* K+ d$ G4 Y5 L% D3 Z

: C  w) O, G% N/ Q  z  t4 B8 D' h 2.png 9 m& |  V: F* u4 ~. H* L: t( R

' O2 D* A1 G! L$ p" {
, q* `, m! x% k
相关用户实现代码如下:4 I1 p  E/ G2 I6 k* P

6 P% @7 N9 M1 @# W6 C2 Y
) e4 j! t+ V2 ?: A, q
3.png " d' G. j! B) Y- H% W4 a5 l+ Q: i

$ j. h, g* ?. @

+ C6 ^& `- @" j' s2 i0 w1 }$ U从配置过程和代码实现来看,似乎都没有问题。那DMA怎么就是不动作呢?
: R; H. _3 V( g$ D- J5 n
# x8 z" t; G- T2 B) }1 M! b
& P. f; v% Y, d' U4 p- f$ F# G
问题出在我们使用上面的函数做DMA传输所关联源端和目标端时,出现了想当然的情况。
: N. Q  i/ f6 O  q2 z' i, c! G$ K- H8 a% L8 c( i/ _

. ~/ L' ?: Z% t1 R; X0 U我们利用TIMER事件来作为DMA请求源时,而作为数据传输的源端或目的端,都是我们用户指定的。这时就一定要注意源端和目标端是当前DMA流所支持的。否则就会出现乱点鸳鸯谱,DMA根本可能就跑不起来。就像你叫了某快递公司,它的服务范围是相对固定的,并非你想去哪里她就能服务到哪里。
6 X( L, g+ P  {& M: ^7 O) @' ~- x4 {/ b5 J" t' E
, N: B; D, x7 W9 F/ f" F. }: r
比方上面的例子,如果改成SPI2就没问题。为什么刚才SPI1不行呢,因为DMA1根本访问不到SPI1,我们不妨看看基于STM32F411芯片的内部功能及总线框图就很清晰了。% K/ m* b+ f4 u  v( x

- @" a" `, {4 x8 S% D1 T
* C8 K, C, z/ I: Q
4.png 9 e) y  a4 r3 k9 O1 S) w7 G

8 Z9 o& G8 Q; `2 U
, o) Z* S9 o3 C0 d$ S9 ~
从上图不难看出DMA1是访问不到SPI1或SPI4这些外设的,或者说DMA1就没法访问挂在APB2总线上的外设,只能访问APB1总线上的外设。7 D- |' I9 j$ }3 b( V0 H% h
7 [- o% ~% z3 Z

; T0 }2 c# D4 g' |小结:一般来讲,基于某触发事件,对应的DMA数据流就可以确定下来了,那该DMA数据流的传输范围往往也随之确定。我们在为该DMA数据流指定源端和目标端时一定要符合其传输范围,否则会出现传输无法完成的情形。换言之,我们在做DMA传输时,为了实现DMA的有效传输,往往需要结合源端和目的端来调整或选择合适的DMA数据流。
. F+ ]& w3 g+ ]
9 S6 n' C" O& k; g& E0 A; f5 A
收藏 评论0 发布时间:2020-1-7 14:05

举报

0个回答

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版