请选择 进入手机版 | 继续访问电脑版
搜索
查看: 906|回复: 3

[求助] STM32L476G-DISCOVERY中DMA的设置

[复制链接]

该用户从未签到

5

主题

16

帖子

0

蝴蝶豆

中级会员

最后登录
2018-9-20
发表于 2018-8-25 21:07:43 | 显示全部楼层 |阅读模式
之前的板子可以用DMA_InitTypeDef 来设置(初始化)

但是STM32L476G-DISCOVERY的设置中没有部分选项(上图中对勾选项是有的)

关于外设地址、储存地址、buffer size 怎么设置呢?
微信图片_20180825205753.jpg
回复

使用道具 举报

该用户从未签到

5

主题

16

帖子

0

蝴蝶豆

中级会员

最后登录
2018-9-20
 楼主| 发表于 2018-8-25 21:11:21 | 显示全部楼层
下面是我在 stm32l4xx _hal_dma.h中找到的定义,并没有部分项的设置
typedef struct
{
  uint32_t Request;                   /*!< Specifies the request selected for the specified channel.
                                           This parameter can be a value of @ref DMA_request */

  uint32_t Direction;                 /*!< Specifies if the data will be transferred from memory to peripheral,
                                           from memory to memory or from peripheral to memory.
                                           This parameter can be a value of @ref DMA_Data_transfer_direction */

  uint32_t PeriphInc;                 /*!< Specifies whether the Peripheral address register should be incremented or not.
                                           This parameter can be a value of @ref DMA_Peripheral_incremented_mode */

  uint32_t MemInc;                    /*!< Specifies whether the memory address register should be incremented or not.
                                           This parameter can be a value of @ref DMA_Memory_incremented_mode */

  uint32_t PeriphDataAlignment;       /*!< Specifies the Peripheral data width.
                                           This parameter can be a value of @ref DMA_Peripheral_data_size */

  uint32_t MemDataAlignment;          /*!< Specifies the Memory data width.
                                           This parameter can be a value of @ref DMA_Memory_data_size */

  uint32_t Mode;                      /*!< Specifies the operation mode of the DMAy Channelx.
                                           This parameter can be a value of @ref DMA_mode
                                           @note The circular buffer mode cannot be used if the memory-to-memory
                                                 data transfer is configured on the selected Channel */

  uint32_t Priority;                  /*!< Specifies the software priority for the DMAy Channelx.
                                           This parameter can be a value of @ref DMA_Priority_level */
} DMA_InitTypeDef;
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

16

帖子

0

蝴蝶豆

中级会员

最后登录
2018-9-20
 楼主| 发表于 2018-8-25 21:14:43 | 显示全部楼层
DMA_Channel_TypeDef 只有register的设置
typedef struct
{
  __IO uint32_t CCR;         /*!< DMA channel x configuration register        */
  __IO uint32_t CNDTR;       /*!< DMA channel x number of data register       */
  __IO uint32_t CPAR;        /*!< DMA channel x peripheral address register   */
  __IO uint32_t CMAR;        /*!< DMA channel x memory address register       */
} DMA_Channel_TypeDef;
回复 支持 反对

使用道具 举报

该用户从未签到

91

主题

4734

帖子

4

蝴蝶豆

论坛元老

最后登录
2021-1-20
发表于 2018-8-25 22:59:40 | 显示全部楼层
参考看看库函数中
DMAy_Channelx->CNDTR = DMA_InitStruct->DMA_BufferSize;
而CNDTR即数据传输数量 (Number of data to transfer)
数据传输数量为0至65535。这个寄存器只能在通道不工作(DMA_CCRx的EN=0)时写入。通
道开启后该寄存器变为只读,指示剩余的待传输字节数目。寄存器内容在每次DMA传输后递
减。
数据传输结束后,寄存器的内容或者变为0;或者当该通道配置为自动重加载模式时,寄存
器的内容将被自动重新加载为之前配置时的数值。
当寄存器的内容为0时,无论通道是否开启,都不会发生任何数据传输。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2021-1-21 19:32 , Processed in 0.078072 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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