SyncMOS Technologies Inc.

SyncMOS Technologies Inc.
SyncMOS SPWM Application Note
Jan 2009
For SM5964、SM8954A、SM8958A、SM89516A、SM59264、SM59128、SM79108
Specific Pulse Width Modulation(SPWM) Function Application Notes
適用產品:
1. SM5964、SM8954A、SM8958A、SM89516A(P1.3~P1.7)
2. SM59264、SM59128(P1.2~P1.5)
3. SM79108(P1.3)
功能說明:
每個 SPWM 波型是由一個 8bit 暫存器的組合而成,其組合成份為 5bit 的 SPWM 及 3bit 的 BRM。在 5bit SPWM
部份,其值將決定輸出的脈衝寬度(“Hi”)。3bit 的 BRM 將產生 1~7 個狹小的脈衝在一個 SPWM 週期架構之
間分別插入。
應用範圍:1、背光版亮度控制
2、CCD Clock 輸出
3、電壓變化控制。
特殊暫存器說明:P1CON, SPWMC, SPWMD[4:0]
1、P1CON(0x9BH):
(Example to define P1.3~P1.7 )
SPWME4 SPWME3 SPWME2 SPWME1 SPWME0 Unused Unused Unused
Read /Write
R/W
R/W
R/W
R/W
R/W
Reset Value
0
0
0
0
0
*
*
*
P1.7
P1.6
P1.5
P1.4
P1.3
SM5964
(Example to define P1.2~P1.5 )
TWSIDAE TWSICLE SPWME3 SPWME2 SPWME1 SPWME0 Unused Unused
Read /Write
R/W
R/W
R/W
R/W
R/W
R/W
Reset Value
0
0
0
0
0
0
*
*
P1.5
P1.4
P1.3
P1.2
SM59264
SPWME [4:0]:初始值為 0,當位元設定為 1 時,對應 Port1 的腳位即設為 SPWM 的功能,當設定為 0 時
SPWM 的腳位即為一般的 I/O Pin。
2、SPWMC(0xA3H):
Unused Unused Unused Unused Unused Unused SPFS1 SPFS0
Read /Write
R/W R/W
Reset Value
*
*
*
*
*
*
0
0
SPFS[1:0] :是設定外部頻率的被除數以決定 SPWM 時脈。
SPFS1 SPFS0 Divider
SPWM clock at Fosc=20MHz
SPWM clock at Fosc=40MHz
0
0
2
10MHz
20MHz
0
1
4
5MHz
10MHz
1
0
8
2.5MHz
5MHz
1
1
16
1.25MHz
2.5MHz
SPWM clock = 1/T = Fosc/Divider
Specifications subject to change without notice, contact your sales representatives for the most recent information.
SPWM APN_VerA_20090119
IRFWX-A113
1
SyncMOS Technologies Inc.
SyncMOS SPWM Application Note
Jan 2009
For SM5964、SM8954A、SM8958A、SM89516A、SM59264、SM59128、SM79108
SPWM 的輸出頻率 = SPWM clock/32 = (Fosc/ Divider)/32.
3、SPWMD[4:0]( 0xAC、0xA7、0xA6、0xA5、0xA4):
SPWMD SPWMD SPWMD SPWMD SPWMD BRM
BRM
BRM
[4:0]4
[4:0]3
[4:0]2
[4:0]1
[4:0]0
[2:0]2 [2:0]1 [2:0]0
Read /Write
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
Reset Value
0
0
0
0
0
0
0
0
SPWMD[4:0]: 為 SPWM 資料暫存器,決定 SPWM 輸出波形,2 的 5 次方 = 32 =0~ 1FH
BRM[2:0]: 將要插入 1~7 個時脈在 8 個 SPWM 週期架構之間
N = BRM[2:0]
000
001
010
011
100
101
110
111
Number of SPWM cycles inserted in an 8-cycle frame
0
1
2
3
4
5
6
7
Example of SPWM timing diagram:
MOV SPWMD0 , #83
; SPWMD0[4:0]=10h=16 (16T high, 16T low), BRM[2:0] = 3
H
MOV P1CON , #08H
; Enable P1.3 as SPWM output pin
範例:一組 SPWM 輸出週期頻率的計算方式 :
設 Fosc = 20MHz , SPWMC 的 SPFS [1:0] =0x03H (Divider=16)
SPWM clock =20MHz / 16 = 1.25MHz
SPWM output cycle frame frequency = 1.25MHz / 32 = 39.1KHz
SPWM 程式範例:
組合語言:
X’tal = 20MHz
Specifications subject to change without notice, contact your sales representatives for the most recent information.
SPWM APN_VerA_20090119
IRFWX-A113
2
SyncMOS Technologies Inc.
SyncMOS SPWM Application Note
Jan 2009
For SM5964、SM8954A、SM8958A、SM89516A、SM59264、SM59128、SM79108
;******* SET DATA ****************************************
P1CON
EQU
09BH
;設定 SFR 內 P1CON 的位址
SPWMC
EQU
0A3H
;設定 SFR 內 SPWMC 的位址
SPWMD0
EQU
0A4H
;設定 SFR 內 SPWMD0 的位址
;******************* 定義程式的起始位址 ********************
ORG
0000H
;設定目前程式的起始位址
JMP
Start
;跳至 reset
ORG
100H
Start:
MOV
P1CON,#08H
;設定 P1.3 為 SPWM 輸出
MOV
SPWMC,#03H
;設定 SPWM 的頻率 (Divider=16)
MOV
SPWMD0,#083H ;設定輸出波形(SPWMD0=10h=16,BRM=3h)
;輸出波形週期為 16/32=1/2,在 8 個週期中插入 3 個脈波
;************* 設定 LED 在 SPWMD0(即 P1.3 輸出)的閃爍方式 ***************
;此段程式的 LED 顯示是由暗至亮的表示方法
MOV
A,#0ffH
;此段為由 FF 至 00 的波形變化
LOOP1:
MOV
SPWMD0,A
MOV
R0,A
CALL Delay
DJNZ
R0,LOOP1
;********************* 呼叫 Delay **************************************
Delay:
MOV
20H,#02H
b3: MOV
21H,#0FFH
b2: MOV 22H,#0FFH
b1:
DJNZ
22H,b1
DJNZ
21H,b2
DJNZ 20H,b3
RET
END
C 語言:
sfr P1CON = 0x9B;
sfr SPWMC
= 0x0A3;
sfr SPWMD0 = 0x0A4;
sfr SPWMD1 = 0x0A5;
sfr SPWMD2 = 0x0A6;
sfr SPWMD3 = 0x0A7;
sfr SPWMD4 = 0x0AC;
void DelayX10ms(int);
unsigned char times;
//設定 SFR 內 P1CON 的位址
//設定 SFR 內 SPWMC 的位址
//設定 SFR 內 SPWMD0 的位址
//設定 SFR 內 SPWMD1 的位址
//設定 SFR 內 SPWMD2 的位址
//設定 SFR 內 SPWMD3 的位址
//設定 SFR 內 SPWMD4 的位址
void main(void)
{
Specifications subject to change without notice, contact your sales representatives for the most recent information.
SPWM APN_VerA_20090119
IRFWX-A113
3
SyncMOS Technologies Inc.
SyncMOS SPWM Application Note
Jan 2009
For SM5964、SM8954A、SM8958A、SM89516A、SM59264、SM59128、SM79108
//設定 SPWM 輸出腳位//
//P1CON=0x04;
//set p1.2 out for 59264,59128
P1CON=0x08; //set p1.3 out for 5964,8954A,8958A,89516A,59264,59128,79108
//P1CON=0x10;
//set p1.4 out for 5964,8954A,8958A,89516A,59264,59128
//P1CON=0x20;
//set p1.5 out for 5964,8954A,8958A,89516A,59264,59128
//P1CON=0x40;
//set p1.6 out for 5964,8954A,8958A,89516A
//P1CON=0x80;
//set p1.7 out for 5964,8954A,8958A,89516A
//設定外部頻率的被除數以決定 SPWM 時脈//
//外部頻率:20MHz 設 Divider=16 其 SPWM 時脈為 1.25MHz
//SPWMC=0x00; //set SPWM frequency (Divider=2)
//SPWMC=0x01; //set SPWM frequency (Divider=4)
//SPWMC=0x02; //set SPWM frequency (Divider=8)
SPWMC=0x03; //set SPWM frequency (Divider=16)
//設定輸出波形的比例(SPWMD0=10h=16,BRM=3h)//
SPWMD0=0x83; //輸出波形週期為 16/32=1/2 ; 在 8 個週期中插入 3 個脈波
//設定輸出波形的比例(SPWMD0=18h=24,BRM=1h)//
SPWMD0=0xC3; //輸出波形週期為 24/32=3/4 ; 在 8 個週期中插入 1 個脈波
for(times=0xff;times<=0xff;times--)
{
SPWMD0 = times;
DelayX10ms(50);
}
}
void DelayX10ms(int count)
{
int i,j;
for(i=0;i<count;i++)
for(j=0;j<1500;j++);
}
Specifications subject to change without notice, contact your sales representatives for the most recent information.
SPWM APN_VerA_20090119
IRFWX-A113
4