티스토리 뷰

프로젝트/vs1003

Sine Wave 주파수 변경

Just4Fun 2017. 6. 24. 09:09

앞의 글에서 vs1003이 정상적으로 동작될 수 있는지 확인해 보기 위하여 특정 sine파를 생성해 보았다.  또한 적절한 음량 설정이 되는지도 같이 확인해 보았다.

이번 글에서는 사용자 입력을 받아서 주파수값과 볼륨 크기를 변경 시켜 보는 기능을 구현해 보기로 하겠다.

먼저 UART를 통한 사용자 입력을 제대로 받아들이는지 확인해 보는 코드부터 만든다.

3번 줄에 있는 getc() 함수를 통해서 UART로 한 글자를 입력받아 그 값에 따른 동작을 수행하는지 확인해 보는 코드이다.

경험히 많지 않은 개발자가 흔히 하기 쉬운 실수중에 하나가, 여러 가지 기능이 포함된 모든 코드를 다 만들고 난 다음 원하는 최종 기능이 잘 동작되는지 확인해 보는 것이다.  운좋게 한번만에 원하는대로 동작하면 다행이겠지만, 현실에서는 그런 경우가 극히 드물다.  예를 들면 인터넷에서 다른 개발자가 만들어서 공개한 소스코드를 입수해서 가지고 있는 보드에 실행해보면 잘 동작되는 경우보다 정상적으로 동작되지 않을 확률이 크다.

만약 원하는 기능이 제대로 수행되지 않을때 어디가 잘못되었는지 디버깅해야 되는데 경험이 많지 않은 경우에는 엉뚱한 곳에서 문제점을 찾으려고 노력하는 안타까운 경우가 종종 있다.

위의 코드와 같이 사용자의 입력값이 볼륨 설정에 해당 되는 글자인경우 실제 보드에서는 볼륨 값이 변경되지 않을 때 vs1003의 볼륨 설정과 관련된 코드만 계속 분석하게 된다.  그러나 실제로는 UART로부터 글자를 제대로 받아 오지 못하기 때문에 동작이 제대로 안되었을수도 있다.

따라서 제일 먼저 확인해야할 기능은 UART로부터 제대로 입력을 처리하는지부터 확인하여야하고, 그 다음에 vs1003의 해당 기능이 동작 되는지 확인하여야 한다.

보드에 실행파일을 로딩한 후 실행 시켜 키보드에서 특정 글자를 입력하였을때 해당 메시지가 정확하게 출력되는지 확인해 본다.  이 과정을 확인한 후 다음 단계로 넘어가야 한다.

볼륨 변경 기능을 수행하기 위한 코드는 위와 같다.  볼륨 값이 0일때가 최대이고 254일때가 최소이므로 해당 범위를 벗어나지 않도록 하는것에 주의 하여야 한다.

Sine파 생성에 관계된 FsIdx 값을 변경하기 위한 코드는 위와 같다.

Sine파 생성에 관계된 Fs 값을 변경하기 위한 코드는 위와 같다.

Sine파 생성을 종료하기 위한 코드는 위와 같다.

그럼 실제로 사용자의 입력에 따라 원하는 기능이 제대로 수행되는지 다음과 같은 코드를 만들어 확인해 본다.

참고로, setup() 함수도 조금 수정하였으므로 이 부분도 확인해 보기 바란다.

12번 줄은 vs1003의 동작 속도를 높이기 위한 코드이다.

vs1003 datasheet문서에 SCI_CLOCKF레지스터는 다음과 같은 내용을 의미한다고 되어 있다.

상위 3비트는 SC_MULT값이고, 그 다음 2비트는 SC_ADD이며, 나머지 11비트값은 SC_FREQ이다.

각각의 값들이 의미하는 것은 다음과 같다.

SC_FREQ값이 0인 경우 XTALI의 값은 12.288MHz를 의미한다.

따라서 0xD000은 12.288 x 4.0 x 1.0 = 49.152MHz로 동작된다는 뜻이다.

이 값에 따라 SPI통신 속도도 높아질 수 있는데, 위의 동작 속도의 1/7까지 높일수 있다.  이번 글에서의 SPI버스 클럭이 48MHz이므로 SPI의 prescaler값을 8로 설정하면 안정적으로 동작될수 있을것이므로 13번줄에서처럼 SPI의 동작 속도를 조정하였다.

초록색 박스안에 보이는 내용이 컴퓨터의 키보드 입력에 따른 vs1003의 동작 변화를 보여주고 있는것이다.

실제로 sine 주파수가 변경되어 스피커로 나오는지, 볼륨 크기는 제대로 변화되는지 확인해 본다.



vs1003.zip


'프로젝트 > vs1003' 카테고리의 다른 글

vs1003 sample 데이타 재생  (0) 2017.06.24
Sine Wave 생성  (0) 2017.06.19
Control register Read/Write  (0) 2017.06.18
VS1003 MP3 Codec  (0) 2017.06.18
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함