[AT32F403/403A] spi dma传输传输完成标志位提前置位

[复制链接]
1565|4
 楼主| 18783990907 发表于 2023-2-3 11:58 | 显示全部楼层 |阅读模式
     我在使用AT32F403Aspi过程中,spi dma传输传输完成标志位提前置位,比如传输六个字节在第四个字节传输后就置上传输完成标志位
dma模式设置为单次,发送流程为拉低片选->使能spi dma->=while等待传输完成标志->片选拉高->关闭spi dma
下图中黄色为片选信号,蓝色为时钟信号
C:\Users\GLR\Desktop\临时文件\AT32问题\6on6sd95jielxw0puwcyzk6u1_0.jpg

 楼主| 18783990907 发表于 2023-2-3 12:00 | 显示全部楼层
配置

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

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

dma及spi配置

dma及spi配置

发送传输流程

发送传输流程
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引脚一直为低电平没有变化

评论

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

本版积分规则

1

主题

3

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部