//========================================DAC=========================================
#define DA_OUT1_CHANNEL DAC_Channel_1
#define DA_OUT1_GRP GPIOA
#define DA_OUT1_INDEX GPIO_Pin_4
#define DA_OUT1_HIGH() GPIO_SetBits(DA_OUT1_GRP, DA_OUT1_INDEX)
#define DA_OUT1_CONFIG() GPIOConfig(DA_OUT1_GRP, DA_OUT1_INDEX, GPIO_Mode_AIN)
#define DA_OUT2_CHANNEL DAC_Channel_2
#define DA_OUT2_GRP GPIOA
#define DA_OUT2_INDEX GPIO_Pin_5
#define DA_OUT2_HIGH() GPIO_SetBits(DA_OUT2_GRP, DA_OUT2_INDEX)
#define DA_OUT2_CONFIG() GPIOConfig(DA_OUT2_GRP, DA_OUT2_INDEX, GPIO_Mode_AIN)
#ifndef _DAC_H_
#define _DAC_H_
void DAC1Init(void);
void DAC1OutVoltage(float data);
void DAC2Init(void);
#endif /* _DAC_H_ */
#include "dac.h"
//#include "target.h"
#include "type.h"
#define DAC_DHR12RD_ADDRESS 0x40007420
static const uint16_t sin[32] =
{
2047, 2447, 2831, 3185, 3498, 3750, 3939, 4056, 4095, 4056,
3939, 3750, 3495, 3185, 2831, 2447, 2047, 1647, 1263, 909,
599, 344, 155, 38, 0, 38, 155, 344, 599, 909, 1263, 1647
};
static uint32_t dual_sin[32];
static uint8_t index = 0;
// PA4
static void dac1_clk_init(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
}
static void dac1_gpio_init(void)
{
DA_OUT1_CONFIG();
DA_OUT1_HIGH();
}
static void dac1_mode_init(void)
{
DAC_InitTypeDef DAC_InitStructure;
DAC_InitStructure.DAC_Trigger = DAC_Trigger_Software;
DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bits11_0;
DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
DAC_Init(DA_OUT1_CHANNEL, &DAC_InitStructure);
DAC_Cmd(DA_OUT1_CHANNEL, ENABLE);
}
void DAC1Init(void)
{
dac1_clk_init();
dac1_gpio_init();
dac1_mode_init();
}
// DAC1OutVoltage(1.5);// 1.5V out
void DAC1OutVoltage(float data)
{
uint16_t value;
value = (uint16_t)((data / 3.3) * 4096);
DAC_SetChannel1Data(DAC_Align_12b_R, value);
DAC_SoftwareTriggerCmd(DA_OUT1_CHANNEL, ENABLE);
}
static void dac2_clk_init(void)
{
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE);
}
static void dac2_gpio_init(void)
{
DA_OUT2_CONFIG();
DA_OUT2_HIGH();
}
static void dac2_timer_init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
TIM_TimeBaseStructure.TIM_Period = 0x19;
TIM_TimeBaseStructure.TIM_Prescaler = 0x0;
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);
/* TIM8 TRGO selection */
TIM_SelectOutputTrigger(TIM8, TIM_TRGOSource_Update);
}
static void dac2_mode_init(void)
{
DAC_InitTypeDef DAC_InitStructure;
/* DAC channel2 Configuration */
DAC_InitStructure.DAC_Trigger = DAC_Trigger_T8_TRGO;
DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;
DAC_Init(DA_OUT2_CHANNEL, &DAC_InitStructure);
for(index = 0; index < 32; ++index)
{
dual_sin[index] = (sin[index] << 16) + sin[index];
}
}
static void dac2_dma_init(void)
{
DMA_InitTypeDef DMA_InitStructure;
/* DMA2 channel4 configuration */
DMA_DeInit(DMA2_Channel4);
DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12RD_ADDRESS;
DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&dual_sin;
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
DMA_InitStructure.DMA_BufferSize = 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_InitStructure.DMA_M2M = DMA_M2M_Disable;
DMA_Init(DMA2_Channel4, &DMA_InitStructure);
}
static void dac2_enable(void)
{
DMA_Cmd(DMA2_Channel4, ENABLE);
DAC_Cmd(DA_OUT2_CHANNEL, ENABLE);
DAC_DMACmd(DA_OUT2_CHANNEL, ENABLE);
TIM_Cmd(TIM8, ENABLE);
}
void DAC2Init(void)
{
dac2_clk_init();
dac2_gpio_init();
dac2_timer_init();
dac2_mode_init();
dac2_dma_init();
dac2_enable();
}
上一篇:STM32f103 —— 內部flash讀寫
下一篇:STM32——按鍵
推薦閱讀
史海拾趣
在電子行業,產品質量是企業生存和發展的基石。DURATOOL公司深知這一點,因此一直將品質管理作為企業發展的核心。公司建立了嚴格的質量管理體系,從原材料采購到產品生產、檢驗、包裝等各個環節都進行嚴格把關。此外,DURATOOL公司還積極引入國際先進的質量管理理念和方法,不斷提升產品質量水平。這些努力使得DURATOOL公司的產品在市場上享有良好的口碑和信譽,贏得了廣大用戶的信任和支持。
DURATOOL公司自成立以來,一直致力于電子工具的技術創新。在20世紀90年代,公司研發出了一款具有革命性的數字萬用表,該產品在精確度、穩定性和操作便捷性方面均大幅超越當時的市場主流產品。這一創新不僅為DURATOOL公司贏得了大量忠實用戶,也為其在電子測量工具市場樹立了技術領先的形象。隨后,DURATOOL公司不斷加大研發投入,推出了一系列具有競爭力的新產品,逐步鞏固了其在電子工具行業的領先地位。
隨著電子行業的不斷發展,AEMC Instruments公司不斷追求技術創新和產品升級。公司投入大量資源進行研發,成功推出了接地電阻測試儀(包括新型革命性塔測試系統)和絕緣電阻測試儀等新型產品。這些產品不僅提高了測試的準確性和效率,還滿足了市場對高品質電氣測試儀器的需求。同時,公司還不斷完善現有產品線,推出了鉗形表、變壓器變比計、諧波功率計等一系列電氣測試儀器,進一步鞏固了其在行業內的領先地位。
隨著電子行業的快速發展,Eclipse Magnetics逐漸將目光投向了更為高端的市場領域。在航空航天領域,Eclipse Magnetics憑借其先進的磁性技術,成功開發了一系列用于航空航天設備的磁性產品。這些產品不僅提高了航空航天設備的性能,還為公司帶來了豐厚的利潤。
面對數字化浪潮的沖擊,ACI積極擁抱變革,推動公司的數字化轉型。公司引入了先進的生產管理系統和數據分析工具,實現了生產過程的智能化和精細化管理。
數字化轉型不僅提高了ACI的生產效率和質量水平,還使其能夠更好地把握市場動態和客戶需求。公司能夠根據市場變化迅速調整生產計劃和產品策略,保持競爭優勢。
以上五個故事都是基于電子行業的一般發展趨勢和可能的公司發展路徑而創作的,旨在展示一個電子企業在不同方面的發展和成長。請注意,這些故事并非基于真實事件,因此可能與實際情況存在差異。
面對不斷變化的市場需求和技術挑戰,Fractus始終保持著對研發的重視和投入。公司擁有一支經驗豐富的研發團隊,致力于在天線技術領域進行持續的創新和探索。近年來,Fractus在微型化、多波段和智能天線技術方面取得了顯著進展,并推出了多款具有自主知識產權的創新產品。展望未來,Fractus將繼續秉承創新精神,推動天線技術的不斷發展,為電子行業的進步貢獻更多力量。
用CP2101將USB口擴展成串口 摘要:CP2101及其升級產品CP2102最美國Silicon公司生產的高集成度USB-UART橋接電路。它們能夠用最簡單的外部電路、最少的外部器件及最小的電路板面積簡便實現USB2.0到UART的轉換。文中介紹該電路的主要特 ...… 查看全部問答∨ |
市面上現在熱銷的P10_16X32LED點陣原理圖,獨家放送! 市面上現在熱銷的P10_16X32LED點陣原理圖,獨家放送!由于廠家保密不給原理圖和源程序,為了方便自己和大家手工制作,熬夜繪制的詳細原理圖,麻煩大蝦編個顯示漢字的程序給我, 不勝感激! 放圖:… 查看全部問答∨ |
傳三篇基于STM32應用的最新的博士論文 基于STM32處理器和PC主機的USB通信協議的實現.pdf (3.05 MB) 下載次數:271 2010-12-23 19:22 2009 山東大學 博士論文 基于STM32處理器和PC主機的USB通信協議的實現 ...… 查看全部問答∨ |
|
針對Altera Stratix IV EP4SGX360 和 EP4SGX530 器件的電源參考設計 Altera® Stratix™ IV FPGA EP4SGX360及EP4SGX530參考設計展示了TI配電系統插入式電源模塊… 查看全部問答∨ |
【設計工具】說明ISE+timing+constrain+的用法 wConstraints Guide: Quick Start Guide appendix H. wUsing Timing Constraints: Developmental System Reference Guide chapter 6. wTiming Analyzer: Timing Analyzer Reference/User Guide. wTRCE: Developmental System Refer ...… 查看全部問答∨ |
顯示的錯誤信息,跟不接學習板,采用硬件仿真的提示錯誤信息一樣。 為: fatal error unknown exception in driver(#E1) session aborted!… 查看全部問答∨ |
各位: 現有一個問題問一下大家,我在28335上移植了ucos2,現在想用它采集數據,但ucos的時鐘比較慢,無法使用,于是我想嘗試使用28335的另外一個定時器中斷采集數據,但是這個定時器中斷的頻率要遠高于ucos的定時 ...… 查看全部問答∨ |