硬汉嵌入式论坛

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

[TIMER] 求问timer3触发SPI DMA方式发送数据的方法

[复制链接]

1

主题

2

回帖

5

积分

新手上路

积分
5
发表于 2023-2-23 22:04:18 | 显示全部楼层 |阅读模式
请教一下,用Timer触发SPI1 DMA发送的问题,现在用LPTIM1可以触发SPI1 DMA发送,因为还需要额外控制同步信号输出,所以LPTIM1的PWM中断和SPI1 DMA发送完成中断都是在同一时刻产生的,没法作为同步信号,所以想改用timer3(或者其他timer都行),另外是不是只有timer12才可以触发SPI DMA发送,如果是timer12有很多种中断方式,怎么绑定其中一种和TROG信号,谢谢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106731
QQ
发表于 2023-2-23 22:48:13 | 显示全部楼层
1、DMAMUX的同步触发只有下面几种定时器

image.png

2、就用TIM12就行,还可以CH通道做个同步输出

image.png
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2023-2-24 09:18:18 | 显示全部楼层
eric2013 发表于 2023-2-23 22:48
1、DMAMUX的同步触发只有下面几种定时器

谢谢您,我把LPTIM1改成Timer12了,想的是timer12溢出作为SPI DMA传输的触发源,现在timer12OC比较中断里面加入同步信号,测试可以进入timer12 OC 中断,但是DAM传输完成中断进不去了,请问生成的代码这里是不是还要额外配置什么?
我启动是这样的:
HAL_TIM_PWM_Start_IT(&htim12,TIM_CHANNEL_1);
        HAL_DMAEx_MultiBufferStart_IT(&hdma_spi1_tx, (uint32_t)SPI1TxBuf, (uint32_t)&hspi1.Instance->TXDR,(uint32_t)SPI1TxBuf, 3);
        SET_BIT(hspi1.Instance->CFG1, SPI_CFG1_TXDMAEN);
  __HAL_SPI_ENABLE(&hspi1);
  SET_BIT(hspi1.Instance->CR1, SPI_CR1_CSTART);
这里只修改了LPTIM1改成了tim12,其他没改动,麻烦您指点一下,谢谢
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2023-2-24 11:55:20 | 显示全部楼层
本帖最后由 maomao190 于 2023-2-24 14:46 编辑
SPI_DMA.png timer12.png
C:\Users\miqiang\Desktop\SPI_DMA.png
C:\Users\miqiang\Desktop\timer12.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106731
QQ
发表于 2023-2-24 14:26:12 | 显示全部楼层
maomao190 发表于 2023-2-24 09:18
谢谢您,我把LPTIM1改成Timer12了,想的是timer12溢出作为SPI DMA传输的触发源,现在timer12OC比较中断里 ...

必须要使用TIM12 TRGO触发,这个触发时给SPI DMA传输控制传输速度用的。然后同步配置个CH通道PWM输出即可。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 23:23 , Processed in 0.254582 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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