VS1003 자체적으로 제공하는 테스트 모드를 이용하여 sine파를 생성 시키는데 문제 없음을 확인한 다음, 실제 mp3파일 일부분을 추출해서 스피커로 재생시켜 보도록 하겠다. const unsigned char MP3_DATA[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0..
앞의 글에서 vs1003이 정상적으로 동작될 수 있는지 확인해 보기 위하여 특정 sine파를 생성해 보았다. 또한 적절한 음량 설정이 되는지도 같이 확인해 보았다.이번 글에서는 사용자 입력을 받아서 주파수값과 볼륨 크기를 변경 시켜 보는 기능을 구현해 보기로 하겠다.먼저 UART를 통한 사용자 입력을 제대로 받아들이는지 확인해 보는 코드부터 만든다. void loop(void) { switch (getc()) { case 'v': printf("Volume Down 1\n"); break; case 'V': printf("Volume Up 1\n"); break; case '': printf("Volume Up 10\n"); break; case 'i': printf("FsIdx Down\n"); bre..
VS1003 문서를 보면 몇가지 자체적으로 시험을 해 볼수 있는 기능을 제공하는것을 알 수 있다.이번 글에서는 그중에서 Sine파를 생성 시켜 보는 방법에 대해서 설명하도록 하겠다.테스트 모드로 전환하기 위해서 SCI_MODE 레지스터에 있는 SM_TESTS비트를 1로 만든다. 이 상태에서 SDI 버스로 특정 데이터를 내 보내면 미리 설정된 시험 동작을 수행하게 된다.Sine파를 생성하기 위한 데이터는 0x53 0xEF 0x6E n 0 0 0 0 이다. 여기에서 n은 다음과 같은 표를 참조하여 설정하면 된다.n 바이트 값의 상위 3비트에 해당되는 FsIdx값에 따라 Fs값이 결정된다. 이 값에 n 값의 하위 5비트 값을 곱한다음 128로 나누면 그 값에 해당되는 주파수를 가지는 sine 파가 발생하게 된..
회로를 구성한 후 첫번째로 해야할 일은 vs1003안에 있는 control register를 제대로 읽어오는지 확인해 보는 것이다.먼저, SPI를 비롯하여 vs1003과 연결된 GPIO 핀 설정부터 한다. #define VS1003_RESET GPIO_PIN1 #define VS1003_DREQ GPIO_PIN2 #define VS1003_DCS GPIO_PIN3 #define VS1003_CCS GPIO_PIN4 #define VS1003_SCK GPIO_PIN5 #define VS1003_MISO GPIO_PIN6 #define VS1003_MOSI GPIO_PIN7 static inline void vs1003_enable_ccs(void) { gpio_out_reset(GPIO_PORT_A, VS..
이번 프로젝트에서는 임베디드 시스템에서 MP3 파일을 재생하기 위한 vs1003 칩을 다루어보도록 하겠다.VS1003 칩 제조사 홈페이지에 들어가보면 datasheet 문서와 참고 자료를 다운 받을 수 있으므로, 관련 자료를 다운 받은 후 어떤 내용이 있는지 충분히 이해되도록 여러번 반복해서 읽어 본다.Datasheet 첫번째 페이지에 vs1003의 내부에 어떤것들이 들어있는지와 칩 외부로 나오는 핀들에 대한 설명을 한눈에 볼 수 있는 블럭도가 있다. Datasheet에 보면 reference schematic이 제공되므로 직접 하드웨어를 만들수도 있겠지만, 편의상 비교적 저렴한 가격에 구입할 수 있는 상용 제품을 이용하여 프로젝트를 진행하도록 하겠다.이 프로젝트에서 사용하게 될 모듈은 다음과 같은 제품..