单片机/MCU论坛
直播中

王鹏

7年用户 1216经验值
私信 关注
[问答]

如何才能将adc转换后的数据发送到代码中指定的任何数据类型为uint8的变量中?

我被卡住了,如何才能将 adc 转换后的数据发送到代码中指定的任何数据类型为 uint8 的变量中?  
我正在使用以下 dma 配置,但我没有在 uint8 value2 变量中接收到数据。 目的是通过 DMA 接收 value2 中的数据,然后进行处理并通过 DMA 将其发送到 pwm,因此基本上我需要知道如何通过 DMA 获取任何变量中的数据并将数据从任何变量发送到外设。
请指教。
为了将 ADC(8 位)转换为变量,我将 delsig ADC 的 EOC 连接到了 DMA 的 drq,而没有连接 DMA 的 nrq 引脚。  
谢谢
以下是我使用的定义和配置

#include
#include
#include
#include
#include
#include
#include
#定义 DMA_BYTES_PER_BURST 1
#定义 DMA_REQUEST_PER_BURST 1
#定义 DMA_SRC_BASE ( TLE9243QK_BASE_BOARD )
#定义 DMA_DST_BASE ( TLE9243QK_BASE_BOARD )
void DMA_Config(){
/* DMA 的变量声明 */
/* 将这些变量声明移到函数的顶部 */
uint8 DMA_Chan;
uint8 DMA_TD[1];
/* DMA 的 DMA 配置 */
DMA_Chan = DMA_DmaInitialize(DMA_BYTES_PER_BURST,DMA_REQUEST_PER_BURST,HI16(DMA_SRC_BASE),HI16(DMA_DST_BASE));
DMA_TD[0] = CyDmaTdAllocate();

CyDmaTdSetConfiguration(DMA_TD[0], 1, DMA_TD[0], DMA__TD_TERMOUT_EN );

CyDmaTdSetAddress(DMA_TD[0], LO16((uint8)ADC_DEC_SAMP_PTR), LO16((uint8) value2));
CyDmaChSetInitialTd(DMA_Chan, DMA_TD[0]);
CyDmaChEnable(DMA_Chan, 1);
}

回帖(1)

夏日余晖

2024-3-4 10:54:13
您是否尝试过 ADC_DMA_VDAC 示例项目。


这基本上就是你所要求的功能。  我能看到的唯一区别是,DMA 将 ADC 数据加载到 VDAC 中,而不是 SRAM 变量中。
运行此示例,然后对其进行修改,将 ADC 值存储到 SRAM 中。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分