OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3131|回复: 1

SPI的DMA HAL库为什么要求TX RX都开启?

[复制链接]

17

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2020-1-15
在线时间
39 小时
发表于 2020-6-2 09:25:47 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 叶孤城999 于 2020-6-2 09:29 编辑

我看手册上明明说了(文末有截图),可以只用RX或者TX的DMA,但是这个库函数为什么用RX非要开启TX  DMA呢?
从这个函数的名字看,就只有收的功能,为什么非要判断一下TX?
HAL_SPI_Receive_DMA
因为我想做成普通发,DMA收,但是如果用HAL库就必须被迫开启TX DMA,开了也没得用处。
看代码意思是,双线模式,主机模式,就必须有TX DMA,但是手册明明说了没用TX DMA就可以不开啊。
双线模式,我普通发,DMA收,这样也是双线模式啊,怎么就非要判断TX DMA存在

求大佬讲讲这里是什么意思?


HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size)
  HAL_StatusTypeDef errorcode = HAL_OK;
  /* Check rx dma handle */
  assert_param(IS_SPI_DMA_HANDLE(hspi->hdmarx));
  if ((hspi->Init.Direction == SPI_DIRECTION_2LINES) && (hspi->Init.Mode == SPI_MODE_MASTER))
  {
    hspi->State = HAL_SPI_STATE_BUSY_RX;
    /* Check tx dma handle */
    assert_param(IS_SPI_DMA_HANDLE(hspi->hdmatx));
/* Call transmit-receive function to send Dummy data on Tx line and generate clock on CLK line */
    return HAL_SPI_TransmitReceive_DMA(hspi, pData, pData, Size);

Screenshot from 2020-06-02 09-24-06.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2020-6-5 01:51:36 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-29 00:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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