日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Arduino Due的三相正弦波發(fā)生器的解析

454398 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-11-20 17:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

步驟1:生成正弦數(shù)據(jù)數(shù)組

由于實時計算對CPU的要求很高,因此需要一個正弦數(shù)據(jù)數(shù)組以獲得更好的性能

uint32_t sin768 [] PROGMEM = 。..。

而x = [0:5375]; y = 127 + 127 *(sin(2 * pi/5376/*或您希望根據(jù)要求使用一些#*))

步驟2:啟用并行輸出

與Uno不同,Due具有有限的參考。但是,要基于Arduino Uno生成三相正弦波,首先,由于其MCLK低(16MHz,而Due是84MHz),因此性能不佳,第二,它的GPIO有限,可以產(chǎn)生最大2相輸出,您需要額外的模擬電路產(chǎn)生第三相(C = -AB)。

啟用GPIO的步驟主要是基于SAM3X的try and trial +無用數(shù)據(jù)表

PIOC-》 PIO_PER = 0xFFFFFFFE ;//PIO控制器PIO使能寄存器(請參閱ATMEL SAM3X數(shù)據(jù)表的p656)和http://arduino.cc/zh-CN/Hacking/PinMappingSAM3X、Arduino Due引腳33-41和44-51已啟用

PIOC-》 PIO_OER = 0xFFFFFFFE;//PIO控制器輸出使能寄存器,請參見ATMEL SAM3X數(shù)據(jù)手冊p657-》 PIO_OSR = 0xFFFFFFFE;//PIO控制器輸出狀態(tài)寄存器,請參閱ATMEL SAM3X數(shù)據(jù)表的p658

PIOC-》 PIO_OWER = 0xFFFFFFFE;//PIO輸出寫使能寄存器,請參閱ATMEL SAM3X數(shù)據(jù)表的p670

//PIOA-》 PIO_PDR = 0x30000000;//作為保險是可選的,似乎并不影響性能,數(shù)字引腳10連接到PC29和PA28,數(shù)字引腳4連接到PC29和PA28,此處禁用禁用PIOA#28&29

步驟3:啟用中斷

為最大程度地發(fā)揮其性能,CPU負載應(yīng)盡可能低。但是,由于CPU引腳和Due引腳之間的非1to1對應(yīng)關(guān)系,需要進行位操作。

您可以進一步優(yōu)化算法,但空間非常有限。

void TC7_Handler(void)

{TC_GetStatus(TC2,1);

t = t%樣本;//使用t%samples而不是‘if’來避免t的溢出

phaseAInc =(preset * t)%5376;//使用%5376避免數(shù)組索引溢出

phaseBInc =(phaseAInc + 1792)%5376;

phaseCInc =(phaseAInc + 3584)%5376;

p_A = sin768 [phaseAInc] 《《1;//參考PIOC:PC1至PC8,對應(yīng)的Arduino Due引腳:引腳33-40,因此向左移1位

p_B = sin768 [phaseBInc] 《《12;//參考PIOC:PC12至PC19,對應(yīng)的Arduino Due引腳:引腳51-44,因此左移12位

p_C = sin768 [phaseCInc];//C相輸出使用PIOC:PC21,PC22,PC23,PC24,PC25,PC26,PC28和PC29,對應(yīng)的Arduino Due引腳:數(shù)字引腳:分別為9,8,7,6,5,4,3,10

p_C2 =(p_C&B11000000)《《22;//這會生成PC28和PC29

p_C3 =(p_C&B00111111)《《21;//這會生成PC21-PC26

p_C = p_C2 | p_C3;//這會產(chǎn)生C相的并行輸出

p_A = p_A | p_B | p_C;//32位輸出= A相(8位)| B相| C相

PIOC-》 PIO_ODSR = p_A;//輸出寄存器= p_A

t ++; }

第4步:R/2R DAC

構(gòu)建3x8bit R/2R DAC,在Google上加載參考。

步驟5:完整代碼

#define _BV(x)(1 《《(x));

uint32_t sin768 [] PROGMEM =/* x = [0:5375 ]。 y = 127 + 127 *(sin(2 * pi/5376))*/

uint32_t p_A,p_B,p_C,p_C2,p_C3;//A相B相C值-盡管輸出僅8位,但p_A和p_B值將被操作以生成新的32位值,以應(yīng)對32位PIOC輸出

uint16_t phaseAInc,phaseBInc ,phaseCInc,freq,freqNew; uint32_t間隔; uint16_t個樣本,預(yù)設(shè); uint32_t t = 0;

void setup(){

//并行輸出PIOC設(shè)置:Arduino Due引腳33-40被用作A相輸出,而44-51引腳則用于A相B輸出

PIOC-》 PIO_PER = 0xFFFFFFFE;//PIO控制器PIO使能寄存器(請參閱ATMEL SAM3X數(shù)據(jù)表的p656)和http://arduino.cc/zh-CN/Hacking/PinMappingSAM3X、Arduino Due引腳33-41和44-51已啟用

PIOC-》 PIO_OER = 0xFFFFFFFE;//PIO控制器輸出使能寄存器,請參閱ATMEL SAM3X數(shù)據(jù)表的p657

PIOC-》 PIO_OSR = 0xFFFFFFFE;//PIO控制器輸出狀態(tài)寄存器,請參閱ATMEL SAM3X數(shù)據(jù)表的p658

PIOC-》 PIO_OWER = 0xFFFFFFFE;//PIO輸出寫使能寄存器,請參閱ATMEL SAM3X數(shù)據(jù)表的p670

//PIOA-》 PIO_PDR = 0x30000000;//作為保險,是可選的,似乎不影響性能,數(shù)字引腳10連接到PC29和PA28,數(shù)字引腳4連接到PC29和PA28,此處禁用禁用PIOA#28和29//定時器設(shè)置,請參閱http ://arduino.cc/en/Hacking/PinMappingSAM3X,

pmc_set_writeprotect(false);//禁用電源管理控制寄存器的寫保護

pmc_enable_periph_clk(ID_TC7);//啟用外設(shè)時鐘時間計數(shù)器7

TC_Configure(/*時鐘*/TC2,/*通道*/1,TC_CMR_WAVE | TC_CMR_WAVSEL_UP_RC | TC_CMR_TCCLKS_TIMER_CLOCK1);//TC時鐘42MHz(時鐘,通道,比較模式設(shè)置)TC_SetRC(TC2,1,interval); TC_Start(TC2,1);

//在計時器TC2-》 TC_CHANNEL [1]上啟用計時器中斷。TC_IER= TC_IER_CPCS;//IER =中斷允許寄存器TC2-》 TC_CHANNEL [1] .TC_IDR =?TC_IER_CPCS;//IDR =中斷禁止寄存器

NVIC_EnableIRQ(TC7_IRQn);//在嵌套向量中斷控制器freq = 60中啟用中斷;//將頻率初始化為60Hz預(yù)設(shè)= 21;//數(shù)組索引增加21個樣本= 256;//輸出樣本256/周期間隔= 42000000/(頻率*樣本);//中斷計數(shù)TC_SetRC(TC2,1,interval);//啟動TC Serial.begin(9600);//出于測試目的}

void checkFreq()

{freqNew = 20000;

if(freq == freqNew){}其他

{freq = freqNew;

if(freq》 20000){freq = 20000;/*最大頻率20kHz */};

,如果(freq 《1){freq = 1;/*最低頻率1Hz */};

如果(freq》 999){preset = 384;樣本= 14;}//對于頻率》 = 1kHz,每個周期14樣本

否則(freq》 499){preset = 84;樣本= 64;}//對于500 《=頻率《1000Hz,每個周期64個樣本,否則(freq》 99){preset = 42; samples = 128;}//對于100Hz 《= frequency 《500Hz,128個采樣/周期

else {preset = 21;樣本= 256;};//對于頻率《100hz,每個周期256個采樣

間隔= 42000000/(freq * samples); t = 0; TC_SetRC(TC2,1,間隔); }}

void loop(){

checkFreq();延遲(100); }

void TC7_Handler(void)

{TC_GetStatus(TC2,1);

t = t%樣本;//使用t%samples引起t phase的溢出AInc =(preset * t)%5376;//使用%5376避免數(shù)組索引溢出

phaseBInc =(phaseAInc + 1792)%5376;

phaseCInc =(phaseAInc + 3584)%5376;

p_A = sin768 [phaseAInc] 《《1;//參考PIOC:PC1至PC8,對應(yīng)的Arduino Due引腳:引腳33-40,因此向左移1位

p_B = sin768 [phaseBInc] 《《12;//參考PIOC:PC12至PC19,對應(yīng)的Arduino Due引腳:引腳51-44,因此左移12位

p_C = sin768 [phaseCInc];//C相輸出使用PIOC:PC21,PC22,PC23,PC24,PC25,PC26,PC28和PC29,對應(yīng)的Arduino Due引腳:數(shù)字引腳:分別為9,8,7,6,5,4,3,10

p_C2 =(p_C&B11000000)《《22;//這會生成PC28和PC29

p_C3 =(p_C&B00111111)《《21;//這將生成PC21-PC26//Serial.println(p_C3,BIN); p_C = p_C2 | p_C3;//這會產(chǎn)生C相的并行輸出

p_A = p_A | p_B | p_C;//32位輸出= A相(8位)| B相| C相////Serial.println(p_A》》21,BIN);//PIOC-》 PIO_ODSR = 0x37E00000;

PIOC-》 PIO_ODSR = p_A;//輸出寄存器= p_A t ++; }
責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 發(fā)生器
    +關(guān)注

    關(guān)注

    4

    文章

    1432

    瀏覽量

    64685
  • Arduino
    +關(guān)注

    關(guān)注

    190

    文章

    6527

    瀏覽量

    197519
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    三相大電流發(fā)生器:高壓電氣試驗的\"力量核心\"

    三相大電流發(fā)生器。 它到底在做什么 說白了,三相大電流發(fā)生器就是一個\"可控的大電流源\"。 它把外部供電(通常是380V工頻交流)經(jīng)過精密調(diào)壓和升流變壓
    發(fā)表于 04-14 15:09

    是否可以用變頻驅(qū)動三相變壓器?

    在工業(yè)電氣領(lǐng)域,變頻三相變壓器的組合應(yīng)用一直存在技術(shù)爭議。從原理上看,變頻輸出的是PWM(脈寬調(diào)制)波形,而傳統(tǒng)變壓設(shè)計針對正弦波
    的頭像 發(fā)表于 03-28 17:51 ?1090次閱讀
    是否可以用變頻<b class='flag-5'>器</b>驅(qū)動<b class='flag-5'>三相變壓器</b>?

    方波正弦波函數(shù)發(fā)生器 標準信號發(fā)生器 dds函數(shù)信號發(fā)生器

    信號發(fā)生器
    知道點啥
    發(fā)布于 :2026年01月28日 19:27:31

    基于STM32F103驅(qū)動AD9833模塊 DDS信號發(fā)生器輸出正弦波//方波可編程信號

    AD9833是一款低功耗可編程波形發(fā)生器,能輸出正弦波和方波,頻率范圍為1Hz-9MHz,采用SPI串行通信。具有28位頻率寄存
    的頭像 發(fā)表于 01-10 10:30 ?3948次閱讀
    基于STM32F103驅(qū)動AD9833模塊 DDS信號<b class='flag-5'>發(fā)生器</b>輸出<b class='flag-5'>正弦波</b>/<b class='flag-5'>三</b>角<b class='flag-5'>波</b>/方波可編程信號

    信號發(fā)生器和示波器區(qū)別

    區(qū)別,幫助讀者更好地理解它們在電子測試中的重要性。 信號發(fā)生器是一種專門用于產(chǎn)生各種類型電信號的設(shè)備。根據(jù)需要,信號發(fā)生器可以產(chǎn)生正弦波、方波、鋸齒、脈沖
    的頭像 發(fā)表于 01-05 17:47 ?682次閱讀
    信號<b class='flag-5'>發(fā)生器</b>和示波器區(qū)別

    如何調(diào)節(jié)普源DG5502 Pro信號發(fā)生器產(chǎn)生正弦波的頻率

    普源DG5502 Pro信號發(fā)生器是一款功能強大的電子測試設(shè)備,廣泛應(yīng)用于通信、科研和工業(yè)領(lǐng)域。本文將詳細介紹如何通過該設(shè)備生成正弦波信號并精準調(diào)節(jié)其頻率,幫助用戶掌握基礎(chǔ)操作與高級調(diào)校技巧,確保
    的頭像 發(fā)表于 12-17 16:03 ?488次閱讀
    如何調(diào)節(jié)普源DG5502 Pro信號<b class='flag-5'>發(fā)生器</b>產(chǎn)生<b class='flag-5'>正弦波</b>的頻率

    普源DG1022Z信號發(fā)生器正弦波頻率調(diào)節(jié)指南

    普源DG1022Z信號發(fā)生器作為一款高性能的雙通道波形發(fā)生器,可靈活輸出正弦波、方波、等多種波形,廣泛應(yīng)用于電子測試、科研實驗及教學(xué)場
    的頭像 發(fā)表于 10-14 16:53 ?1079次閱讀
    普源DG1022Z信號<b class='flag-5'>發(fā)生器</b><b class='flag-5'>正弦波</b>頻率調(diào)節(jié)指南

    信號發(fā)生器選型指南:函數(shù)、射頻與任意波形的差異與適用場景

    者的差異,為選型提供參考。 ? 一、函數(shù)發(fā)生器:基礎(chǔ)測試的“萬能工具” 函數(shù)發(fā)生器以生成標準波形為核心功能,典型輸出包括正弦波、方波、
    的頭像 發(fā)表于 09-23 18:01 ?1906次閱讀
    信號<b class='flag-5'>發(fā)生器</b>選型指南:函數(shù)、射頻與任意波形的差異與適用場景

    信號發(fā)生器產(chǎn)生正弦波的頻率精準調(diào)節(jié)方法

    一、技術(shù)原理與核心方法 正弦波頻率的精準調(diào)節(jié)依賴于信號發(fā)生器的內(nèi)部架構(gòu)與算法,常見技術(shù)包括: 1. 直接數(shù)字頻率合成(DDS)技術(shù) 通過數(shù)字信號處理生成正弦波,利用CPLD或FPGA實現(xiàn)正弦
    的頭像 發(fā)表于 08-27 17:49 ?1291次閱讀
    信號<b class='flag-5'>發(fā)生器</b>產(chǎn)生<b class='flag-5'>正弦波</b>的頻率精準調(diào)節(jié)方法

    三相無刷電機驅(qū)動IC BM64071MUV-Z概述

    BM64071MUV-Z是用于三相無刷電機驅(qū)動正弦波驅(qū)動的預(yù)驅(qū)動IC,支持48V電源控制外部FET構(gòu)建的電機驅(qū)動
    的頭像 發(fā)表于 08-05 10:22 ?1455次閱讀
    <b class='flag-5'>三相</b>無刷電機驅(qū)動IC BM64071MUV-Z概述

    TI 正弦波發(fā)生器電路

    該文檔介紹了德州儀器的一款正弦波發(fā)生器電路,其設(shè)計目標為實現(xiàn)8V/V的交流增益、10kHz的振蕩頻率,采用±2.5V電源供電;電路通過四通道運放TLV9064緩沖各RC濾波級以生成低失真正弦波
    的頭像 發(fā)表于 06-23 14:23 ?2688次閱讀
    TI <b class='flag-5'>正弦波</b><b class='flag-5'>發(fā)生器</b>電路

    STM32F723ZET6使用ADC捕獲標準正弦波并通過USB主動上報,正弦波重新擬合后存在凹陷峰怎么解決?

    內(nèi)置PHY功能的模擬串口通信把數(shù)據(jù)上報。上報方式是每次adc采樣存下一個點,累計達到1000個點進行一次HS上報。 上位機最好收到的波形如下: 之前通過標準的信號發(fā)生器輸出1khz正弦波也會存
    發(fā)表于 06-20 07:22

    信號發(fā)生器用途及功能討論

    發(fā)生器能產(chǎn)生寬度、幅度和重復(fù)頻率可調(diào)的矩形脈沖,可用于測試線性系統(tǒng)的瞬態(tài)響應(yīng)。函數(shù)信號發(fā)生器則能產(chǎn)生正弦波、方波、、鋸齒
    發(fā)表于 06-12 16:25

    實用電源——正弦波逆變器

    資料全面詳細地介紹了正弦波逆變器技術(shù),闡述正弦波逆變器發(fā)展過程中各階段典型逆變方式的工作原理,以及典型逆變器的工作過程。 主要內(nèi)容包括:多重疊加式逆變器,如電壓型電流型逆變器的多重疊加,PWM
    發(fā)表于 06-11 16:19

    使用 dsPIC30F 實現(xiàn) BLDC 電機的正弦電壓驅(qū)動

    簡介 在 BLDC 電機應(yīng)用中,由于存在噪音和轉(zhuǎn)矩脈動問題,使用三相正弦波電壓代替六拍電壓是一種理想的控制方法。本文檔介紹的應(yīng)用軟件利用 dsPIC30F 數(shù)字信號控制高效且可靠地實現(xiàn)了 BLDC
    發(fā)表于 05-14 15:56
    乌鲁木齐市| 宜都市| 建平县| 巩留县| 黔江区| 获嘉县| 陵川县| 武冈市| 射阳县| 拉孜县| 叶城县| 汶上县| 海南省| 阜南县| 和林格尔县| 嘉祥县| 柳河县| 宝鸡市| 岳西县| 和田县| 崇义县| 赞皇县| 黑水县| 孟村| 建始县| 阿拉善左旗| 星座| 康乐县| 壤塘县| 军事| 洪湖市| 缙云县| 云梦县| 天水市| 阿拉尔市| 五莲县| 武夷山市| 芒康县| 海阳市| 安新县| 牙克石市|