S32K344 DMA传输ADC采集电压数据
时间: 2023-06-12 08:08:03 浏览: 92
S32K344是NXP的一款MCU,支持DMA传输ADC采集的电压数据。以下是一个基本的代码示例:
```c
#include "fsl_common.h"
#include "fsl_adc.h"
#include "fsl_dma.h"
#define ADC_CHANNEL 0U
#define ADC_SAMPLE_COUNT 16U
#define ADC_VOLTAGE_REFERENCE 3300U
#define DMA DMA0
#define ADC_CHANNEL_DMA_REQUEST ADC0_CHANNEL0_DMA0_REQUEST_SIGNAL
static uint16_t s_adcResult[ADC_SAMPLE_COUNT];
static volatile bool s_dmaTransferDone = false;
void DMA_IRQHandler(void)
{
DMA_ClearChannelStatusFlags(DMA, 0U, kDMA_TransactionsBCFlag);
s_dmaTransferDone = true;
}
int main(void)
{
adc_config_t adcConfig;
adc_channel_config_t adcChannelConfig;
dma_transfer_config_t dmaTransferConfig;
BOARD_InitPins();
BOARD_BootClockRUN();
BOARD_InitDebugConsole();
ADC_GetDefaultConfig(&adcConfig);
ADC_Init(ADC0, &adcConfig);
ADC_EnableHardwareTrigger(ADC0, false);
adcChannelConfig.channelNumber = ADC_CHANNEL;
adcChannelConfig.enableInterruptOnConversionCompleted = false;
ADC_SetChannelConfig(ADC0, 0U, &adcChannelConfig);
DMA_Init(DMA);
DMA_CreateHandle(&handle, DMA, 0U);
DMA_SetCallback(&handle, DMA_IRQHandler);
DMA_EnableInterrupts(DMA, 0U);
dmaTransferConfig.srcAddr = (uint32_t)&ADC0->R[0];
dmaTransferConfig.destAddr = (uint32_t)s_adcResult;
dmaTransferConfig.srcTransferSize = kDMA_TransferSize2Bytes;
dmaTransferConfig.destTransferSize = kDMA_TransferSize2Bytes;
dmaTransferConfig.srcOffset = 2U;
dmaTransferConfig.destOffset = 2U;
dmaTransferConfig.transferBytes = ADC_SAMPLE_COUNT * sizeof(uint16_t);
dmaTransferConfig.triggerType = kDMA_TransferTriggeredByPeripheral;
dmaTransferConfig.enableDestIncrement = true;
dmaTransferConfig.enableSrcIncrement = false;
DMA_SubmitTransfer(&handle, &dmaTransferConfig);
ADC_DoSoftwareTriggerConvSeqA(ADC0);
while (!s_dmaTransferDone)
{
}
for (uint32_t i = 0U; i < ADC_SAMPLE_COUNT; i++)
{
uint32_t voltage = s_adcResult[i] * ADC_VOLTAGE_REFERENCE / 4096U;
printf("ADC sample %d: %d mV\r\n", i, voltage);
}
while (1)
{
}
}
```
这个例子使用DMA来传输ADC采集的电压数据,采集的样本数为16。在初始化DMA传输之前,需要先初始化ADC,并且设置好所需采集的通道和采集模式。在DMA传输完成之后,可以通过遍历采集结果数组,将其转化为电压值并打印输出。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)