打印
[AT32F403/403A]

spi dma传输传输完成标志位提前置位

[复制链接]
1289|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
     我在使用AT32F403Aspi过程中,spi dma传输传输完成标志位提前置位,比如传输六个字节在第四个字节传输后就置上传输完成标志位
dma模式设置为单次,发送流程为拉低片选->使能spi dma->=while等待传输完成标志->片选拉高->关闭spi dma
下图中黄色为片选信号,蓝色为时钟信号
C:\Users\GLR\Desktop\临时文件\AT32问题\6on6sd95jielxw0puwcyzk6u1_0.jpg

使用特权

评论回复
沙发
18783990907|  楼主 | 2023-2-3 12:00 | 只看该作者
配置

E27AED1C-E13B-47e0-969F-FBD9FFF818D4.png (34.71 KB )

发送传输流程

发送传输流程

3587CCF7-B257-4689-9226-9BFC4087D4BF.png (120.09 KB )

dma及spi配置

dma及spi配置

6on6sd95jielxw0puwcyzk6u1_0.jpg (490.45 KB )

现象(黄色片选,蓝色时钟)

现象(黄色片选,蓝色时钟)

使用特权

评论回复
板凳
aozima| | 2023-2-3 14:00 | 只看该作者
本帖最后由 aozima 于 2023-2-3 14:14 编辑

数据搬运完,DMA就结束了。

此时最后一部分数据还在FIFO(如果有)和移位寄存器里面,还要会才真正传输完成。波特率越低越明显。
需要确认SPI的状态才保险,可以打开SPI的完成中断(如果有),或干脆再轮询等一会。

使用特权

评论回复
地板
18783990907|  楼主 | 2023-2-3 16:55 | 只看该作者
aozima 发表于 2023-2-3 14:00
数据搬运完,DMA就结束了。

此时最后一部分数据还在FIFO(如果有)和移位寄存器里面,还要会才真正传输完 ...

发送完成标志位在开启DMA后是失效的,而且我也不能够延时,必须保证高性能,然后我这个片子spi最高只能到15M的速率。我现在启用硬件CS 但是cs引脚一直为低电平没有变化

使用特权

评论回复
评论
20062516 2023-2-4 10:38 回复TA
还要等个状态就是spi传完的状态才行,楼上大神已经说的很清楚了,DMA的活已经干完了(从一个内存搬到另一个内存(FIFO)),置位是对的,FIFO的数据再完spi的传输状态才会被置位 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝