找回密码
 立即注册
查看: 584|回复: 1

关于SPI_DMA收发的一点小疑问

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2025-05-28 09:08:49

34

主题

1094

回帖

2450

积分

荣誉版主

积分
2450
发表于 2024-1-25 11:21:04 | 显示全部楼层 |阅读模式
本帖最后由 tzz1983 于 2024-1-25 14:43 编辑

如下面的代码, 发送和接收设置为同一个地址,实现数据交换
个人认为从理论上来说是可以的,因为DMA先从buf读出数据传给SPDAT,发送完(1字节或4字节)后再把SPDAT写回buf
实测也是可以的,就是不知道这样做可不可靠,大家来讨论讨论

u8 SPI_DMA_shift(u8 *buf, u16 len)
{
    DMA_SPI_TXAH = (u16)buf >> 8;        //SPI发送数据存储地址
    DMA_SPI_TXAL = (u16)buf;
    DMA_SPI_RXAH = (u16)buf >> 8;        //SPI接收数据存储地址
    DMA_SPI_RXAL = (u16)buf;   
    len--;
    DMA_SPI_AMTH = len>>8;  //设置传输总字节数
    DMA_SPI_AMT  = len;         //设置传输总字节数

    DmaFlag = 1;                  //设置查询标志,中断里清零
    DMA_SPI_CR |= 0x40;     //开始SPI_DMA主模式操作

    while(DmaFlag);

    return DmaSpiSta;    //在中断里 DmaSpiSta=DMA_SPI_STA;  DmaSpiSta 用于反馈给应用本次传输是否有异常
}


回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5499

积分

荣誉版主

积分
5499
发表于 2024-1-25 13:24:47 | 显示全部楼层
这种操作完全可行
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-18 08:01 , Processed in 2.792210 second(s), 54 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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