硬汉嵌入式论坛

 找回密码
 立即注册
查看: 908|回复: 3
收起左侧

[DMA] SPI用DMA Normal模式发送有时间间隔

[复制链接]

10

主题

5

回帖

35

积分

新手上路

积分
35
发表于 2024-7-23 18:05:51 | 显示全部楼层 |阅读模式
stm32f103

配置spi dma normal模式
是这样用的:
main()
{
    ...
    HAL_SPI_TransmitReceive_DMA(&hspi1,spi1_tx,spi1_rx,20);//先启动一次DMA传输
    while
   {.....}
}

void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
{
        if (hspi->Instance == SPI1)
        {
                __HAL_DMA_CLEAR_FLAG(&hdma_spi1_rx, DMA_FLAG_TC2); //清除传输完成标志
               
                HAL_SPI_TransmitReceive_DMA(&hspi1,spi1_tx,spi1_rx,20);   //DMA发送完之后再继续调用DMA进行传输
                HAL_GPIO_TogglePin(GPIOC,LED_Pin);       
        }
}



我的疑问是:连续两次DMA调用两帧之间有大概15us的间隔。是哪个环节导致了这个时间间隔

如果用SPI DMA circuit模式会连续发,帧之间无间隔
RigolDS0.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2024-7-24 07:35:55 | 显示全部楼层
这个应该是正常的第1次传输完毕和第2次开启传输之间的间隔。你想办法缩短下试试。
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2024-7-27 10:32:44 | 显示全部楼层
有时间间隔有问题??
回复

使用道具 举报

3

主题

83

回帖

92

积分

初级会员

积分
92
发表于 2024-7-27 11:07:58 | 显示全部楼层
void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)这个回调不是DMA的回调吧,想快应该在DMA的中断回调操作
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-29 03:05 , Processed in 0.282664 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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