嵌入式系統(tǒng)設(shè)計(jì)STM32第7講課件_第1頁
嵌入式系統(tǒng)設(shè)計(jì)STM32第7講課件_第2頁
嵌入式系統(tǒng)設(shè)計(jì)STM32第7講課件_第3頁
嵌入式系統(tǒng)設(shè)計(jì)STM32第7講課件_第4頁
嵌入式系統(tǒng)設(shè)計(jì)STM32第7講課件_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第7講 STM32的AD轉(zhuǎn)換器主要內(nèi)容7.1 ADC的硬件結(jié)構(gòu)及特征7.2 工作模式7.3 ADC中斷7.4 ADC寄存器7.5 ADC庫函數(shù)7.6 ADC程序設(shè)計(jì)7.1 ADC的硬件結(jié)構(gòu)及功能 STM32F103有2個(gè)12位ADC(ADC1和ADC2),是逐次逼近型模擬/數(shù)字轉(zhuǎn)換器。ADC的輸入時(shí)鐘不得超過14MHz,它是由PCLK2經(jīng)分頻產(chǎn)生 它有多達(dá)18個(gè)通道,可測(cè)量16個(gè)外部和2個(gè)內(nèi)部信號(hào)源。 各通道的A/D轉(zhuǎn)換可以單次、連續(xù)、掃描或間斷模式執(zhí)行。 ADC的結(jié)果可以左對(duì)齊或右對(duì)齊方式存儲(chǔ)在16位數(shù)據(jù)寄存器中。ADCx的輸入通道ADC123_IN0-PA0ADC123_IN1-PA1AD

2、C123_IN2-PA2ADC123_IN3-PA3ADC12_IN4-PA4ADC12_IN5-PA5ADC12_IN6-PA6ADC12_IN7-PA7ADC12_IN8-PB0ADC12_IN9-PB1ADC123_IN10-PC0ADC123_IN11-PC1ADC123_IN12-PC2ADC123_IN13-PC3ADC12_IN14-PC4ADC12_IN15-PC5 ADC3_IN4-PF6ADC3_IN5-PF7ADC3_IN6-PF8ADC3_IN7-PF9ADC3_IN8-PF10 ADC主要特征12位分辨率轉(zhuǎn)換結(jié)束、注入轉(zhuǎn)換結(jié)束和發(fā)生模擬看門狗事件時(shí)產(chǎn)生中斷 單次和連續(xù)

3、轉(zhuǎn)換模式 從通道0到通道n的自動(dòng)掃描模式 自校準(zhǔn) 帶內(nèi)嵌數(shù)據(jù)一致性的數(shù)據(jù)對(duì)齊采樣間隔可以按通道分別編程 規(guī)則轉(zhuǎn)換和注入轉(zhuǎn)換均有外部觸發(fā)選項(xiàng) 間斷模式 雙重模式(帶2個(gè)或以上ADC的器件) ADC轉(zhuǎn)換時(shí)間: STM32F103xx增強(qiáng)型產(chǎn)品:時(shí)鐘為56MHz時(shí)為1s(時(shí)鐘為72MHz為1.17s) 。ADC供電要求:2.4V到3.6V ADC輸入范圍:VREF- VIN VREF+ 規(guī)則通道轉(zhuǎn)換期間有DMA請(qǐng)求產(chǎn)生。 7.2 工作模式通道選擇單次轉(zhuǎn)換模式連續(xù)轉(zhuǎn)換模式掃描模式間斷模式數(shù)據(jù)對(duì)齊雙ADC模式通道選擇有16個(gè)多路通道??梢园艳D(zhuǎn)換組織成兩組:規(guī)則組和注入組。在任意多個(gè)通道上以任意順序進(jìn)行的

4、一系列轉(zhuǎn)換構(gòu)成成組轉(zhuǎn)換。規(guī)則組由多達(dá)16個(gè)轉(zhuǎn)換組成。規(guī)則通道和它們的轉(zhuǎn)換順序在ADC_SQRx寄存器中選擇。注入組由多達(dá)4個(gè)轉(zhuǎn)換組成。注入通道和它們的轉(zhuǎn)換順序在ADC_JSQR寄存器中選擇。單次轉(zhuǎn)換模式單次轉(zhuǎn)換模式下,ADC只執(zhí)行一次轉(zhuǎn)換。如果一個(gè)規(guī)則通道被轉(zhuǎn)換: 轉(zhuǎn)換數(shù)據(jù)被儲(chǔ)存在16位ADC_DR寄存器中 EOC(轉(zhuǎn)換結(jié)束)標(biāo)志被設(shè)置 如果設(shè)置了EOCIE,則產(chǎn)生中斷。如果一個(gè)注入通道被轉(zhuǎn)換: 轉(zhuǎn)換數(shù)據(jù)被儲(chǔ)存在16位的ADC_DRJ1寄存器中 JEOC(注入轉(zhuǎn)換結(jié)束)標(biāo)志被設(shè)置如果設(shè)置了JEOCIE位,則產(chǎn)生中斷。 然后ADC停止。 連續(xù)轉(zhuǎn)換模式在連續(xù)轉(zhuǎn)換模式中,當(dāng)前面ADC轉(zhuǎn)換一結(jié)束馬上就

5、啟動(dòng)另一次轉(zhuǎn)換。如果一個(gè)規(guī)則通道被轉(zhuǎn)換: 轉(zhuǎn)換數(shù)據(jù)被儲(chǔ)存在16位的ADC_DR寄存器中 EOC(轉(zhuǎn)換結(jié)束)標(biāo)志被設(shè)置 如果設(shè)置了EOCIE,則產(chǎn)生中斷。 如果一個(gè)注入通道被轉(zhuǎn)換: 轉(zhuǎn)換數(shù)據(jù)被儲(chǔ)存在16位的ADC_DRJ1寄存器中 JEOC(注入轉(zhuǎn)換結(jié)束)標(biāo)志被設(shè)置 如果設(shè)置了JEOCIE位,則產(chǎn)生中斷。 掃描模式此模式用來掃描一組模擬通道。 ADC掃描所有被ADC_SQRX寄存器(對(duì)規(guī)則通道)或ADC_JSQR(對(duì)注入通道)選中的所有通道。在每個(gè)組的每個(gè)通道上執(zhí)行單次轉(zhuǎn)換。在每個(gè)轉(zhuǎn)換結(jié)束時(shí),同一組的下一個(gè)通道被自動(dòng)轉(zhuǎn)換。如果設(shè)置了寄存器ADC_CR2中的CONT位,轉(zhuǎn)換不會(huì)在選擇組的最后一個(gè)通

6、道上停止,而是再次從選擇組的第一個(gè)通道繼續(xù)轉(zhuǎn)換。 間斷模式規(guī)則組 :此模式通過設(shè)置ADC_CR1寄存器上的DISCEN位激活。它可以用來執(zhí)行一個(gè)短序列的n次轉(zhuǎn)換(nODR=0 xffffffff; while(1) ADC = Get_Adc(14); /smart開發(fā)板ADC1通道14,PC4 ADC14 = ADC*3300/4095; a1=ADC14/1000;a11=ADC%1000;a2=a11/100;a21=a11%100;a3=a21/10;a31=a21%10;a4=a31; a1=a1+0 x30;a2=a2+0 x30;a3=a3+0 x30;a4=a4+0 x30;主

7、程序(續(xù))Uart1_PutChar(a1); Delay(0 x02fff);Uart1_PutChar(.); Delay(0 x002fff);Uart1_PutChar(a2); Delay(0 x002fff);Uart1_PutChar(a3); Delay(0 x002fff);Uart1_PutChar(a4); Delay(0 x002fff);Uart1_PutChar(0 x0d);Uart1_PutChar(0 x0a);Delay(0 x08fffff);串口發(fā)送數(shù)據(jù)子函數(shù):void Uart1_PutChar(u8 ch) USART_SendData(USART1

8、, (u8) ch); if (USART_GetFlagStatus(USART1, USART_FLAG_TXE) = SET) USART_ClearFlag(USART1,USART_FLAG_TXE); void Uart1_PutString(u8 *buf , u8 len) u8 i=0; for(i=0; ilen; i+) Uart1_PutChar(*buf+); 串口初始化函數(shù):void uart_init( )USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate = 9600

9、;/波特率9600USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_InitStructure.USART_StopBits = USART_StopBits_1;USART_InitStructure.USART_Parity = USART_Parity_No;USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode = USART_Mode_Rx |

10、 USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE); /使能串口ADC1初始化函數(shù):void Adc_Init(void) ADC_InitTypeDef ADC_InitStructure; RCC_ADCCLKConfig(RCC_PCLK2_Div6); ADC_DeInit(ADC1); /? ADC1 初始化ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;ADC_InitStructure.ADC_ScanConvMo

11、de = DISABLE;ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;ADC_InitStructure.ADC_NbrOfChannel = 1;ADC_Init(ADC1, &ADC_InitStructure); ADC_Cmd(ADC1, ENABLE);ADC_ResetCalibrati

12、on(ADC1);while(ADC_GetResetCalibrationStatus(ADC1);ADC_StartCalibration(ADC1);while(ADC_GetCalibrationStatus(ADC1); ADC_SoftwareStartConvCmd(ADC1, ENABLE);讀AD轉(zhuǎn)換結(jié)果子函數(shù):u16 Get_Adc(u8 ch) ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 ); ADC_SoftwareStartConvCmd(ADC1, ENABLE); while(!A

13、DC_GetFlagStatus(ADC1, ADC_FLAG_EOC );return ADC_GetConversionValue(ADC1);T=239.5+12.5=252cyles時(shí)鐘初始化函數(shù):void RCC_Configuration() /配置系統(tǒng)時(shí)鐘(略)/ 配置外設(shè)時(shí)鐘 RCC_APB2PeriphClockCmd (RCC_APB2Periph_USART1| RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD, ENABLE);RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA |RCC_APB2P

14、eriph_ADC1, ENABLE ); /延時(shí)函數(shù):void Delay(vu32 nCount) for(; nCount != 0; nCount-);GPIO初始化函數(shù)void GPIO_Configuration(void) GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStr

15、ucture.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); 習(xí)題71.STM32F103VB內(nèi)置()個(gè)()位的AD轉(zhuǎn)換器。2. AD轉(zhuǎn)換器

16、有()個(gè)模擬量輸入通道,其中外部通道()個(gè),內(nèi)部通道()個(gè)。3. STM32F103VB的AD轉(zhuǎn)換器的轉(zhuǎn)換原理是(),轉(zhuǎn)換時(shí)間最快為()us。4. STM32F103VB的AD轉(zhuǎn)換器的轉(zhuǎn)換時(shí)鐘頻率不能超過()MHz.5. STM32F103VB的AD轉(zhuǎn)換器可將()V-()V電壓轉(zhuǎn)換成()-()的二進(jìn)制數(shù)。6. ADC主要有4種轉(zhuǎn)換模式: ()、()、()和()。7. 啟動(dòng)AD轉(zhuǎn)換有兩種方式: ()和()。AD轉(zhuǎn)換結(jié)束后,轉(zhuǎn)換結(jié)束標(biāo)志位會(huì)置()。多個(gè)通道進(jìn)行AD轉(zhuǎn)換時(shí),可設(shè)置成()通道組或者()通道組。規(guī)則通道組最多有()個(gè)通道轉(zhuǎn)換。注入通道組最多允許()通道轉(zhuǎn)換。通過編程設(shè)置每個(gè)通道的轉(zhuǎn)換順序。轉(zhuǎn)換時(shí)間等于采樣時(shí)間加上()個(gè)時(shí)鐘周期。模擬看門狗部分用于監(jiān)控檢測(cè)電壓是否超過高、低閾值電壓,若超過,可以產(chǎn)生()。請(qǐng)解釋下面的AD配置程序ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;ADC_InitStructure.ADC_ScanConvMode = DISABLE;ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;ADC_InitStructure.ADC_ExternalTrigConv = ADC_Exte

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論