1. 程式人生 > >stm32DMA通道 ADC通道

stm32DMA通道 ADC通道

lds 為什麽 stm32 內存數據 模擬 優先 buffers add pac

DMA:

1.使用DAC的時候。將轉化後得到的模擬信號通過IO口輸出的時候。為什麽還將IO口配置能輸入模式

技術分享

PS:stm32手冊上定義PA4和PA5分別和DAC1通道和DAC2通道相連 ;

DMA1和DMA2使用按個通道手冊中也是有規定的:

技術分享

波形數據從內存帶DAC是怎麽DMA是怎麽傳輸的?:

/* 配置DMA2 */
DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12RD_Address;

//外設數據地址
DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&DualSine12bit ;//內存數據地址 DualSine12bit
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;//傳輸數據方向內存至外設
DMA_InitStructure.DMA_BufferSize = 32;//緩存大小為32字節
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//外設數據地址固定
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
//內存數據地址自增
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; //外設數據以字為單位
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;//內存數據以字為單位
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;//循環模式
DMA_InitStructure.DMA_Priority = DMA_Priority_High;//高DMA通道優先級
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
//非內存至內存模式
DMA_Init(DMA2_Channel4, &DMA_InitStructure);

當傳輸的我們數據大小為32位 的時候,發送給DAC轉化,


DMA通道選擇:

外設請求使用DMA傳輸的時候。關於DMA通道的選擇其stm32手冊上都有規定的。須要我們相應手冊去查詢


技術分享技術分享



技術分享












ADC通道:

函數ADC_RegularChannelConfig( )

如果我們使用了PC0

ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_55Cycles5)

以配置通道的採樣周期。該函數有4個參數,第一個參數指使用哪個ADC,我們選ADC1

二個參數。本次採樣使用的通道,我們選擇ADC_Channel_10。第三個參數,採樣順序。

實驗我們僅僅有一個採樣,直接給它賦值為:1.

第四個參數,配置採樣周期。

這裏PC0管腳是ADADC_Channel_10輸入通道。這個通道並非任意的選擇的。在ST

提供的手冊《【英文】STM32F107VC數據手冊V6.pdf》中。有相應的說明:

技術分享

譯註:(詳細見stm32手冊)

表中的引腳名稱標註中出現的ADC12_INx(x表示4~914~15之間的整數),表示這個引腳能夠是

ADC1_INxADC2_INx

比如:ADC12_IN9表示這個引腳能夠配置為ADC1_IN9,也能夠配置為

ADC2_IN9

相同,表中的引腳名稱標註中出現的ADC123_INx(x表示0~310~13之間的整數)。表示這個引腳可

以是ADC1_INxADC2_INxADC3_INx










串口:

//P:串口接收從io口中傳來的數據

USART_InitStructure.USART_WordLength = USART_WordLength_8b; //P:配置串口傳輸的字長,一個字符一個字符的接受








stm32DMA通道 ADC通道