硬汉嵌入式论坛

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

[硬件三角函数Cordic] H730硬件三角函数使用DMA方式,推荐开启突发传输,性能提升一倍多

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2021-3-13 09:49:43 | 显示全部楼层 |阅读模式


备份代码如下:

  1. void HAL_CORDIC_MspInit(CORDIC_HandleTypeDef* hcordic)
  2. {
  3.   if(hcordic->Instance==CORDIC)
  4.   {
  5.     /* Peripheral clock enable */
  6.     __HAL_RCC_CORDIC_CLK_ENABLE();
  7.   
  8.     /* CORDIC DMA Init */
  9.     /* CORDIC_WRITE Init */
  10.     hdma_cordic_write.Instance = DMA1_Stream0;
  11.     hdma_cordic_write.Init.Request = DMA_REQUEST_CORDIC_WRITE;
  12.     hdma_cordic_write.Init.Direction = DMA_MEMORY_TO_PERIPH;
  13.     hdma_cordic_write.Init.PeriphInc = DMA_PINC_DISABLE;
  14.     hdma_cordic_write.Init.MemInc = DMA_MINC_ENABLE;
  15.     hdma_cordic_write.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
  16.     hdma_cordic_write.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
  17.     hdma_cordic_write.Init.Mode = DMA_NORMAL;
  18.     hdma_cordic_write.Init.Priority = DMA_PRIORITY_LOW;
  19.     hdma_cordic_write.Init.FIFOMode            = DMA_FIFOMODE_ENABLE;
  20.     hdma_cordic_write.Init.FIFOThreshold       = DMA_FIFO_THRESHOLD_FULL;
  21.     hdma_cordic_write.Init.MemBurst            = DMA_MBURST_INC4;
  22.     hdma_cordic_write.Init.PeriphBurst         = DMA_PBURST_SINGLE;   
  23.     if (HAL_DMA_Init(&hdma_cordic_write) != HAL_OK)
  24.     {

  25.     }

  26.     __HAL_LINKDMA(hcordic,hdmaIn,hdma_cordic_write);

  27.     /* CORDIC_READ Init */
  28.     hdma_cordic_read.Instance = DMA1_Stream1;
  29.     hdma_cordic_read.Init.Request = DMA_REQUEST_CORDIC_READ;
  30.     hdma_cordic_read.Init.Direction = DMA_PERIPH_TO_MEMORY;
  31.     hdma_cordic_read.Init.PeriphInc = DMA_PINC_DISABLE;
  32.     hdma_cordic_read.Init.MemInc = DMA_MINC_ENABLE;
  33.     hdma_cordic_read.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
  34.     hdma_cordic_read.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
  35.     hdma_cordic_read.Init.Mode = DMA_NORMAL;
  36.     hdma_cordic_read.Init.Priority = DMA_PRIORITY_LOW;
  37.     hdma_cordic_read.Init.FIFOMode            = DMA_FIFOMODE_ENABLE;
  38.     hdma_cordic_read.Init.FIFOThreshold       = DMA_FIFO_THRESHOLD_FULL;
  39.     hdma_cordic_read.Init.MemBurst            = DMA_MBURST_INC4;
  40.     hdma_cordic_read.Init.PeriphBurst         = DMA_PBURST_SINGLE;  
  41.     if (HAL_DMA_Init(&hdma_cordic_read) != HAL_OK)
  42.     {

  43.     }

  44.     __HAL_LINKDMA(hcordic,hdmaOut,hdma_cordic_read);

  45.   }

  46. }
复制代码


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-9 17:10 , Processed in 0.231575 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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