使用兩路PA.1 (ADC Channel 1) 和 PA.4 (ADC Channel 4),配置方式如代碼所示。使用的芯片是STM32F030C8。
需定義兩個變量
static __IO uint16_t RegularConvertedAdcValue[ADC_CHANNEL_NUM]; // ADC1轉換的電壓值通過MDA方式傳到flash
static float AdcValueConvertToVoltage; // 局部變量,用于存從flash讀到的電壓值
然后上電初始化時調用
void ADCD_Init(void)
{
GPIO_Config();
DMA_Config();
ADC_Config();
}
通過以下方式可以打印看到AD值和電壓轉換值。
printf("ADC Value[0] = %d rn", RegularConvertedAdcValue[0]);
AdcValueConvertToVoltage = (((float)RegularConvertedAdcValue[0] / 4096) * 3.3); /* 2^12 = 4096, Vref = 3.3V */
printf(" Voltage[0] = %2.2f Vrn", AdcValueConvertToVoltage);
printf("ADC Value[1] = %d rn", RegularConvertedAdcValue[1]);
AdcValueConvertToVoltage = (((float)RegularConvertedAdcValue[1] / 4096) * 3.3); /* 2^12 = 4096, Vref = 3.3V */
printf(" Voltage[1] = %2.2f Vrn", AdcValueConvertToVoltage);
printf("ADC Value[2] = %d rn", RegularConvertedAdcValue[2]);
AdcValueConvertToVoltage = (((float)RegularConvertedAdcValue[2] / 4096) * 3.3); /* 2^12 = 4096, Vref = 3.3V */
printf(" Voltage[2] = %2.2f Vrn", AdcValueConvertToVoltage);
以下是初始化代碼,供參考。
static void GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable the GPIOA Clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
/* Configure PA.1 (ADC Channel1) & PA.4 (ADC Channel4) in analog mode */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
static void DMA_Config(void)
{
DMA_InitTypeDef DMA_InitStructure;
/* Enable DMA1 clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
//DMA1通道1配置
DMA_DeInit(DMA1_Channel1);
//外設地址
DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_ADDRESS;
//內存地址
DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&RegularConvertedAdcValue;
//DMA傳輸方向單向
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
//設置DMA在傳輸時緩沖區的長度
DMA_InitStructure.DMA_BufferSize = 2;
//設置DMA的外設遞增模式,一個外設
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
//設置DMA的內存遞增模式
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
//外設數據字長
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
//內存數據字長
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
//設置DMA的傳輸模式:連續不斷的循環模式
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
//設置DMA的優先級別
DMA_InitStructure.DMA_Priority = DMA_Priority_High;
//設置DMA的2個memory中的變量互相訪問
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
DMA_Init(DMA1_Channel1, &DMA_InitStructure);
/* Enable DMA1 Channel1 */
DMA_Cmd(DMA1_Channel1, ENABLE);
}
static void ADC_Config(void)
{
ADC_InitTypeDef ADC_InitStructure;
/* ADC1 DeInit */
ADC_DeInit(ADC1);
/* Load ADC default value */
ADC_StructInit(&ADC_InitStructure);
/* Enable ADC1 clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
//轉換分辨率
ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
//連續轉換
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
//外部觸發禁止
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
//ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_TRGO;
//數據右對齊
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
//掃描方向
ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward;
ADC_Init(ADC1, &ADC_InitStructure);
/* ADC1 regular channel1 configuration */
ADC_ChannelConfig(ADC1, ADC_Channel_1, ADC_SampleTime_55_5Cycles);
ADC_ChannelConfig(ADC1, ADC_Channel_4, ADC_SampleTime_55_5Cycles);
/* ADC Calibration */
ADC_GetCalibrationFactor(ADC1);
/* ADC DMA request in Circular mode */
ADC_DMARequestModeConfig(ADC1, ADC_DMAMode_Circular);
/* Enable ADC DMA request */
ADC_DMACmd(ADC1, ENABLE);
/* Enable ADC1 */
ADC_Cmd(ADC1, ENABLE);
/* Wait until the ADC enable falg is set to start conversion */
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN));
/* Start ADC1 Software Conversion */
ADC_StartOfConversion(ADC1);
}
上一篇:利用ST MCU內部基準參考電壓監測電源電壓及其它
下一篇:STM8開發記錄二:UART RX空閑中斷和DMA操作
推薦閱讀
史海拾趣
隨著技術的不斷進步和市場的擴大,Cableform Inc公司意識到必須走出國門,開拓更廣闊的市場。1974年,公司在弗吉尼亞州特洛伊成立了北美業務分部,這是公司國際化戰略的重要一步。在北美市場,公司面臨著激烈的競爭和不同的文化背景,但憑借著優質的產品和服務,Cableform Inc逐漸贏得了客戶的信任,市場份額穩步上升。
Arduino平臺從一開始就秉持著開源和合作的理念。它的源代碼、硬件設計和文檔都是公開的,鼓勵開發者們共同參與和貢獻。這種開放的精神吸引了大量的開發者加入Arduino社區,共同推動Arduino平臺的發展。同時,Arduino也與許多企業和機構建立了合作關系,共同推動電子行業的發展和創新。
隨著電子行業的快速發展,Calmos Systems Inc公司意識到技術創新是企業發展的核心動力。因此,公司加大了研發投入,引進了一批高水平的技術人才,建立了完善的研發體系。經過多次試驗和失敗,公司成功開發出了一款具有顛覆性的新技術,這項技術在行業內引起了廣泛關注。憑借這一技術創新,公司在市場上獲得了競爭優勢,實現了快速發展。
近年來,創客文化在全球范圍內興起,Global Specialties迅速抓住了這一趨勢。公司推出了一系列創客/DIY產品,包括各種模塊化的電子元件和工具,旨在幫助創客們實現他們的創意和想法。通過舉辦線上線下的創客活動,Global Specialties不僅促進了創客之間的交流與合作,還進一步擴大了自己的品牌影響力。
為了進一步拓展業務領域,CMS開始尋求跨界合作。他們與一家領先的汽車制造商達成戰略合作,共同研發車載智能系統。CMS的芯片技術為車載系統提供了強大的計算能力和數據處理能力,使得車載系統更加智能化、便捷化。這一合作不僅為CMS帶來了新的收入來源,也進一步提升了公司的品牌影響力。
請問一下有沒有熟悉DirectFB的? 比如我的程序如下(豎屏程序) (0,0) ------- | | | | | | | | ------- (240*320) ...… 查看全部問答∨ |
|
維視工業攝像頭,1394工業CCD攝像頭,1394接口CCD工業相機 維視工業攝像頭,1394工業CCD攝像頭,1394接口CCD工業相機 作者:維視圖像 來自:http://www.xamv.com http://www.micovision.com.cn 【1394接口工業攝像頭簡介】 MV-VS 1394接口CCD工業攝像頭。該系列工業相機采用幀曝光CCD ...… 查看全部問答∨ |
NK 8C100000 01EB0000 RAMIMAGE ROMSTART=8C100000 RAMIMAGE和ROMSTART在虛擬地址上是重合的,知道這樣是對的。但不知道為什么?求教… 查看全部問答∨ |
由鎵(Ga)和氮(N)構成的化合物半導體。帶隙為3.45eV(用光的波長表示相當于約365nm),比硅(Si)要寬3倍。利用該特性,GaN主要應用于光元件。通過混合銦(In)和鋁(Al)調整帶隙,所獲得的LED和藍紫色半導體激光器等發光元件已經實 ...… 查看全部問答∨ |
|
大型美資IC公司招聘Analog IC Design Engineers 如題: 大型美資IC公司招聘Analog IC Design Engineers Location: Beijing or Shanghai · Responsibilities: 1. Analog IC circuit design; si ...… 查看全部問答∨ |
|
求高手指點一下,我想在我的linux上面添加一個郵件服務。這個服務器不要太大的,只要可以實現往固定郵件地址發送設備狀態就行。有沒有那種嵌入式方面用的郵件服務器呢,, 謝謝各位大大 … 查看全部問答∨ |
拿到板子已經有一段時間了,之間也陸陸續續的學習了一些板子資源,比較郁悶的是QuartusII 12.0軟件。期間玲瓏也很關心學習進度,心里甚是過意不去,寫寫對開發環境的一些感受,和大伙交流交流。 板子上有集成的板載USB B ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- Hercules :安全MCU 初體驗
- 學知識,贏好禮|泰克半導體材料與器件測試技術電源特性篇!
- 深入東芝參考設計庫:夯實您的設計庫,讓您的設計更出彩
- 1月22日下午14:00Mouser攜手Maxim邀您觀看有獎直播:深入淺出可穿戴健康監測
- 有獎直播|羅徹斯特電子半導體全周期解決方案 助您應對供應鏈中斷和元器件停產的挑戰
- 答題抽獎:Mentor Tessent Automotive相關測試解決方案(獎品池還剩不少獎品喲)
- 國產芯4月:開啟ADC和DAC之旅,曬一曬你用過哪個段位的ADC/DAC~
- 2021 Digi‑Key KOL 視頻系列:新型智能曝光算法在人臉識別中的應用
- TI單芯片毫米波傳感器產品組合新品發布會,誠邀參與,預注冊贏好禮
- EEWORLD2018開年送禮,答題贏紅包
- 鋰硫電池獲技術突破 或能讓電動車電池壽命延長4倍
- 再次撞車!特斯拉Autopilot又要背鍋嗎
- 8分鐘充電至85% 廣汽新能源石墨烯電池將進入量產測試
- 瑞薩副總裁:RX誕生十周年,未來將繼續成為MCU主要業務來源
- SiP—解鎖芯片潛力的一把鑰匙
- Azure ARM (19) 將傳統的ASM VM遷移到ARM VM (2)
- Azure ARM (18) 將傳統的ASM VM遷移到ARM VM (1)
- Azure ARM (17) 基于角色的訪問控制 - 自定義Role
- Azure ARM (16) 基于角色的訪問控制 - 使用默認的Role
- Azure ARM (15) 根據現有VHD文件,創建ARM VM