17.01.2015 Views

MC93CV402 - abov.co.kr

MC93CV402 - abov.co.kr

MC93CV402 - abov.co.kr

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

음성 합성 IC<br />

<strong>MC93CV402</strong><br />

사용자 매뉴얼<br />

Ver. 1.7<br />

ABOV Semi<strong>co</strong>nductor Co., Ltd.<br />

Version 1.7<br />

Published by FAE team<br />

2009 ABOV Semi<strong>co</strong>nductor Co., Ltd. All rights reserved.<br />

Additional information of this manual may be served by ABOV Semi<strong>co</strong>nductor offices in Korea or Distributors.<br />

ABOV Semi<strong>co</strong>nductor reserves the right to make changes to any information here in at any time without<br />

notice.<br />

The information, diagrams and other data in this manual are <strong>co</strong>rrect and reliable; however, ABOV<br />

Semi<strong>co</strong>nductor is in no way responsible for any violations of patents or other rights of the third party<br />

generated by the use of this manual.


<strong>MC93CV402</strong><br />

목차<br />

목차 ......................................................................................................................................................... 2<br />

1. 개요 ..................................................................................................................................................... 3<br />

2. 시작하기 .............................................................................................................................................. 4<br />

2.1 하드웨어 구성 ............................................................................................................................... 4<br />

2.2 제어 ............................................................................................................................................... 4<br />

2.3 음원 파일 ...................................................................................................................................... 4<br />

3. 패키지 및 핀 구성 ................................................................................................................................ 5<br />

4. Package Dimension ............................................................................................................................ 8<br />

5. 회로 구성의 예 .................................................................................................................................. 11<br />

5.1 마이크로 컨트롤러와의 인터페이스 ........................................................................................... 11<br />

5.2 클럭 공급 방법 ............................................................................................................................ 12<br />

6. SPI 제어 명령 .................................................................................................................................... 13<br />

6.1 SPI 타이밍 .................................................................................................................................. 13<br />

6.2 제어 코드 .................................................................................................................................... 15<br />

6.3 제어 포트 .................................................................................................................................... 16<br />

7. 주요 기능 사용 방법 .......................................................................................................................... 18<br />

7.1 초기화 방법 ................................................................................................................................. 18<br />

7.2 재생 ............................................................................................................................................. 19<br />

7.3 정지 ............................................................................................................................................. 19<br />

7.4 모든 재생 취소 ............................................................................................................................ 20<br />

7.5 재생 상태 확인 ............................................................................................................................ 20<br />

7.6 음량 조절 .................................................................................................................................... 22<br />

7.7 재생 속도 .................................................................................................................................... 24<br />

7.8 재생 프로파일 ............................................................................................................................. 25<br />

7.9 포트 값 읽기 ................................................................................................................................ 26<br />

7.10 By Pass Mode ........................................................................................................................... 26<br />

7.11 STOP 모드 ................................................................................................................................ 27<br />

7.12 Deep Power Down Mode .......................................................................................................... 28<br />

8. 통신 테스트 ....................................................................................................................................... 30<br />

8.1 실험 파형 .................................................................................................................................... 30<br />

9. VM(Voice Message) .......................................................................................................................... 33<br />

9.1 ‘W’ Command ............................................................................................................................. 33<br />

10. SPI FlashROM 파일의 구조 ............................................................................................................ 35<br />

11. 전기적 특성 ..................................................................................................................................... 36<br />

11.1 Absolute Maximum Ratings ...................................................................................................... 36<br />

11.2 DC Characteristics .................................................................................................................... 36<br />

11.3 AC Characteristics .................................................................................................................... 37<br />

REVISION HISTORY ( I ) ................................................................................................................... 39<br />

January 23, 2013 Ver. 1.7 2


SPI Interface<br />

Host SPI Interface<br />

<strong>MC93CV402</strong><br />

1. 개요<br />

ABOV Digital Voice DEC<br />

nFCS<br />

FSCK<br />

FDO<br />

FDI<br />

Ext. Flash<br />

ROM<br />

Access<br />

MUX<br />

Command<br />

&<br />

Input<br />

Bitstream<br />

Buffer<br />

CELP / ADPCM<br />

DSP<br />

(Coprocessor)<br />

Gain & Attenuation<br />

Control<br />

DAC<br />

(PWM)<br />

VO1P<br />

VO1N<br />

nINT<br />

MicroController<br />

Internal<br />

Code ROM<br />

nCS<br />

SCLK<br />

DIN<br />

DOUT<br />

OSC .<br />

XIN<br />

XOUT<br />

General Purpose I/O<br />

(option)<br />

Figure 1-1 <strong>MC93CV402</strong> 내부 구성도<br />

<strong>MC93CV402</strong> 는 내부에 14-비트 디지털 앰프를 내장한 음성 합성 전용 IC 로서 다음의 2 가지<br />

디코더를 지원 합니다.<br />

- Narrow Band SPEEX<br />

- 4-bit ADPCM<br />

SPEEX 는 CELP(Code Excited Linear Prediction)을 근간으로 하는 음성 압축에 특화된 보코더로서<br />

다양한 비트레이트를 지원합니다. <strong>MC93CV402</strong> 에서 사용하는 Narrow Band 는 기본 8 KHz 뿐만<br />

아니라 12 KHz 샘플링 주파수를 지원하고 있습니다.<br />

또한 4-비트 ADPCM 을 지원하여 음성이 아닌 음악이나 효과음 등을 표현하는 데에도 사용할 수<br />

있습니다.<br />

특히 SPEEX 와 ADPCM 이 동시 재생이 되므로, SPEEX 로 음성을 재생하면서 효과음이나 배경<br />

음악을 4-비트 ADPCM 으로 동시에 재생할 수 있습니다.<br />

SPEEX 와 ADPCM 을 서로 다른 비트 레이트로 합성, 각각의 음량 조절, 재생속도 조절 등이<br />

가능합니다.<br />

VM(Voice Message)기능이 내장되어 있습니다. 이는 여러 가지 소리를 연결해서 하나의 음성 재생<br />

커맨드로 만들어 사용하는 기능 입니다.<br />

<strong>MC93CV402</strong> 는 외부에 음성 롬을 이용하여 재생하므로, 음성 데이터 양에 따라 다양한 크기의<br />

롬을 선택할 수 있으며, 사용되는 외부 롬은 표준 SPI 로 인터페이스 되는 시리얼 플래시 롬입니다.<br />

January 23, 2013 Ver. 1.7 3


<strong>MC93CV402</strong><br />

2. 시작하기<br />

2.1 하드웨어 구성<br />

본 매뉴얼의 3,4 장을 통해 핀 구성 및 패키지 정보를 파악하시고, 5 장을 통해 하드웨어 구성방법을<br />

파악하십시오. 특히 “5 장 회로구성 예”에 나오는 구성은 반드시 갖추어야 하는 필수 요소이니 꼭 확인<br />

하시기 바랍니다.<br />

2.2 제어<br />

<strong>MC93CV402</strong> 는 SPI 통신으로 제어 합니다. 먼저 “6 SPI 제어 명령”을 통해 SPI 통신 포맷이 어떻게<br />

구성 되는지 파악하시기 바랍니다. “7 주요 기능 사용 방법”을 에서는 초기화, 재생, 정지, 음량 조절 등<br />

기본 적인 사용방법에 대해 설명합니다. 이를 통해 기본 적인 사용방법을 익히신 후에 다시 “6 장<br />

제어명령”을 보시면 열거된 다른 명령들의 사용방법도 유추하실 수 있습니다.<br />

통신 명령 중 특정 “포트”를 읽어보는 0x49(‘I’) 명령으로 0x02 와 0x03 포트를 읽어 보면 각각 “B”와<br />

0x03 을 회신 합니다. 이를 통해 하드웨어가 제대로 구성되었는지, 통신기능에 제대로 구현되었는지<br />

먼저 확인해 보시길 권장 합니다. 이는 PLL 관련 회로가 없어도 동작하며, 음 원 데이터가<br />

저장된 Serial FLASH 가 없거나 비어 있어도 동작하기 때문에 통신이 제대로 되는지 확인하기에<br />

좋습니다. 단, Serial FLASH 의 첫 바이트가 0x02 이면 다른 모드로 동작하므로 Serial FLASH 가<br />

비어있는 것이 불확실하다면 제거하고 테스트하는 편이 더 좋습니다.<br />

좀더 자세한 내용은 “8 통신 테스트”를 참조 하시기 바랍니다.<br />

2.3 음원 파일<br />

<strong>MC93CV402</strong> 는 외부에 SPI 통신으로 연결된 Serial FLASH 에 저장된 음 원 데이터를 재생합니다.<br />

이 음원 데이터는 ABOV 에서 제공하는 WaveStudio 를 통해 WAV 파일들을 통합해서 생성 할 수<br />

있습니다. 이에 관한 자세한 설명은 WaveStudio 의 매뉴얼을 참고 하시기 바랍니다.<br />

January 23, 2013 Ver. 1.7 4


P04/SSB<br />

OCD_SDA<br />

OCD_SCL<br />

P11/KS0<br />

P10/KS1<br />

P37/KS2<br />

P36/KS3<br />

P35/KS4<br />

P03/SF_SSB<br />

P02/SF_SDI<br />

P01/SF_SDO<br />

PWMN<br />

VSS_PWM<br />

VDD_IO<br />

P20<br />

P21<br />

P22<br />

P23<br />

P24<br />

VSS_IO<br />

PLLC<br />

VDD_INT<br />

<strong>MC93CV402</strong><br />

3. 패키지 및 핀 구성<br />

XI<br />

XO<br />

VSS_INT<br />

P30<br />

P31<br />

P32/KS7<br />

P33/KS6<br />

P34/KS5<br />

VDD_IO<br />

VSS_IO<br />

P00/SF_SCK<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

8<br />

9<br />

10<br />

11<br />

44 43 42 41 40 39 38 37 36 35 34<br />

44MQFP<br />

12 13 14 15 16 17 18 19 20 21 22<br />

33<br />

32<br />

31<br />

30<br />

29<br />

28<br />

27<br />

26<br />

25<br />

24<br />

23<br />

PWMP<br />

VDD_PWM<br />

RESETB<br />

P16<br />

P15/INT3<br />

P14/INT2<br />

P13/INT1<br />

P12/INT0<br />

P07/MISO<br />

P06/MOSI<br />

P05/SCK<br />

Figure 3-1 Pin map for the 44 pin package (44MQFP)<br />

January 23, 2013 Ver. 1.7 5


P05/SCK<br />

P04/SSB<br />

P11/KS0<br />

P10/KS1<br />

P03/SF_SSB<br />

P02/SF_SDI<br />

P01/SF_SDO<br />

PWMN<br />

VSS_PWM<br />

P20<br />

P21<br />

P22<br />

PLLC<br />

VDD_INT<br />

<strong>MC93CV402</strong><br />

28 27 26 25 24 23 22<br />

XI<br />

XO<br />

VSS_INT<br />

P30<br />

VDD_IO<br />

VSS_IO<br />

P00/SF_SCK<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

28 QFN<br />

21<br />

20<br />

19<br />

18<br />

17<br />

16<br />

15<br />

PWMP<br />

VDD_PWM<br />

RESETB<br />

P13/INT1<br />

P12/INT0<br />

P07/MISO<br />

P06/MOSI<br />

8 9 10 11 12 13 14<br />

Figure 3-2 Pin map for the 28 pin package (28QFN)<br />

PLLC 1<br />

VDD_INT 2<br />

XI<br />

XO<br />

VSS_INT<br />

VDD_IO<br />

VSS_IO<br />

P00/SF_SCK<br />

P01/SF_SDO<br />

P02/SF_SDI<br />

3<br />

4<br />

5<br />

6<br />

7<br />

8<br />

9<br />

10<br />

20SOP<br />

20<br />

19<br />

18<br />

17<br />

16<br />

15<br />

14<br />

13<br />

12<br />

11<br />

VSS_PWM<br />

PWMN<br />

PWMP<br />

VDD_PWM<br />

RESETB<br />

P07/ MISO<br />

P06/MOSI<br />

P05/SCK<br />

P04/ SSB<br />

P03/SF_SSB<br />

Figure 3-3 Pin map for the 20 pin package (20SOP)<br />

January 23, 2013 Ver. 1.7 6


<strong>MC93CV402</strong><br />

Table 3-1 Pin Description<br />

PIN I/O Function @Reset Shared With<br />

RESETB I System Reset - -<br />

XI<br />

XO<br />

R00<br />

R01<br />

R02<br />

R03<br />

R04<br />

R05<br />

R06<br />

R07<br />

R10<br />

I<br />

O<br />

I/O<br />

Resonator or Crystal - -<br />

▶ Port R0.<br />

▶ Can be set in input or output mode in 1-bit units.<br />

▶ Internal pull-up register can be used via software<br />

when this port is used as input or open drain port.<br />

▶ Open Drain enable register can be used via<br />

software when this port is used as output port.<br />

January 23, 2013 Ver. 1.7 7<br />

Input<br />

Serial Flash SCK<br />

Serial Flash SDO<br />

Serial Flash SDI<br />

Serial Flash SSB<br />

SPI SSB<br />

SPI SCK<br />

SPI MOSI<br />

SPI MISO<br />

Key Scan 6<br />

R11 ▶ Port R1.<br />

Key Scan 7<br />

R12 ▶ Can be set in input or output mode in 1-bit units.<br />

External Interrupt 0<br />

R13 I/O ▶ Internal pull-up register can be used via software Input External Interrupt 1<br />

when this port is used as input or open drain port.<br />

R14 External Interrupt 2<br />

▶ Open Drain enable register can be used via<br />

R15 software when this port is used as output port.<br />

External Interrupt 3<br />

R16<br />

R20<br />

R21<br />

R22<br />

R23<br />

R24<br />

R30<br />

I/O<br />

▶ Port R2.<br />

▶ Can be set in input or output mode in 1-bit units.<br />

▶ Internal pull-up register can be used via software<br />

when this port is used as input or open drain port.<br />

▶ Open Drain enable register can be used via<br />

software when this port is used as output port.<br />

R31<br />

▶ Port R3.<br />

R32 Key Scan 0<br />

▶ Can be set in input or output mode in 1-bit units.<br />

R33 Key Scan 1<br />

I/O ▶ Internal pull-up register can be used via software Input<br />

R34 when this port is used as input or open drain port.<br />

Key Scan 2<br />

R35 ▶ Open Drain enable register can be used via<br />

software when this port is used as output port.<br />

Key Scan 3<br />

R36 Key Scan 4<br />

R37 Key Scan 5<br />

PWMP<br />

PWMN<br />

DSCL<br />

DSDA<br />

Input<br />

O PWM Driver - -<br />

I/O On Chip Debugger Interface - -<br />

PLLC O PLL Loop Filter - -<br />

VDD_PWM<br />

VSS_PWM<br />

VDD_IO<br />

VSS_IO<br />

VDD_INT<br />

VSS_INT<br />

Power<br />

Power<br />

Power<br />

Power for PWM output<br />

Power for I/O ports<br />

Power for Internal Operation<br />

-<br />

Note: It is ok to <strong>co</strong>nnect<br />

those three power ports to<br />

one power source. Even so it<br />

is more safety then one<br />

power port.


<strong>MC93CV402</strong><br />

4. Package Dimension<br />

Note that all dimensions are in millimeter.<br />

Figure 4-1 44MQFP package diagram<br />

January 23, 2013 Ver. 1.7 8


<strong>MC93CV402</strong><br />

Figure 4-2 28QFN package diagram<br />

January 23, 2013 Ver. 1.7 9


<strong>MC93CV402</strong><br />

Figure 4-3 20SOP package diagram<br />

January 23, 2013 Ver. 1.7 10


<strong>MC93CV402</strong><br />

5. 회로 구성의 예<br />

5.1 마이크로 컨트롤러와의 인터페이스<br />

MicroController<br />

nRESET<br />

SSB<br />

SCK<br />

SDOUT<br />

SDIN<br />

31(16)<br />

22(12)<br />

23(13)<br />

24(14)<br />

25(15)<br />

<strong>MC93CV402</strong><br />

VDDP<br />

PWMP<br />

nRESET<br />

PWMN<br />

VSSP<br />

SSB<br />

SCK<br />

MOSI<br />

SF_SSB<br />

MISO<br />

SF_SCK<br />

+3.3V<br />

32(17)<br />

33(18)<br />

24(19)<br />

35(20)<br />

GND<br />

14(11)<br />

11(8)<br />

SPI FlashROM<br />

SSB<br />

SCK<br />

스피커 직접 구동<br />

구동 능력<br />

= 240mA@8Ω<br />

SF_MOSI<br />

12(9)<br />

MOSI<br />

SF_MISO<br />

13(10)<br />

MISO<br />

(*주: 괄호 안의 핀 번호는 SOP-20 의 핀 번호 임)<br />

Figure 5-1 마이크로 컨트롤러와의 인터페이스 예<br />

리셋 핀인 nRESET 에 리셋 회로를 구성하여 주는 방법도 있지만, 위와 같이 컨트롤러가 직접 리셋<br />

신호를 보내도록 구성하면 만일의 경우 컨트롤러가 <strong>MC93CV402</strong> 를 리셋시킬 수도 있기 때문에 더<br />

권장하는 방법 입니다.<br />

<strong>MC93CV402</strong> 는 최대 3.6V 에서 동작하고 3.3V 가 권장됩니다. 그 이상의 전압은 동작 범위 밖이고<br />

칩에 손상을 줄 수 있으므로 회로 설계 시 주의가 필요합니다.<br />

보다 안정적인 동작을 위하여 VDD_INT, VDD_PWM, VDD_IO 가 분리되어 있습니다. 하지만<br />

외부에서는 같은 전원 소스에 묶여있어도 무방합니다.<br />

January 23, 2013 Ver. 1.7 11


<strong>MC93CV402</strong><br />

5.2 클럭 공급 방법<br />

6MHz<br />

Resonator<br />

1(3)<br />

2(4)<br />

XI<br />

XO<br />

<strong>MC93CV402</strong><br />

VDD<br />

VSS<br />

9,36,44(2,6)<br />

3,10,42(5,7)<br />

+3.3V<br />

GND<br />

43(1)<br />

PLLC<br />

250~270pF<br />

20K<br />

1nF<br />

GND<br />

GND<br />

(*주: 괄호 안의 핀 번호는 SOP-20 의 핀 번호 임)<br />

동작 클럭은 반드시 6MHz 를 사용해야 합니다. 크리스탈이나 레조네이터 타입 모두 사용<br />

가능합니다.<br />

Figure 5-2 클럭 공급 방법<br />

PLLC 에 연결되는 PLL 회로는 위와 동일하게 만들어 주십시오. 위 회로에 사용된 저항,캐패시터<br />

값은 권장되는 값이므로 특별한 이유가 없다면 그대로 구성하여 주십시오.<br />

January 23, 2013 Ver. 1.7 12


<strong>MC93CV402</strong><br />

6. SPI 제어 명령<br />

<strong>MC93CV402</strong> 는 SPI 통신 방식을 사용하며 하나의 명령 프레임은 3 개의 바이트로 이루어져<br />

있습니다.<br />

6.1 SPI 타이밍<br />

min.<br />

2us<br />

min.<br />

16us<br />

min.<br />

500us<br />

min. min.<br />

500us 500us<br />

SSB<br />

SCK<br />

min. Next Cmd<br />

8ms<br />

while playing (note1)<br />

MOSI<br />

CMD1 ARG1 ARG2<br />

MISO<br />

STS READ1 READ2<br />

Internal<br />

State<br />

Idle<br />

Max<br />

. 5us<br />

Playing<br />

Figure 6-1 SPI 명령 프레임 타이밍<br />

• CMD1: 제어 코드<br />

• ARG1,ARG2: 명령어 인수<br />

• STS: 상태 플래그<br />

• READ1,READ2: 응답 값<br />

SSB 신호가 LOW 로 깔리는 것은 명령 프레임의 시작을 의미합니다. 따라서 항상 LOW 로<br />

깔리면서 시작하고 명령이 끝난 뒤에는 HIGH 상태로 바꿔주어야 합니다.<br />

바이트와 바이트 사이에 500us 이상 딜레이를 주어야 하며 하나의 명령을 보낸 뒤에도<br />

500usec 이상 딜레이를 주고 다음 명령을 보내야 합니다.<br />

Note1) 주의 할 점은 재생 중에 보내는 명령은 바로 처리 되지 않을 수 있기 때문에 프레임 사이에<br />

8msec 이상 딜레이를 주어야 합니다.<br />

January 23, 2013 Ver. 1.7 13


<strong>MC93CV402</strong><br />

Read data at “Rising edge”<br />

SCK<br />

MOSI D0 D1 D2 D3 D4 D5 D6 D7<br />

MISO D0 D1 D2 D3 D4 D5 D6 D7<br />

SSB<br />

6-2 SPI Byte 타이밍<br />

SPI 통신 에서 데이터는 SCK 가 HIGH 일 때 값이 유효 합니다. 즉 데이터 변경은 SCK 가 LOW 일 때<br />

이루어 저야 합니다. 이를 Polarity 라고 합니다.<br />

또한 SCK 는 통신하지 않을 때 LOW 상태로 있다가 통신을 시작합니다. 이를 Phase 라고 하며<br />

반대인 SPI 도 있습니다.<br />

Polarity 와 Phase 는 반드시 맞추어 주어야 합니다. 이는 MCU 마다 다를 수 있고 선택 가능한 경우도<br />

있습니다. 반드시 확인하여 동일하게 맞추어 주십시오.<br />

SPI 마스터는 일반 I/O 로 구현하여도 복잡하지 않기 때문에 위 포맷에 맞추어 일반 I/O 로 제어 하는<br />

방법도 권장 됩니다.<br />

January 23, 2013 Ver. 1.7 14


<strong>MC93CV402</strong><br />

6.2 제어 코드<br />

모든 3 바이트 제어 명령의 시작은 다음에 열거된 제어코드로 시작 됩니다.<br />

Table 6-1 제어코드 일람<br />

재생<br />

음량<br />

제어<br />

CMD 16 진수 기 능 사 용 법<br />

Q 0x51 지정 뱅크를 재생 0x51,mm,nn : 16 진수 mmnn 번째 뱅크 재생<br />

P 0x50 지정 뱅크를 재생함<br />

S 0x53 재생을 정지함<br />

X 0x58 모든 재생을 취소 0x58,0x00,0x00<br />

0x50,bank_number,mode<br />

(mode=0x01:single,mode=0x10:repeat)<br />

0x53,which,0x00<br />

(which=1:speex channel, which=2:adpcm<br />

channel)<br />

M 0x4D SPEEX 볼륨 지정 0x4D,vol,0x00 (vol= 0x00 ~ 0x7F)<br />

N 0x4E ADPCM 볼륨 지정 0x4E,vol,0x00 (vol= 0x00 ~ 0x7F)<br />

V 0x56 Volume normalize value 0x56,vol,0x00 (shift value=0x00 ~ 0x0F)<br />

F<br />

0x46<br />

SPI FlashROM bypass<br />

mode<br />

0x46,0x00,0x00<br />

Serial FLAHS 와 직접 SPI 통신하는 채널 생성<br />

“7.10 By Pass Mode” 참조<br />

I 0x49 지정 포트를 직접 읽기 0x49,port1,port2<br />

O 0x4F 지정 포트에 직접 쓰기 0x4F,port,data<br />

r 0x72 XDATA 읽기 0x72,mm,nn : xdata 의 0xmmnn 번지 읽기<br />

(<strong>MC93CV402</strong> 내부의 xdata 영역 읽기)<br />

c 0x63 코드 메모리 읽기 0x63,mm,nn : <strong>co</strong>de 의 0xmmnn 번지 읽기<br />

i 0x69 내부 RAM 읽기 0x69,mm,nn : RAM 의 0xmm 번지 읽기<br />

D 0x44 DAC 샘플링 값을 지정<br />

C 0x43 재생 프로파일 설정<br />

K 0x48 PLL 설정<br />

(“7.5 재생 상태 확인“참조)<br />

0x44,mm,xx : DAC 값을 mm 으로 설정<br />

(ddac_<strong>co</strong>n 레지스터)<br />

0x43,mm,nn : 재생프로파일을 mm 으로 설정.<br />

nn 은 항상 0x00<br />

arg1=0: PLL OFF<br />

arg1=1: PLL ON<br />

arg1=2: PLL/2<br />

arg1=0xFE: set PLLD and turn on PLL<br />

- 위 표의 모든 숫자는 16 진수 임.<br />

- 주의: 재생 커맨드를 주기 전에 반드시 PLL 을 켜 주어야 합니다<br />

(0x48-0x01-0x00 커맨드를 전송합니다.)<br />

- 주의: 모든 읽기 명령은 다음 번 커멘드를 보내면서 받아 집니다.<br />

January 23, 2013 Ver. 1.7 15


<strong>MC93CV402</strong><br />

6.3 제어 포트<br />

제어 명령 중 0x49(‘I) 와 0x4F(‘O’)명령을 이용하면 <strong>MC93CV402</strong> 의 내부 상태 정보를 읽어 오거나<br />

바꿀 수 있습니다. 이 때 읽거나 쓰는 대상을 “제어 포트”라 하며 다음과 같은 것들이 있습니다.<br />

Table 6-2 제어 포트 일람<br />

16 진수 명 칭 설 명 비 고<br />

0x00 PLAY_STS 재생 상태 읽기 전용<br />

0x01 ‘B’ ‘B’(0x42) 리턴 (테스트 용) 읽기 전용<br />

0x02 0x03 0x03 리턴 (테스트 용) 읽기 전용<br />

0x80 R0DA sfr R0DA 값 읽기/쓰기<br />

0x86 SCCR Clock Control Register 7.11STOP 모드 참조<br />

0x87 PCON Power Control Regster<br />

0x96 T0MR<br />

Timer 0 Mode Register<br />

VM(Voice Message)에서 기본 주기 설정에 사용.<br />

0x9D R0IO sfr R0IO 값 읽기/쓰기<br />

0x94 R0PU sfr R0PU 값 읽기/쓰기<br />

0x85 R0OD sfr R0OD 값 읽기/쓰기<br />

0x84 R0DB sfr R0DB 값 읽기/쓰기<br />

0x88 R1DA sfr R1DA 값 읽기/쓰기<br />

0x89 R1IO sfr R1IO 값 읽기/쓰기<br />

0x8A R1PU sfr R1PU 값 읽기/쓰기<br />

0x8B R1OD sfr R1OD 값 읽기/쓰기<br />

0x8C R1DB sfr R1DB 값 읽기/쓰기<br />

0x90 R2DA sfr R2DA 값 읽기/쓰기<br />

0x91 R2IO sfr R2IO 값 읽기/쓰기<br />

0x92 R2PU sfr R2PU 값 읽기/쓰기<br />

0x93 R2OD sfr R2OD 값 읽기/쓰기<br />

0x94 R2DB sfr R2DB 값 읽기/쓰기<br />

0x98 R3DA sfr R3DA 값 읽기/쓰기<br />

0x99 R3IO sfr R3IO 값 읽기/쓰기<br />

0x9A R3PU sfr R3PU 값 읽기/쓰기<br />

0x9B R3OD sfr R3OD 값 읽기/쓰기<br />

0x9C R3DB sfr R3DB 값 읽기/쓰기<br />

0xD9 SF_SPEED SPI FlashROM Speed 값 읽기/쓰기<br />

0x03 이면 STOP<br />

0x01 이면 SLEEP<br />

기본값 = 0x81<br />

January 23, 2013 Ver. 1.7 16


<strong>MC93CV402</strong><br />

이 중 재생 상태 플래그는 읽기 전용으로 다음과 같은 비트 플래그로 구성되어 있습니다.<br />

PLAY_STS<br />

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0<br />

- ADPCM SPEEX - - - START<br />

ADPCM ADPCM 효과음 재생 상태 플래그<br />

0 : ADPCM 효과음 재생 상태가 아님<br />

1 : ADPCM 효과음 재생 상태임<br />

SPEEX SPEEX 재생 상태 플래그<br />

0 : SPEEX 재생 상태가 아님<br />

1 : SPEEX 재생 상태임<br />

-<br />

-<br />

START 음성 시작 플래그<br />

0 : 재생/정지 중<br />

1 : 커멘드 입력 후 대기 상태/ 재생이 시작되면 0 이 됨.<br />

January 23, 2013 Ver. 1.7 17


<strong>MC93CV402</strong><br />

7. 주요 기능 사용 방법<br />

7.1 초기화 방법<br />

<strong>MC93CV402</strong> 에서 음성을 출력하기 전에, 반드시 아래와 같은 수순으로 초기화하여야 합니다.<br />

Table 7-1 초기화 방법<br />

순서 명령어 전송값 설 명<br />

1 ‘D’ 0x44-0x15-0x00 DDAC_CON=0x15<br />

2 ‘K’ 0x4B-0xFE-0xE1 PLLD=0xE1 and PLL Enable<br />

3 ‘O’ 0x4F-0x84-0xFF SPI 포트의 Debounce Enable<br />

4 ‘V’ 0x56-0x06-0x00 Normalize Shift 값을 6 으로 설정<br />

5 ‘M’ 0x4D-0x7F-0x00 SPEEX 출력 볼륨을 0x7F 으로 설정<br />

6 ‘N’ 0x4E-0x7F-0x00 ADPCM 출력 볼륨을 0x7F 으로 설정<br />

7 ‘O’ 0x4F-0x08-0x02 sf_dma_speed=0x02<br />

8 ‘O’ 0x4F-0xD9-0x02 sf_cache_speed=0x02<br />

9 ‘C’ 0x43-0x05-0x00 Profile No.5: SPEEX=12K, ADPCM=12K<br />

단, 전원 공급 후 초기화 전에 최소한 한번은 nRESET 포트를 LOW 로 2us 이상 유지했다가 HIGH 로<br />

만들어서 <strong>MC93CV402</strong> 를 리셋 해주어야 합니다.<br />

January 23, 2013 Ver. 1.7 18


<strong>MC93CV402</strong><br />

7.2 재생<br />

명령어(0x50-‘P’)<br />

지정한 뱅크의 음성을 재생합니다.<br />

Bank 는 재생할 음성의 뱅크 값이며, Type 은 재생 형태를 의미합니다.<br />

Type=0x01 : 한번만 재생함.<br />

Type=0x10 : 반복 재생함<br />

CSB<br />

SCK<br />

MOSI<br />

0x50(‘P’) Bank Type<br />

MISO<br />

STS READ1 READ2<br />

Internal<br />

State<br />

Idle<br />

Playing<br />

7.3 정지<br />

Figure 7-1 재생 명령어 타이밍도<br />

정지 명령어 0x53(‘S’)-Type-0x00 사용.<br />

현재 재생 중인 음성을 정지합니다.<br />

Type 은 재생 형태를 의미합니다.<br />

Type=0x01 : Speex 음성 재생을 정지함.<br />

Type=0x02 : ADPCM 효과음 재생을 정지함.<br />

단, VM(Voice Message)로 여러 음원을 연속하여 재생할 경우 현재 재생중인 음 원만 정지 합니다. 한번에<br />

모두 멈추시려면 ‘모든 재생 취소’ 명령을 사용하십시오.<br />

CSB<br />

SCK<br />

MOSI<br />

0x53(‘S’) Type 0x00<br />

MISO<br />

STS READ1 READ2<br />

Internal<br />

State<br />

Idle<br />

Playing<br />

Figure 7-2 정지 명령어 타이밍도<br />

January 23, 2013 Ver. 1.7 19


<strong>MC93CV402</strong><br />

7.4 모든 재생 취소<br />

정지 명령어 0x58(‘X’)-0x00-0x00 사용.<br />

현재 재생 중 이거나 예약된 모든 음성 재생을 취소합니다.<br />

주의 할 점은 취소가 완료되는데 시간이 필요하다는 점 입니다. 또한 재생 중에는 커멘드가 바로<br />

처리 되지 않을 수 있기 때문에 취소 명령 송신 후 8mse 이상 기다린 후 “7.5 재생 상태 확인” 에서<br />

소개하는 방법으로 재생이 완전히 멈추었는지 확인하고 다음 명령을 보내야 합니다.<br />

CSB<br />

SCK<br />

MOSI<br />

0x58(‘X’) 0x00 0x00<br />

MISO<br />

STS READ1 READ2<br />

Internal<br />

State<br />

Idle<br />

Playing<br />

Figure 7-3 모든 재생 취소 명령어 타이밍도<br />

7.5 재생 상태 확인<br />

제어 포트 중 PLAY_STS 를 읽으면 소리의 재생 상태를 확인 할 수 있습니다. 하지만 VM(Voice<br />

Message)가 완전히 끝났는지 확인하려면 다른 방법이 추가로 필요합니다. VM 가 끝나지 않았더라도<br />

W(Wait)같은 커멘드를 만나서 재생 중인 소리가 없으면 PLAY_STS 는 현재 재생 중인 소리가<br />

없다고 표시되기 때문 입니다.<br />

따라서 VM 이 완료되었는지 확인 하려면 0x69(‘i')커멘드를 사용합니다. 0x69(‘i')커멘드로<br />

0x08 의 값을 읽어봤을 때 0x80 이 리턴 되면 처리할 VM 이 남아 있는 것이고 0x00 이 리턴 되면 더<br />

이상 처리할 VM 이 없다는 의미 입니다.<br />

주의 할 점은 맨 마지막 커멘드 가 처리 되는 동안은 남아 있는 VM 이 없으므로 ‘i'커멘드로 읽은<br />

값이 0x00 이라는 점 입니다. 따라서 VM 의 마지막 커멘드가 소리 재생 이라면 PLAY_STS 를<br />

읽어서 소리재생이 완료 되었는지 확인 해야 합니다. 만일 마지막 커멘드가 소리 재생이 아닌<br />

커멘드라면 처리에 걸리는 시간을 계산해서 감안해야 합니다. W(Wait)커멘드는 지정한 시간만큼<br />

걸릴 것이고 다른 커멘드 들은 수십 마이크로 초 이내에 처리됩니다.<br />

일반적으로 VM 의 마지막에 W(Wait)커멘드를 사용할 필요가 없다는 점을 감안해서 마지막<br />

커멘드가 W(Wait)커멘드가 아니고 다른 커멘드의 처리 시간은 무시한다고 가정하면 다음과 같은<br />

방법으로 VM 이 재생중인 지 확인할 수 있습니다.<br />

January 23, 2013 Ver. 1.7 20


<strong>MC93CV402</strong><br />

- send_byte()는 SPI 로 1 바이트를 송/수신 하는 함수.<br />

- delay_500us()는 한 바이트 송신 후 500us 의 딜레이를 만드는 함수.<br />

- V_LCS(); 는 Chip Select 신호를 LOW 로 만드는 함수(VoiceIC activate).<br />

- V_HCS(); 는 Chip select 신호를 HIGH 로 만드는 함수(VoiceIC deactivate).<br />

int vm_check()<br />

{<br />

int r1,r2,r3;<br />

//다음 커멘드에서 PLAY_STS 가 리턴 되도록 설정.<br />

V_LCS();<br />

r1=send_byte('I');<br />

delay_500us();<br />

r1=send_byte(0x00);<br />

delay_500us();<br />

r1=send_byte(0x00);<br />

delay_500us();<br />

V_HCS();<br />

delay_500us();<br />

//내부 0x08 의 값을 읽어 오는 명령.<br />

V_LCS();<br />

r1=send_byte('i');<br />

delay_500us();<br />

r2=send_byte(0x08);<br />

delay_500us();<br />

r3=send_byte(0x00);<br />

delay_500us();<br />

V_HCS();<br />

}<br />

return r2+r3;<br />

위 코드에서 r2 에는 이전 ‘I’명령에 의해 PLAY_STS 값이 들어 있고, r3 에는 ‘i'명령에 의해 내부<br />

0x08 의 값이 들어 있게 됩니다. 따라서 r2 + r3 값이 0 이 아니면 VM 은 재생 중이란 뜻이 됩니다.<br />

January 23, 2013 Ver. 1.7 21


<strong>MC93CV402</strong><br />

7.6 음량 조절<br />

<strong>MC93CV402</strong> 에는 각 음성 별로 128 레벨의 음량 조절 기능이 있습니다.<br />

각 볼륨 값은 부호가 있는 1Byte 값으로서 -128 부터 +127 까지 설정 가능합니다.<br />

(따라서 0x7F 보다 큰 값은 음수로 인식 됩니다.)<br />

프로파일에 따른 음성 구성은 아래 도표를 참조하십시오.<br />

SPEEX<br />

sampling rate<br />

<strong>co</strong>nversion<br />

Speex volume (CMD=0x4D)<br />

DAC<br />

ADPCM<br />

sampling rate<br />

<strong>co</strong>nversion<br />

Adpcm volume (CMD=0x4E)<br />

Normalization shift (CMD=0x56)<br />

Figure 7-4 재생 음성 흐름도<br />

SPEEX 에 의해 재생되는 음성과 ADPCM 에 의해 재생되는 음량을 각각 조절 할 수 있으며 합성된<br />

후의 음량에 대한 조절도 가능합니다.<br />

Normalization shift 에 의한 볼륨 조절은 다음과 같은 식으로 표현 됩니다.<br />

January 23, 2013 Ver. 1.7 22


음량의 db 표기<br />

<strong>MC93CV402</strong><br />

본 매뉴얼의 초기화 값인 ‘Normalized Shift: 6, Volume: 127’을 기준(0dB)로 정리한 테이블<br />

입니다.<br />

dB<br />

Normalized<br />

Shift Value<br />

7-2 음량의 dB 표기 및 설정 값<br />

Volume Value<br />

Normalized<br />

Volume Value<br />

dB<br />

HEX DEC<br />

Shift Value<br />

HEX DEC<br />

12 4 7E 126 -11 6 24 36<br />

11 4 70 112 -12 6 20 32<br />

10 4 64 100 -13 6 1C 28<br />

9 4 59 89 -14 6 19 25<br />

8 4 4F 79 -15 6 17 23<br />

7 4 47 71 -16 6 14 20<br />

6 5 7E 126 -17 6 12 18<br />

5 5 71 113 -18 7 10 16<br />

4 5 64 100 -19 8 E 14<br />

3 5 59 89 -20 9 D 13<br />

2 5 50 80 -21 10 B 11<br />

1 5 47 71 -22 11 A 10<br />

0 6 7F 127 -23 12 9 9<br />

-1 6 71 113 -24 13 8 8<br />

-2 6 65 101 -25 14 7 7<br />

-3 6 5A 90 -26 ~ -27 15 6 6<br />

-4 6 50 80 -28 ~ -29 17 5 5<br />

-5 6 47 71 -30 ~ -31 19 4 4<br />

-6 6 40 64 -32 ~ -34 21 3 3<br />

-7 6 39 57 -35 ~ -38 24 2 2<br />

-8 6 33 51 -39 ~ -48 28 1 1<br />

-9 6 2D 45 -49 38 0 0<br />

-10 6 28 40<br />

주의: 초기값 보다 크게 볼륨을 설정할 경우 잡음이 생겨 음질이 떨어질 수 있습니다.<br />

January 23, 2013 Ver. 1.7 23


<strong>MC93CV402</strong><br />

7.7 재생 속도<br />

재생 속도는 재생 샘플링 레이트 값을 변경 함으로서 조절할 수 있습니다. 이는 0x44(‘D’) 커맨드를<br />

통해 ddac_<strong>co</strong>n 레지스터에 값을 설정함으로써 변경이 가능합니다.<br />

재생 샘플링 레이트 값에 대한 도표는 아래와 같습니다.<br />

Table 7-3 재생 샘플링 레이트 설정(ddac_<strong>co</strong>n 레지스터)<br />

ddac_<strong>co</strong>n 샘플링 레이트(@ 6.144MHz) 샘플링 레이트(@ 6MHz) 비 고<br />

0x1D 8 KHz 7812.50 Hz x16 oversampling<br />

0x15 12 KHz 11718.75 Hz x16 oversampling<br />

0x19 16 KHz 15625.00 Hz x16 oversampling<br />

0x11 24 KHz 23437.50 Hz x16 oversampling<br />

0x1B 32 KHz 31250.00 Hz x8 oversampling<br />

따라서 사용하는 시스템 클럭에 맞게, 음 원 생성시 샘플링 레이트를 위와 같이 맞추어 주어야<br />

합니다. 아니면 반대로 음 원 생성시 맞춘 샘플링 레이트에 맞게 시스템 클럭을 사용해야 합니다.<br />

일반적으로 6MHz 레조내이터를 많이 사용하므로 이에 맞추어 음 원 데이터를 생성하길 권장합니다.<br />

January 23, 2013 Ver. 1.7 24


<strong>MC93CV402</strong><br />

7.8 재생 프로파일<br />

SPEEX 와 ADPCM 의 비트 레이트는 다음 7 가지 조합 중 한가지로 설정할 수 있습니다.<br />

Table 7-4 음성 조합 프로파일<br />

Profile No. SPEEX ADPCM 비고<br />

1 8K 8K 1:1<br />

2 8K 12K 1:1.5<br />

3 8K 16K 1:2<br />

4 12K 8K 1.5:1<br />

5 12K 12K 1:1<br />

6 12K 16K 1.5:2 *Note<br />

7 16K 16K 1:1 *Note<br />

Note : Profile No. 6 번과 7 번은 ADPCM 과 SPEEX 동시 재생이 지원되지 않고, 한 번에 하나씩만 재생<br />

됩니다.<br />

위의 프로파일에서 생성된 음성을 필터를 거쳐 재생 샘플링 레이트를 올리는 Up-Sampling 기능이<br />

있습니다. 이 Up-Sampling 기능을 사용하여 기존은 낮은 레이트의 음성의 품질을 개선하는 것이<br />

가능합니다. Up-Sampling 에 종류는 아래 표와 같습니다.<br />

Table 7-5 Up-Sampling 리스트<br />

No.<br />

Up-Sampling Rate<br />

0x00 1.0 -<br />

0x10 2.0 8K16K<br />

0x20 1.5 8K12K<br />

0x30 1.25 12K16K<br />

재생 프로파일 및 Up-Sampling 설정 변경은 0x43(‘C’) 커맨드로 하며, 파라메터 값으로 프로파일<br />

값과 Up-Sampling 값을 합한 것을 파라메터로 지정 합니다.<br />

예를 들어 “SPEEX 8K + ADPCM 8K” 조합은 Profile No 가 “0x01”이고, Up-Sampling No 는<br />

2 배를 의미하는 “0x10”을 사용한다면, 0x43(‘C’) 커맨드의 파라메터 값은<br />

이 됩니다.<br />

0x01 + 0x10 = 0x11<br />

Table 7-6 재생 프로파일 설정 예<br />

파라메터값. 조합 방식 재생 샘플링레이트 DDAC_CON 값<br />

0x01 SPEEX 8K + ADPCM 8K 8K 0x1D<br />

0x11 SPEEX 8K + ADPCM 8K 16K (2 배 재생) 0x19<br />

0x32 SPEEX 8K + ADPCM 12K 16K (1.25 배 재생) 0x19<br />

0x21 SPEEX 8K + ADPCM 8K 12K (1.5 배 재생) 0x15<br />

January 23, 2013 Ver. 1.7 25


<strong>MC93CV402</strong><br />

7.9 포트 값 읽기<br />

포트 값을 읽기 위해서는 두 번의 명령 사이클로 구성 되며, 먼저 읽기 명령어 지정으로 읽을<br />

포트를 지정한 후, **다음 사이클**에서 값을 읽어 냅니다.<br />

포트 값은 현재의 포트 값 읽기 명령어 0x49(‘I’)에서 인수로 전달하는 2 개의 어드레스 값을 다음<br />

명령어 처리시, 2 번 및 3 번 바이트에 리턴 시킵니다.<br />

이후로 모든 명령어에 대해 2 번, 3 번 바이트에는 읽기 명령어에서 지정한 어드레스 값을 자동으로<br />

리턴합니다. 초기 기준 값은 상태 플래그 값입니다.<br />

아래 그림은 포트 값 읽기에 대한 타이밍 도 입니다.<br />

Port read <strong>co</strong>mmand<br />

Play Command & Status and Input Port Results<br />

CSB<br />

SCK<br />

MOSI<br />

0x49 0x02(Addr 1) 0x03 (Addr 2)<br />

0x50 0x01 0x10<br />

MISO<br />

0x23 0x23 0x23<br />

0x23 0x41(‘A’)(Result 1) 0x03(Result 2)<br />

Figure 7-4 포트 읽기 타이밍도<br />

7.10 By Pass Mode<br />

By Pass Mode 는 컨트롤러와 Serial FLASH 를 직접 연결시켜 주는 모드 입니다.<br />

여기서 컨트롤러는 <strong>MC93CV402</strong> 를 제어하는 디바이스를 말하며, Serial FLASH 는 음원 데이터가<br />

저장된 롬을 말합니다. By Pass Mode 에서 컨트롤러는 마치 Serial FLASH 가 SPI 로 직접 연결된<br />

것처럼 Serial FLASH 와 통신합니다.<br />

이 모드로 진입하기 위한 커맨드는 0x46(‘F’)이며 2 번째와 3 번째 바이트는 아무 값이나 와도<br />

무방합니다. 예를 들어, „0x46 - 0x00 – 0x00‟ 커멘드를 송신하면 By Pass Mode 에 진입하게 됩니다.<br />

이 모드에서 빠져나오는 방법은 SPI 커멘드로 „0xFF – 0xFF‟를 송신하면 됩니다. 0xFF 는 Serila<br />

FLASH 의 제어 커멘드에 없기 때문에 Serial FLASH 를 제어하기 위해서 „0xFF – 0xFF‟를 송신할 일은<br />

없습니다. 물론 데이터 중간에는 0xFF 가 존재 할 수 있기 때문에 반드시 Chip Selection Signal 을<br />

Enable 한 뒤에 이어서 ‟ 0xFF – 0xFF‟ 를 보내주어야 합니다.<br />

January 23, 2013 Ver. 1.7 26


<strong>MC93CV402</strong><br />

7.11 STOP 모드<br />

음성을 재생하지 않을 경우 STOP 모드에 진입하여 전류 소모를 줄일 수 있으며 방법은 다음과<br />

같습니다.<br />

STOP 모드 진입<br />

STOP 모드는 다음 과 같은 방법으로 진입합니다. 다음 예제 코드에서 “voice_send_cmd(…)”는<br />

3 바이트의 SPI 명령을 보내는 함수 입니다.<br />

voice_send_cmd( 0x4F, 0x86, 0x0E ); // 클럭을 PLL 에서 6MHz 외부로 변경<br />

voice_send_cmd( 0x4F, 0x86, 0x00 ); // PLL 회로 정지<br />

voice_send_cmd( 0x4F, 0x87, 0x03 ); // STOP 모드 진입<br />

즉, 시스템 클럭을 PLL 에서 6MHz 외부 클럭으로 변경하고, PLL 클럭은 정지시킨 뒤, STOP 모드에<br />

진입 하면 됩니다. 이를 위해 포트 쓰기 명령인 0x4F(‘O’) 를 사용하여 내부의 SCCR(0x86) 레지스터와<br />

PCON(0x87)레지스터 값을 조작 한 것 입니다.<br />

Wake up<br />

RESET 포트로 리셋 하거나 SPI 통신으로 한 바이트가 수신 되면 STOP 모드에서 깨어 납니다.<br />

SPI 로 깨어난 경우 PLL 설정만 다시 해주면 되고, RESET 포트로 깨어난 경우 모든 초기화를 다시<br />

해주어야 합니다.<br />

혹시 모를 실수를 방지하기 위해서는 RESET 으로 깨어나는 방식을 권장 합니다. 보통 이미 만들어<br />

둔 RESET 신호 생성 함수와 초기화 함수를 다음과 같이 호출해 주면 됩니다.<br />

voice_hw_reset();<br />

ms_delay(15);<br />

voice_init();<br />

//reset 신호 생성<br />

//System 안정화를 위한 15msec 딜레이<br />

//VoiceIC 초기화 절차 수행<br />

만일 SPI 로 깨어나길 원한다면 다음과 같은 방식으로 깨어날 수 있습니다.<br />

voice_send_cmd(0x00,0x00,0x00);<br />

ms_delay(15);<br />

voice_send_cmd('K',0x01,0x00);<br />

ms_delay(2);<br />

이 때 다음 사항을 주의하여 주십시오.<br />

1) SPI 로 임의의 데이터를 보낸 후, System 안정화를 위해 6msec 이상 딜레이를 주어야 함.<br />

2) SPI 로 임의의 데이터를 보낼 때는 1 바이트만 보내도 되지만, 반드시 송신 후 SSB 를 HIGH 로<br />

만들어 통신 명령을 마무리 지어 야 함. (그래야 다음 명령이 제대로 전달 됨)<br />

January 23, 2013 Ver. 1.7 27


<strong>MC93CV402</strong><br />

7.12 Deep Power Down Mode<br />

<strong>MC93CV402</strong> 가 STOP 모드에 들어가더라도 Serial FLASH 는 standby 모드로 있습니다. 따라서<br />

Serial FLASH 도 Deep Power Down Mode 로 만들면 소모전류를 더 줄일 수 있습니다.<br />

다음은 3 개의 샘플의 소모 전류를 측정한 결과 입니다.<br />

<strong>MC93CV402</strong><br />

Table 7-7 Test Results of Power Consumption<br />

MX25L8005<br />

One of<br />

8 M bit Serial FLASH<br />

#1 #2 #3<br />

STOP Mode Standby Mode 2.54 2.41 2.75<br />

STOP Mode<br />

Deep Power Down<br />

Mode<br />

0.55 0.42 0.46<br />

(unit: uA)<br />

주의: 위 데이터는 스펙이 아닌 실험 결과 이오니 참고하시기 바랍니다..<br />

Deep Power Down Mode 와 함께 STOP 모드 진입<br />

사실 <strong>MC93CV402</strong> 가 직접 Serial FLASH 를 Deep Power Down Mode 로 만들 수는 없습니다. 대신<br />

By Pass 모드를 통해 사용자가 직접 Serial FLASH 를 제어 해야 합니다( ‘7.10 By Pass Mode’ 를<br />

참고하십시오). 예를 들어 ‘MX25L8005’는 0xB9 명령을 수신하면 Deep Power Down Mode 에<br />

들어가기 때문에 다음과 같은 코드를 사용하면 됩니다(대부분의 SPI 방식 Serial FLASH 에서<br />

동작합니다).<br />

voice_send_cmd( 0x46, 0, 0 );<br />

SCK = 1;<br />

SO = 1;<br />

// By Pass Mode 진입<br />

// Serial FLASH 에 맞게 클럭과 데이터 라인 상태 변경.<br />

CSS = 0;<br />

flash_send_a_byte( 0xB9 );<br />

CSS = 1;<br />

// Serial FLASH 를 Deep Power Down Mode 로 진입<br />

CSS = 0;<br />

voice_send_a_byte( 0xFF );<br />

voice_send_a_byte( 0xFF );<br />

CSS = 1;<br />

// By Pass Mode 해제<br />

SCK = 0;<br />

//<strong>MC93CV402</strong> 에 맞게 클럭과 데이터 라인 상태 변경.<br />

SO = 0;<br />

//다음 코드는 일반적인 STOP 모드 진입과 같습니다.<br />

voice_send_cmd( 0x4F, 0x86, 0x0E ); // 클럭을 PLL 에서 6MHz 외부로 변경<br />

voice_send_cmd( 0x4F, 0x86, 0x00 ); // PLL 회로 정지<br />

voice_send_cmd( 0x4F, 0x87, 0x03 ); // STOP 모드 진입<br />

January 23, 2013 Ver. 1.7 28


<strong>MC93CV402</strong><br />

// voice_send_cmd(…); 칩 선택 신호와 함께 3 바이트 SPI 데이터 송신.<br />

// CSS 는 칩 선택 신호용 포트, SCK 는 클럭, SO 은 MOSI 포트.<br />

// flash_send_a_byte(…); Serial FLASH 를 위한 SPI 한 바이트 송신 함수.<br />

// voice_send_a_byte(…); <strong>MC93CV402</strong> 를 위한 SPI 한 바이트 송신 함수.<br />

// <strong>MC93CV402</strong> SPI and MX25L8005 SPI 는 pole 과 phase 특성이 다르기 때문에 각각에 맞는 함수가<br />

필요함.<br />

Wake Up<br />

STOP 모드에서 깨어난 뒤 Serial FLASH 를 Deep Power Down Mode 에서 깨어나게 해야 합니다.<br />

예를 들어 ‘MX25L8005’는 0xAB 명령을 수신하면 Deep Power Down Mode 에서 깨어나기 때문에<br />

다음과 같은 코드를 사용하면 됩니다(대부분의 SPI 방식 Serial FLASH 에서 동작합니다).<br />

//After waked-up from STOP mode.<br />

voice_send_cmd( 0x46, 0, 0 );<br />

// By Pass Mode 진입<br />

CSS = 0;<br />

flash_send_a_byte( 0xAB );<br />

CSS = 1;<br />

// Deep Power Down Mode 해제<br />

CSS = 0;<br />

voice_send_a_byte( 0xFF );<br />

voice_send_a_byte( 0xFF );<br />

CSS = 1;<br />

//By Pass Mode 해제<br />

// voice_send_cmd(…); 칩 선택 신호와 함께 3 바이트 SPI 데이터 송신.<br />

// CSS 는 칩 선택 신호용 포트임.<br />

// flash_send_a_byte(…); Serial FLASH 를 위한 SPI 한 바이트 송신 함수.<br />

// voice_send_a_byte(…); <strong>MC93CV402</strong> 를 위한 SPI 한 바이트 송신 함수.<br />

// <strong>MC93CV402</strong> SPI and MX25L8005 SPI 는 pole 과 phase 특성이 다르기 때문에 각각에 맞는 함수가<br />

필요함.<br />

주의<br />

포트가 floating 상태이면 해당 포트를 통해 전류가 누설 될 수 있습니다. 예를 들어 SCK, CSS,<br />

MOSI 는 인풋 포트로서 HIGH 나 LOW 로 잡아주어야 합니다.<br />

January 23, 2013 Ver. 1.7 29


<strong>MC93CV402</strong><br />

8. 통신 테스트<br />

제어 포트 값을 읽는 기능을 이용하여 통신 이 제대로 되는지 테스트할 수 있습니다. 통신은<br />

PLL 회로가 잘못 구성되어 잇거나 Serial FLASH 가 없더라도 동작하기 때문에 통신을 위한 하드웨어<br />

구성( 통신 라인, 6MHz 클럭 )이 제대로 되어 있는지 확인할 수 있습니다.<br />

통신 테스트는 7.7 장에서 소개하는 포트 값 읽기를 해보는 것을 말합니다. 포트 중 0x01 과 0x02 는<br />

테스트를 위한 포트로서 읽었을 때 각각 0x42 와 0x03 을 리턴하는 포트 입니다.<br />

즉, 0x49-0x01-0x00 을 두번 연속해서 보내면, 두 번째 보낼 때 수신되는 값의 두 번 째 바이트를 통해<br />

0x42 가 읽힙니다.<br />

세 번째 바이트는 아무 값이나 보내도 무관하며, 처음 보낼 때 회신 되는 값은 무의미 합니다.<br />

8.1 실험 파형<br />

아래는 실제 통신 테스트를 측정한 파형입니다. 상단이 측정된 파형이고, 하단은 확대한 화면<br />

입니다. 각 파형의 의미는 아래 파형의 왼쪽에 명시되어 있습니다.<br />

“Figure 8-1 실험 파형 49_01_A”는 0x49-0x01-0x00 을 두 번 보내는 파형에서, 처음 바이트를 확대한<br />

모습입니다. 데이터는 녹색 클럭 라인이 HIGH 일 때의 값이 유효하고, MSB first 이므로 읽어 보면<br />

하늘색 라인을 통해 0x49 와 0x01 이 VoiceIC 로 들어가는 것을 볼 수 있습니다.<br />

“Figure 8-2 실험 파형 49_01_B”는 0x49-0x01-0x00 을 두 번째로 보냈을 때를 확대한 모습입니다.<br />

보시면 보라색 라인을 통해 VoiceIC 가 두 번째 바이트로 0x42 를 보내는 것을 알 수 있습니다.<br />

다음은 0x49-0x02-0x00 을 두번 보냈을 때의 첫 바이트와 두 번 째 바이트 입니다. 위와 같은<br />

요령으로 보시면 0x03 이 리턴되는 것을 볼 수 있습니다.<br />

January 23, 2013 Ver. 1.7 30


<strong>MC93CV402</strong><br />

Figure 8-1 실험 파형 49_01_A<br />

Figure 8-2 실험 파형 49_01_B<br />

January 23, 2013 Ver. 1.7 31


<strong>MC93CV402</strong><br />

Figure 8-3 실험 파형 49_02_A<br />

Figure 8-4 실험 파형 49_02_B<br />

January 23, 2013 Ver. 1.7 32


<strong>MC93CV402</strong><br />

9. VM(Voice Message)<br />

<strong>MC93CV402</strong> 에는 음성 메시지(VM) 조합 기능이 있습니다. 이 기능은, 단위 어절이나, 구분된<br />

음성을 서로 조합하여 하나의 음성 데이터로 만드는 기능입니다. 음성 데이터 지정 시 VM 으로<br />

지정하여 사용할 수 있습니다. 이 때, VM 문자열에는 재생용 제어코드를 이용하여 재생할 음성을<br />

순차적으로 연결 합니다.<br />

예를 들어 0x07 번 음성을 재생하라고 하면 0x08 과 0x09 번 음성을 연속해서 재생하도록<br />

0x07 번 음성 데이터를 설정해 둘 수 있습니다. 이때 0x07 번 음성데이터를 VM(Voice<br />

Message)라고 하며 0x08 과 0x09 번 음성을 연속 재생하라는 정보가 저장되게 됩니다. 따라서<br />

0x08 번 과 0x09 번을 미리 합성해서 만든 데이터를 0x07 번에 저장해 두는 것 보다 메모리를<br />

절약할 수 있습니다.<br />

이 VM 을 재생하는 것은 다른 음성 재생하는 방법과 동일합니다. 그리고 미리 VM 을 설정해 두는<br />

방법은 ABOV 에서 재공하는 WaveStudio 의 매뉴얼을 참고 하시기 바랍니다.<br />

9.1 ‘W’ Command<br />

사실 VM 은 SPI 커멘드 들로 이루어져 있습니다. 따라서 VM 재생은 재생하는 VM bank 에 저장된<br />

SPI 커멘드 들이 순차적으로 실행되는 것과 같습니다.<br />

여기에 SPI 커멘드에는 없지만 ‘W’라는 커멘드가 하나 더 사용됩니다. 이 두바이트 커멘드 W 는<br />

‘wait’을 의미하며 재생 사이에 지연을 만들어 냅니다. 좀더 엄밀히 말하자면 ‘W-0xNN’ 은 재생 중이던<br />

것을 마치고 NN 시간만큼 지연시간을 만듭니다.<br />

따라서 연속해서 재생하려면 ‘W’-0x00 커멘드가 필요하고, ADPCM 과 SPEEX 사운드를 동시에<br />

재생하려면 그 사이에 ‘W’커멘드가 있어서는 안됩니다.<br />

예를 들어, 0x07 이 ADPCM 음 원이고, 0x08 이 SPEEX 음 원이라고 가정했을 때,<br />

VM 이 “0x07 재생 + ‘W’-0x00 + 0x08 재생”이라면 0x07 음 원이 재생되고 0x08 이 재생됩니다.<br />

그리고 만일 VM 이 “0x07 재생+0x08 재생” 이라면 0x07 과 0x08 을 동시에 재생 합니다.<br />

만일 같은 SPEEX 재생 명령 사이나 ADPCM 사이에’W’커맨드가 없다면 처음 재생 명령은 실행되기<br />

전에 다음 명령에 의해 취소되어 버립니다.<br />

위 설명에서 NN 시간은 NN * ‘기본 주기’ 시간을 의미하고, ‘기본 주기’는 내부 타이머(Timer0)에 의해<br />

생성되는 주기를 말합니다.<br />

이 주기 시간은 다음 식에 의해 계산 됩니다.<br />

기본 주기<br />

[ ]<br />

그리고 T0MR[7:4] 의 기본 값은 ‘8’입니다. 따라서 기본 ‘주기 시간’은 다음과 같습니다.<br />

기본 주기 시간<br />

필요하다면 0x4F(‘O’) 포트 쓰기 커멘드로 T0MR 값을 수정하여 ‘주기 시간’변경도 가능합니다. 예를<br />

들어 0x4F-0x96-0x71 커멘드를 보내면, T0MR(@0x96) 값의 7~4 비트가 7 로 바뀌어서 기본 주기는,<br />

변경된 기본 주기<br />

January 23, 2013 Ver. 1.7 33


가 됩니다.<br />

<strong>MC93CV402</strong><br />

여기서 0x4F 는 특정 포트 값을 바꾸는 커멘드 이고, 0x96 번지(T0MR) 값을 0x71 로 바꾸라는 의미<br />

입니다.<br />

즉 T0MR 기본 값인 0x81 에서 상위 니블만 원하는 값 ‘7’로 바꾼 값 0x71 로 T0MR 을 설정하여 기본<br />

주기를 바꾼 예 입니다.<br />

January 23, 2013 Ver. 1.7 34


<strong>MC93CV402</strong><br />

10. SPI FlashROM 파일의 구조<br />

SPI 플래시 롬은 크게 세가지로 분류됩니다.<br />

외부 SPI FlashROM 에서 실행 될 수 있도록 앞부분의 0x8000 바이트 공간은 프로그램 영역으로<br />

되어 있습니다.<br />

이후 0x008000 번지에서부터 음성 데이터 영역이 됩니다.<br />

이 음성 데이터 영역은, 음성 데이터를 인덱싱 할 수 있도록, 인덱스 영역이 포함되어 있습니다.<br />

(음성테이블에서 0 번째는 사용하지 않습니다.)<br />

Table 10-1 롬 데이터 파일의 구조<br />

어드레스 설 명 비 고<br />

0x00_0000 자동 실행 프로그램 영역<br />

(0x00_0000 번지의 값이 0x02 일 경우, 자동 실행 됨)<br />

0x00_7FFF<br />

0x00_8000<br />

0x00_87FF<br />

0x00_8800<br />

음성 데이터 인덱스 테이블<br />

(8 바이트 단위 배치 – 256-index x 8-byte)<br />

음성 데이터 또은 VM 데이터<br />

Table 10-2 음성 데이터 인덱스 테이블의 구조<br />

위치 설 명 비 고<br />

0x00 데이터 위치 기준 어드레스 L (하위)<br />

0x01 데이터 위치 기준 어드레스 M (중위)<br />

0x02 데이터 위치 기준 어드레스 H (상위)<br />

0x03 미지정<br />

0x04 데이터 크기 L (하위)<br />

0x05 데이터 크기 M (중위)<br />

0x06 데이터 크기 H (상위)<br />

0x07 데이터 형태 0x00 : 미지정<br />

0x01 : 음성 데이터(Vo<strong>co</strong>der)<br />

0x02 : 효과 데이터(ADPCM)<br />

0x08 : WT 데이터<br />

0x40 : 음성 메시지 데이터(VM)<br />

January 23, 2013 Ver. 1.7 35


<strong>MC93CV402</strong><br />

11. 전기적 특성<br />

11.1 Absolute Maximum Ratings<br />

Table 11-1 Absolute Maximum Ratings<br />

Parameter<br />

Specifications<br />

Supply Voltage 2.7V ~ 3.6V<br />

Input Voltage<br />

-0.3V ~ VDD+0.3V<br />

Operating Temperature -40℃ ~ 85℃<br />

11.2 DC Characteristics<br />

Table 11-2 DC Characteristics<br />

Parameter Symbol MIN TYP MAX UNIT Condition<br />

Supply Voltage<br />

VDD_INT<br />

VDD_IO<br />

VDD_PWM<br />

2.7 3.3 3.6 V<br />

Operating Current I OP 30 mA Except VDD_PWM<br />

150 190 -<br />

2.7v VDD_PWM<br />

PWM output Current<br />

I PWM<br />

160 200 - 3.0v VDD_PWM<br />

mA<br />

180 220 - 3.3v VDD_PWM<br />

190 240 - 3.6v VDD_PWM<br />

Sleep Current I SLEEP 2 mA<br />

Stop Current I STOP 10 uA<br />

Input Voltage<br />

V IH<br />

V IL<br />

0.8 VDD<br />

0.2 VDD<br />

V<br />

Input Current<br />

Pull-up Resistance<br />

I IH 1<br />

I IL -1<br />

R RESETB 200K 400K<br />

R PORT 40K 70K<br />

uA<br />

Ω<br />

PWM Output Current I PWM 200 240 280 mA Load = 8 Ω<br />

January 23, 2013 Ver. 1.7 36


<strong>MC93CV402</strong><br />

11.3 AC Characteristics<br />

Table 11-3 Fundamental AC Characteristics<br />

Parameter Symbol PIN MIN TYP MAX UNIT<br />

Operating Frequency fMCP XI 6 MHz<br />

Oscillation Stabilization Time tMST1 XI, XO 6 ms<br />

External Clock “H” or “L” Pulse Width tCPW XI 90 ns<br />

External Clock Transition Time tRCP, tFCP XI 10 ns<br />

RESETB Input Pulse “L” Width tRST RESETB 2 us<br />

Reset to System Ready Time tSYS_READY SPI_SSB(P0[4]) 15 ms<br />

1/fMCP tCPW tCPW<br />

XI<br />

0.9VDD<br />

0.1VDD<br />

tRST<br />

tRCP<br />

tFCP<br />

RESETB<br />

0.8VDD<br />

0.2VDD<br />

tSYS_READY<br />

SPI_SSB<br />

Figure 11-1 Fundamental timing diagram<br />

January 23, 2013 Ver. 1.7 37


<strong>MC93CV402</strong><br />

Table 11-4 SPI AC Characteristics<br />

Parameter Symbol PIN MIN TYP MAX UNIT<br />

SSB Blank Time tSSB SPI_SSB(P0[4]) 1 us<br />

Clock Pulse Period tSCK SPI_SCK(P0[5]) 2 us<br />

Clock Pulse “H” or “L” Pulse Width tSCKH, tSCKL SPI_SCK(P0[5]) 1 ns<br />

Clock Pulse Transition Time tFSCK, tRSCK SPI_SCK(P0[5]) 30 ns<br />

Input Setup Time tDIS SPI_MOSI(P0[6]) 0.5 us<br />

Input Hold Time tDIH SPI_MOSI(P0[6]) 0.5 us<br />

Output Delay Time tDS SPI_MISO(P0[7]) 100 ns<br />

First Output Clock Delay Time tFOD SPI_MISO(P0[7]) 100 ns<br />

SPI_SSB<br />

tSSB<br />

tFSCK<br />

tFOD<br />

tSCK<br />

tRSCK<br />

SPI_SCK<br />

tSSB<br />

0.8VDD<br />

0.2VDD<br />

tSCKL<br />

tSCKH<br />

tDIS<br />

tDIH<br />

tFSCK<br />

tRSCK<br />

SPI_MOSI<br />

MSB<br />

LSB<br />

tDS<br />

tRSIN<br />

tFSIN<br />

SPI_MISO<br />

MSB<br />

LSB<br />

Figure 11-2 SPI timing diagram<br />

January 23, 2013 Ver. 1.7 38


<strong>MC93CV402</strong><br />

REVISION HISTORY ( I )<br />

Version 1.7 Jan.23, 2013 28 QFN PKG diagram 변경.<br />

Version 1.6 May.17, 2010 VDD 동작 범위 수정 및 설명 보완.<br />

DC Characteristic 에 I PWM 추가.<br />

Version 1.5 May.03, 2010 PLLD 초기값 변경(0xA3 -> 0xE1).<br />

동작 전류 20mA -> 30mA 로 변경.<br />

“음량의 dB 표기” 추가<br />

Version 1.47 Mar.23, 2010 "7.7 재생 속도" 보완<br />

"7.8 비트레이트" -> "7.8 재생 프로파일"로 변경<br />

Version 1.46 Mar.18, 2010 "6.1 SPI 타이밍” 수정.<br />

"7.4 모든 재생 취소" 수정.<br />

"7.12 Deep Power Down Mode" 수정.<br />

Version 1.45 Mar.08, 2010 “7.3 초기화 방법” 보완.<br />

“Table 7-3 음성 조합 프로파일“ 보완<br />

Version 1.44 Feb.18, 2010 “11.3 AC characteristics” 보완.<br />

“7.11 STOP 모드” 보완<br />

“7.12 Deep Power Down Mode” 추가<br />

Version 1.43 Feb.04, 2010 “11.3 AC characteristics” 보완.<br />

“7.10 By Pass Mode” 보완<br />

Version 1.4 Jan.26, 2010 “7.5 재상 상태 확인” 추가.<br />

“7.1 초기화 방법” 최적화.<br />

“6.2 제어 코드” 보완<br />

“6.1 SPI 타이밍” 보완.<br />

Version 1.33 Jan.14, 2010 “6.2 제어코드” 보완.<br />

Version 1.32 Jan. 6, 2010 “7.4 모든 재생 취소” 보완.<br />

Version 1.31 Dec.23, 2009 “7.3 정지” 보완.<br />

“7.4 모든 재생 취소” 추가.<br />

Version 1.3 Dec.21, 2009 “6.1 SPI 타이밍” 내용 보완.<br />

“6.2 제어코드” 보완.<br />

“Table 6-2 제어 포트 일람” 보완.<br />

“9.1 W <strong>co</strong>mmand” 추가.<br />

“Table 10-2 음성 데이터 인덱스 테이블의 구조” 보완.<br />

“Table 11-3 Fundamental AC Characteristics” 보완.<br />

Version 1.22<br />

“Table 6-1 제어코드 일람”의 설명 보완.<br />

Version 1.21 Dec. 7, 2009 “7.1 초기화 방법” 보완.<br />

“Figure 11-3 SPI 명령 프레임 타이밍” 보완.<br />

Version 1.2 Dec. 7, 2009 “6.2 제어코드” 보완.<br />

January 23, 2013 Ver. 1.7 39


<strong>MC93CV402</strong><br />

Version 1.1 Dec. 2, 2009 “6.3 제어포트” 보완.<br />

“7.4 음량 조절” 보완.<br />

“7.5 장과 7.6 장 순서 변경.<br />

“Table 7-5 재생 프로파일 설정 예” 보완.<br />

“7.9 STOP 모드” 추가.<br />

Version 1.06 Nove. 20, 2009 “3. 패키지 및 핀 구성” 보완.<br />

“7.1 초기화 방법” 보완.<br />

“7.8 By Pass Mode” 추가.<br />

Version 1.05 Nove. 02, 2009 Control Port table is <strong>co</strong>rrected.<br />

Version 1.04 Octo. 29, 2009 Revised.<br />

Version 1.032 Sept. 30, 2009 Revised/Sampling rate.<br />

Version 1.02 July 17, 2009 Revised/Initialization process.<br />

Version 1.01 July 17, 2009 Revised.<br />

Version 1.0 June 30, 2009 Created.<br />

January 23, 2013 Ver. 1.7 40

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!