久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
SPWM波在單片機上的實現與調節(基于MSP430F5529)
[打印本頁]
作者:
Lemon丶寧
時間:
2018-3-12 21:18
標題:
SPWM波在單片機上的實現與調節(基于MSP430F5529)
SPWM波的定義和生成方法在這里就不多說了,本文主要說SPWM波在單片機上的實現,以及如何調節濾出后的正弦波的頻率及幅度。
先弄清楚SPWM在單片機上如何產生,比如你要輸出100HZ的SPWM正弦波,每個周期100個點,則定時器B的中斷頻率為100*100=10K,用于載波(
定時器A
)的PWM頻率應>=10K(
這里我建議載波為1M,因為定時器的配合問題會有+-1的誤差,所以載波盡量的大則濾出的正弦波的波形越好
)。
通過軟件,你先得到100個點的正弦波采樣值,你可以用定時器A來產生1MHZ的PWM,然后用定時器B,做定時器中斷,10KHZ的頻率,每次中斷,就把一個采樣值賦值給定時器A的輸出通道:CCRx。然后不停的循環,每中斷一百次,就輸出1個波。不停的循環就不停的輸出,那么PWM輸出端,經過濾波后(
外部濾波電路要找相關電路去設計
),就是100HZ的正弦波了。
調節頻率要通過定時器B,公式:正弦波頻率*每個周期的點數=定時器B中斷頻率
調節幅度要依據載波中最大與最小占空比之差也即是調制深度,這個沒有公式……..
剩下的就要參考我給出的程序作出自己的理解吧,靠你們了,騷年們!
0.png
(49.11 KB, 下載次數: 109)
下載附件
2018-3-13 01:15 上傳
單片機源程序如下:
/*===========================================================================
* Name : PWM.h
* Function :
* Created on : 2019年12月5日
* Author : Laptop
*===========================================================================*/
#include "SPWM.h"
/*============================================================================
* 功能 : 產生單路SPWM波
* 輸入 : 無
* 輸出 : P1.4
* 注意 : 定時器也為TA1.1;載波頻率為126.26K;;默認正弦頻率為100HZ,幅度未知
*============================================================================*/
//初始化1路
void SPWM_1Way_Init(void)
{
P1SEL |=BIT4;
P1DIR |=BIT4;
//P1DS |=BIT4; //全力驅動
P1OUT &=~BIT4;
spwm_i=0;
TA0CCR0 =198; //載波126.26KHZ
TA0CCR3 =Lab1[spwm_i];
TA0CCTL3 =OUTMOD_7;
TA0CTL =TASSEL_2+MC_1+TACLR; //選擇時鐘為SMCLK,UP模式
P2SEL |=BIT0;
P2DIR |=BIT0;
P2OUT &=~BIT0;
TA1CCR0 =2499; //25000000/(100*100)=2500:100Hz,100個點:10KHZ(時間不太準我做了些補償)
TA1CTL =TASSEL_2+MC_1+TACLR; //選擇時鐘為SMCLK,UP模式
TA1CTL |= TAIE; //開啟中斷
__enable_interrupt(); //開啟總中斷
}
//輸出1路
void SPWM_1Way_Set_Freq(unsigned int freq)
{
unsigned long freq_num;
freq_num=250000/(freq)-1;
TA1CCR0 =freq_num;
}
/*================================================================================
* 功能 : 輸出兩路SPWM波,相位可調
* 輸入 : 無
* 輸出 : P1.4,P1.5
* 注意 : 定時器也為TA1.1;載波頻率為126.26K;;默認正弦頻率為100HZ,幅度未知
*================================================================================*/
//初始化2路
void SPWM_2Way_Init(void)
{
P1SEL |=BIT4+BIT5;
P1DIR |=BIT4+BIT5;
//P1DS |=BIT4+BIT5; //全力驅動
P1OUT &=~BIT4+BIT5;
spwm_i=0;
spwm_j=50; //控制相位
TA0CCR0 =198; //載波126.26KHZ
TA0CCR3 =Lab1[spwm_i];
TA0CCR4 =Lab1[spwm_j];
TA0CCTL3 =OUTMOD_7;
TA0CCTL4 =OUTMOD_7;
TA0CTL =TASSEL_2+MC_1+TACLR; //選擇時鐘為SMCLK,UP模式
P2SEL |=BIT0;
P2DIR |=BIT0;
P2OUT &=~BIT0;
TA1CCR0 =2499; //25000000/(100*100)=2500:100Hz,100個點:10KHZ
TA1CTL =TASSEL_2+MC_1+TACLR; //選擇時鐘為SMCLK,UP模式
TA1CTL |= TAIE; //開啟中斷
__enable_interrupt(); //開啟總中斷
}
//輸出2路
void SPWM_2Way_Set_Freq(unsigned int freq)
{
unsigned long freq_num;
freq_num=250000/(freq)-1;
TA1CCR0 =freq_num;
}
/*===============================================================
* 功能 : 中斷函數,改變SPWM中占空比寄存器的值
* 輸入 : 無
* 輸出 : 無
* 注意 : 為0時雙路輸出,為1時單路輸出
*===============================================================*/
#if 0
#pragma vector=TIMER1_A1_VECTOR
__interrupt void TimerA1(void)
{
TA0CCR3 =Lab1[spwm_i++];
if(spwm_i==100)spwm_i=0;
TA1IV=0; //GPIO的單獨中斷會自動清零,可TIMER的不會,所以要軟件清零;!!
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
SPWM_01.zip
(65.89 KB, 下載次數: 105)
2018-3-12 21:17 上傳
點擊文件名下載附件
SPWM波
下載積分: 黑幣 -5
作者:
wgsjjj
時間:
2018-3-13 13:53
不錯不錯,值得學習
作者:
媽媽mm
時間:
2018-3-14 21:47
很不錯呀,值得學習
作者:
小猴子安來寧
時間:
2018-7-22 15:50
可以的
作者:
732116010
時間:
2019-7-31 14:26
感謝!!
作者:
飛飛飛.
時間:
2021-7-20 10:44
有調出來波的嗎
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
天天天操操操
|
91在线精品秘密一区二区
|
欧洲亚洲精品久久久久
|
国产在线观
|
国产精品中文字幕在线播放
|
亚洲日韩中文字幕一区
|
欧美xxxx性
|
一区二区在线观看免费视频
|
91在线成人
|
www国产成人免费观看视频,深夜成人网
|
精品国产亚洲一区二区三区大结局
|
久视频在线观看
|
欧美一级做a爰片免费视频 国产美女特级嫩嫩嫩bbb片
|
日韩在线播放一区
|
亚洲福利一区
|
污污的网站在线观看
|
在线男人天堂
|
久久久久久免费毛片精品
|
欧美日韩国产三级
|
狠狠久久综合
|
日本超碰
|
精品少妇一区二区三区在线播放
|
一级片免费视频
|
欧美日韩精品在线一区
|
亚洲精品视频网站在线观看
|
亚洲视频一区在线观看
|
一区二区三区在线看
|
久久一区二区三区四区五区
|
日韩黄a
|
91精品国产欧美一区二区
|
91一区二区
|
国产高清免费
|
成人免费视频网
|
久久久久久亚洲精品
|
在线播放精品视频
|
亚洲精品电影网在线观看
|
少妇精品久久久久久久久久
|
国产探花在线观看视频
|
欧美精产国品一二三区
|
九九激情视频
|
亚洲精品天堂
|