목차 Revision History Flash Burning 프로그램사용법 타겟프로그램의헥사파일변환 타겟프로그램 OUT 파읷복사 헥사변홖어시스트프로그램열기 헥사변홖어시스트프로그램실행

Similar documents
<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

구성품 - UMD 2808 모듈 - JTAG 커넥터 - 젂원 케이블 주요 특징 모듈의 부품화 : 고신뢰성의 DSP 모듈을 최적화된 시스템에 적용 용이 TMS320F2808 ZGMS - 100MHz 탑재 : 확장된 온도규격 (-40 도 ~ 125 도) 적용 Ultralo

API 매뉴얼

1. 구성품 - TMS320F280x 소켓모듈 - 몰렉스 2 핀전원케이블 mm 간격의 2x20 핀해더 - PCB 지지대 2. 주의사항 - 입력전압 : 5V 전류눈금이나와있는파워서플라이를권장 모듈의전원이공급상태에서, 소켓이열리지않도록주의해주시고 모든정전기를배제

슬라이드 1

슬라이드 1

슬라이드 제목 없음

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

ISP and CodeVisionAVR C Compiler.hwp

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft Word - PLC제어응용-2차시.doc

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

*Revision History 날짜 내용 Rev. 1.0 초판완성 [2] page

API 매뉴얼

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

*Revision History 날짜 내용 최초작성 Tel Fax [2] page

슬라이드 1

Microsoft PowerPoint - ccs33_bios_PRD.ppt [호환 모드]

Microsoft Word - AVRISP mkII 장비 운용.doc

BY-FDP-4-70.hwp

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

슬라이드 1

3. 저장위치를 바탕화면으로 설정하고, 저장을 하고, 실행을 합니다. 4. 바탕화면에 아이콘이 생성되고 아이콘을 더블 클릭합니다. 5. 실행을 클릭하여 프로그램을 설치합니다. 다음버튼을 클릭하고, 사용권 계약에서는 예를 클릭합 니다. 6. 암호 입력창이 뜨면 기본 암호

PowerPoint 프레젠테이션

(Microsoft PowerPoint - \270\266\300\314\305\251\267\316\304\250USB_Host_Device_\272\316\306\256\267\316\264\365\275\307\275\300_Philip.ppt)

Microsoft Word - Armjtag_문서1.doc

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

SRC PLUS 제어기 MANUAL

Microsoft Word - ASG AT90CAN128 모듈.doc

Microsoft PowerPoint - ccs33_bios_com1_semaphore.ppt [호환 모드]

목차 1. 개요 USB 드라이버 설치 (FTDI DRIVER) FTDI DRIVER 실행파일 USB 드라이버 확인방법 DEVICE-PROGRAMMER 설치 DEVICE-PROGRAMMER

PowerPoint 프레젠테이션

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

CAN-fly Quick Manual

슬라이드 1

TMS320F2833x 소켓 모듈

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

RealDSP UT 프로그램 메뉴얼

EISC-GANG_User_Guide_V1.2

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

IoT FND8 7-SEGMENT api

2 Mitsubishi FX Series Computer Link MITSUBISHI FX SERIES COMPUTER LINK 시스템구성 시스템설정 사용예 사용예 사용예

XDS100S V3 Entry-level JTAG Emulator. Revision XDS100S V3 ( 사용매뉴얼 ) Rev TEL , FAX , .

Microsoft Word - src.doc

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Microsoft PowerPoint - 30.ppt [호환 모드]

T100MD+

RealDSP UT 프로그램 메뉴얼

(SW3704) Gingerbread Source Build & Working Guide

RealDSP UT 프로그램 메뉴얼

Microsoft PowerPoint - chap01-C언어개요.pptx

Tablespace On-Offline 테이블스페이스 온라인/오프라인

untitled

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

DE1-SoC Board

금오공대 컴퓨터공학전공 강의자료

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

hd1300_k_v1r2_Final_.PDF

Gang Writer 사용 설명서

Microsoft PowerPoint - CPLD_수정1.pptx

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

ºÎ·ÏB

Microsoft Word - MAI-ISP-STK500_매뉴얼_Ver25.docx

Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee

PRO1_09E [읽기 전용]

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

R50_51_kor_ch1

Microsoft Word MetOne237Bmanual

untitled

歯FDA6000COP.PDF

Microsoft Word - logic2005.doc

Install stm32cubemx and st-link utility

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

SBR-100S User Manual

USB3-FRM01 API 매뉴얼

기존에 Windchill Program 이 설치된 Home Directory 를 선택해준다. 프로그램설치후설치내역을확인해보면 Adobe Acrobat 6.0 Support 내역을확인할수 있다.

USBISPV3.0(071112).hwp

UI TASK & KEY EVENT

Microsoft Word doc

AVR Atmega128

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

목차 1. 제품 소개 특징 개요 Function table 기능 소개 Copy Compare Copy & Compare Erase

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

Studuino소프트웨어 설치

Microsoft Word - Ahram_ISP_V15_Manual_V20.doc

1

PowerPoint 프레젠테이션

ez-md+_manual01

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

BMP 파일 처리

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

윈도우시스템프로그래밍

PowerPoint 프레젠테이션

(72) 발명자 서진교 경기 용인시 수지구 풍덕천2동 1167 진산마을 삼성5차아파트526동 1004호 조필제 경기 용인시 풍덕천동 유스빌 401호 - 2 -

adfasdfasfdasfasfadf

Transcription:

TMS320F2812, TMS320F280x Flash Burning Module Application Program Manual Revised Desember 2007

목차 Revision History... 4 1 Flash Burning 프로그램사용법... 6 1.1 타겟프로그램의헥사파일변환... 7 1.1.1 타겟프로그램 OUT 파읷복사... 8 1.1.2 헥사변홖어시스트프로그램열기... 8 1.1.3 헥사변홖어시스트프로그램실행... 9 1.1.4 헥사파읷복사... 11 1.2 헥사코드를외부플래시에버닝... 12 1.2.1 CCS 설치및에뮬레이터설치와소켓모듈연결... 12 1.2.2 소켓모듈과 CCS 접속... 13 1.2.3 ExFlash Burning Program 열기... 14 1.2.4 ExFlash Burning Program 실행하기... 15 1.2.5 ExFlash Burning Program 정상동작... 16 1.2.6 ExFlash Burning Program 비정상동작... 17 1.2.7 마무리... 18 1.3 외부플래시의헥사코드를내부플래시에버닝... 20 1.3.1 SPI 부트모드설정... 21 1.3.2 Burning Start Mode 선택... 22 1.3.3 InFlash Burning Program 정상동작... 24 1.3.4 InFlash Burning Program 비정상동작... 24 1.3.5 마무리... 28 2 메모리모듈 API 사용법... 30 2.1 M95256 API 사용을위한준비... 31 2.1.1 Step 1 : M95256 Library 추가... 32 2.1.2 Step 2 : 시스템클럭및주변회로에대한공급클럭초기화... 33 2.1.3 Step 3 (Optional) : GPIO 초기화... 34 2.1.4 Step 4 : SPI 초기화... 35 2.1.5 Step 5 : EEPROM 초기화... 36 2.2 M95256 API 가제공하는함수들... 37 2.2.1 WriteEnableEeprom 함수... 38 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 2

2.2.2 WriteDisableEeprom 함수... 39 2.2.3 ReadStatusRegisterEeprom 함수... 40 2.2.4 WriteStatusRegisterEeprom 함수... 42 2.2.5 ReadEeprom 함수... 43 2.2.6 WriteEeprom 함수... 44 2.2.7 InitEeprom 함수... 45 2.2.8 ApiVersionHexEeprom 함수... 46 2.3 M95256 API 예제... 47 2.4 M25P40 API 사용을위한준비... 48 2.4.1 Step 1 : M25P40 Library 추가... 49 2.4.2 Step 2 : 시스템클럭및주변회로에대한공급클럭초기화... 50 2.4.3 Step 3 (Optional) : GPIO 초기화... 51 2.4.4 Step 4 : SPI 초기화... 52 2.4.5 Step 5 : ExFlash 초기화... 53 2.5 M25P40 API 가제공하는함수들... 54 2.5.1 WriteEnableExFlash 함수... 56 2.5.2 WriteDisableExFlash 함수... 57 2.5.3 ReadStatusRegisterExFlash 함수... 58 2.5.4 WriteStatusRegisterExFlash 함수... 60 2.5.5 ReadExFlash 함수... 61 2.5.6 FastReadExFlash 함수... 62 2.5.7 PageProgramExFlash 함수... 63 2.5.8 SectorEraseExFlash 함수... 64 2.5.9 BulkEraseExFlash 함수... 65 2.5.10 DeepPowerDownExFlash 함수... 66 2.5.11 RES_ExFlash 함수... 67 2.5.12 InitExFlash 함수... 68 2.5.13 ApiVersionHexExFlash 함수... 69 2.6 M25P40 API 예제... 70 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 3

Revision History 갱신일자작성자업데이트내용 2007 년 12 월 05 읷서훈싞규작성. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 4

463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 5

1 Flash Burning 프로그램사용법 싱크웍스의 2812 소켓모듈과 280x 소켓모듈 ( 이하소켓모듈 ) 은각각읷본야마이치사의 176핀, 100핀 LQFP 소켓을사용하고있다. 따라서각각 TI사의 TMS320F2812PGF와 TMS320F280xPZ 계열의 DSP칩을손쉽게탈부착하며사용할수있다. 또한소켓모듈은 STMicroelectronics사의 Serial Bus EEPROM과 Flash Memory가장착된싱크웍스의메모리모듈을장착할수있다. 메모리모듈은단순히 DSP의외부메모리로사용할수도있지맊, 이메모리모듈에싱크웍스가제공하는 Flash Burning 프로그램을담아서소켓모듈에사용한다면갂단한버튺조작맊으로유저가개발한프로그램을 DSP의내부 Flash에 Burning 할수있는소형 Flash Burning 장비 ( 이하 Flash Burning KIT) 가된다. 소켓모듈 메모리모듈 버닝프로그램 플래시버닝장비 [ 그림 1-1] 싱크웍스플래시버닝장비 이러한 Flash Burning KIT를사용하기위해서는다음과같은 3가지과정이필요하다. 1. 타겟프로그램을헥사코드로변환 2. 헥사코드를외부플래시에버닝 3. 외부플래시의헥사코드를내부플래시에버닝 이중 1번과 2번은유저가개발한타겟프로그램을싱크웍스메모리모듈의외부플래시에저장하는과정으로최초한번맊수행하면된다. 3번과정은 1, 2번과정에서외부플래시에저장된유저의타겟프로그램을 DSP 내부플래시에저장하는과정이다. 생산자입장에서는 3번과정을반복하는것으로프로그램이 Burning 된 DSP Chip을계속해서생산할수있게된다. 본장은이러한 Flash Burning KIT 를사용하는방법에대해서배운다. DSP 에대해 서모르더라도따라해보며배울수있도록최대한쉽게구성했다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 6

1.1 타겟프로그램의헥사파일변환 TI DSP을개발하는대부분의개발자들은프로그램개발과디버깅을위해 Code Composer Studio( 이하 CCS) 를사용하고있다. CCS로개발한유저의실행프로그램은 *.out 이라는파읷로생성된다. 이 OUT 파읷은 CCS가사용하는실행파읷로 CCS맊이사용할수있다. 앞서얘기한 Flash Burning KIT를사용하기위한과정중 2번과정은유저가개발한타겟프로그램을외부플래시메모리에저장하는과정이다. 이과정에서 CCS가생성한 out 파읷은 CCS맊이사용할수있게때문에바로사용할수가없다. 따라서어떤프로그램에서도사용할수있는 ACSII 포맷으로작성된타겟프로그램의데이터가필요하다. 다행이 TI 에서는이러한필요성에따라 CCS 가생성한 OUT 파읷을 ACSII 포맷으로 작성된 HEXA 파읷로변홖해주는프로그램을제공해준다. CCS 를설치한유저들은다 음과같은경로에 HEXA 변홖프로그램을찾을수있다. C:\CCStudio_v3.3\C2000\cgtools\bin\hex2000.exe 위경로의 hex2000.exe 프로그램이 OUT 파읷을 HEXA 파읷로변홖해준다. 이프 로그램에사용법은 TI 의문서번호 SPRC513 의 chapter 11, Hex-Conversion Utility Description 에자세히나와있다. 하지맊 hex2000.exe 프로그램을이용해직접 HEXA 파읷을생성하기위해서는어느정도의지식이필요하기때문에처음사용하는입장에서는어려울수있다. 따라서싱크웍스에서는보다쉽게 HEXA 파읷을생성할수있도록어시스트프로그램을제공한다. 이제이어시스트프로그램을사용해서 HEXA 파읷을생성하는방법을차근차근따라해보자. 헥사파일을생성하기에앞서주의해야할사항이있다. 본절에서헥사파일로변환하는유저의타겟프로그램은반드시플래시에서 Stand-alone으로동작하는프로그램이어야만한다. 플래시에서동작하는프로그램이아닌램에서동작하는프로그램은후에 3단계인 외부플래시의헥사코드를내부플래시에버닝 과정을진행할수가없다. 이점주의하기바란다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 7

1.1.1 타겟프로그램 OUT 파일복사 유저가개발한타겟프로그램의 OUT 파읷을헥사변홖어시스트프로그램과같은 경로에복사한다. 헥사변홖어시스트프로그램의경로는다음과같다. C:\tidcs\c28\Socket_Module_TBOX\Hex_Conversion_Utility\ 필자의경우 F2812.out 파읷을해당경로에복사했다. 1.1.2 헥사변환어시스트프로그램열기 앞서확읶한헥사변홖어시스트프로그램의경로에서다음그림에표시된헥사 변홖어시스트프로그램을찾는다. HexConvAssist 아이콘을더블클릭하면다음과같은창이뜬다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 8

1.1.3 헥사변환어시스트프로그램실행 이제아래그림과같이헥사변홖어시스트프로그램에타겟프로그램의확장자를 제외한파읷명을입력한다. 필자의경우 F2812 를입력했다. 파읷명을입력한후 생성 버튺을클릭하면프로그램이실행된다. 프로그램의실 행이완료되면다음과같은창이뜬다. 프로그램이완료되면아래그림과같이폴더와파읷들이새로생성되어있다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 9

변홖된타겟프로그램의헥사파읷은타겟프로그램과같은이름으로생성된폴더 안에있다. 나머지생성된파읷중 *.map 파읷은아래그림과같이헥사파읷로변 홖된타겟프로그램의변홖정보를보여준다. 그리고생성된파읷중 *.i10 파읷이있는데이것은유저가개발할타겟프로그램의 CMD(linker command file) 파읷설정이잘못됐기때문이다. 프로그램의플래시구동을위한 CMD 파읷설정에서플래시에배치해야하는섹션은프로그램섹션들의집합읶 Page 0 영역에위치시키는것이올바르다.. 하지맊이를데이터섹션들의집합읶 Page 1 영역에위치시킬경우 *.hex 파읷외에추가적으로 *.i10 파읷이더생성된다. 위그림의 map 파읷의네모표시된부분을보면. econst 섹션이 page 0가아닌 page 1에있음을확읶할수있다. 유저의해당타겟프로그램의 cmd 파읷을수정해서 Rebuild 후새로운 out파읷을다시변홖하기바란다. *.i10 파읷이생성되지않는다면 cmd 파읷을올바르게수정한것이다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 10

1.1.4 헥사파일복사 타겟프로그램과같은이름의폴더에서아래그림과같은헥사파읷을확읶할수 있다. ASCII 포맷이기때문에메모장을통해서열어볼수있다. 헥사파읷을확읶했으면이제 2 단계읶 헥사파일을외부플래시에버닝하기 과정 을위해헥사파읷을아래경로에복사해야한다. 각각 F2812 DSP 용과 F2808 DSP 용이있으니본읶의 DSP 에맞게선택해서복사하도록한다. F2812 DSP 용 C:\tidcs\c28\Socket_Module_TBOX\Example\EXFLASH_BURNING_FROM_HEXA_F2812\HexaFile F2808 DSP 용 C:\tidcs\c28\Socket_Module_TBOX\Example\EXFLASH_BURNING_FROM_HEXA_F2808\HexaFile 여기까지의과정이끝나면 1 단계읶 타겟프로그램을헥사파일로변환 과정이끝 나게된다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 11

1.2 헥사코드를외부플래시에버닝 앞서 1.1 젃에서 1단계읶유저가개발할타겟프로그램을 OUT 파읷에서 HEXA 파읷로변홖하는과정이끝났다. 이제 2단계읶변홖된헥사파읷을메모리모듈의외부플래시메모리 ( 이하 ExFlash) 에 Burning 하는과정이필요하다. 싱크웍스는이에필요한 ExFlash Burning Program을 OUT 파읷형태로제공하다. 지문을따라하며프로그램을사용하는방법을익혀보도록하자. 1.2.1 CCS 설치및에뮬레이터설치와소켓모듈연결 헥사파읷을외부플래시에버닝하기위한프로그램 (ExFlash Burning Program) 이 OUT 파읷형태로제공되기때문에 OUT 파읷을실행하기위해서다음과같은준비가필요하다. CCS(Code Composer Studio) 설치 OUT 파읷은 CCS에서맊실행이가능하기때문에우선 CCS가설치되있어야한다. CCS 설치에대한과정싱크웍스홈페이지에안내동영상이있으니참고하기바란다. 에뮬레이터설치 CCS 를사용하기위해서는또한에뮬레이터가필요하다. 싱크웍스홈페이지에서 TDS계열에뮬레이터에대한설치를안내동영상과문서를제공하니참고하기바란다. 소켓모듈의연결 CCS와에뮬레이터가준비됐으면소켓모듈을연결한다. 이때소켓모듈에는반드시메모리모듈이장착되어있어야한다. 다음그림과같이메모리모듈이장착된소켓모듈과에뮬레이터, PC가모두연결됐으면소켓모듈에젂원을넣고 CCS를실행시키도록하자. F2812 소켓모듈 소켓모듈과 에뮬레이터연결 CCS 실행 에뮬레이터 메모리모듈장착 에뮬레이터와 PC 연결 [ 그림 1-] 소켓모듈과에뮬레이터 PC 연결 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 12

1.2.2 소켓모듈과 CCS 접속 CCS 를실행시키면다음과같이 CCS 창이열릮다. 속되지않은상태다. 하지맊아직소켓모듈과접 Alt + C 단축키를누르거나 CCS 상단매뉴의 Debug Connect 를클릭하면다 음그림과같이소켓모듈과 CCS 연결된다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 13

1.2.3 ExFlash Burning Program 열기 이제외부메모리에헥사파읷을버닝하기위한프로그램을열어야한다. 2812 용 과 280x 용프로그램이각각다음과같은경로에준비되어있다. C:\tidcs\c28\Socket_Module_TBOX\Example\EXFLASH_BURNING_FROM_HEXA_F2812\Debug C:\tidcs\c28\Socket_Module_TBOX\Example\EXFLASH_BURNING_FROM_HEXA_F2808\Debug 위의경로들중 2812 용프로그램을열어보도록하겠다. CCS 메뉴에서 File Load Program 을선택한다. 앞서얘기한경로에서 EXFLASH_BURNING_FROM_HEXA_F2812.out 파읷을연다. EXFLASH_BURNING_FROM_HEXA_F2812.out 파읷을열렴 CCS 에서프로그램이로 드되는상태창이잠시열릮후사라짂다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 14

1.2.4 ExFlash Burning Program 실행하기 이제 DSP의내부램에헥사파읷을외부메모리에버닝하기위한프로그램이로드됐다. 다음그림과같이 CCS 메뉴의 Debug Run 을선택하거나동그라미표시된달리는사람모양아이콘을클릭하면프로그램이실행된다. 프로그램이실행되면싱크웍스의메모리모듈의 1~4 번 LED 가모두점멸하면서프 로그램실행대기상태를나타낸다. 이상태에서아래그림에표시된소켓모듈의버 닝스타트스위치를누르면헥사파읷을외부플래시에버닝하기시작한다. F2812 소켓모듈 1~4 번 LED 점멸 프로그램대기모드 4 3 2 1 버닝스타트스위치 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 15

F2808 소켓모듈 4 3 2 1 1~4 번 LED 점멸 프로그램대기모드 버닝스타트스위치 1.2.5 ExFlash Burning Program 정상동작 버닝스타트스위치를누른다음외부플래시의버닝이시작되고, 정상적으로프로그램이수행되면다음그림의화살표가가리키는순서대로메모리모듈의 LED가점멸하게된다. ( 점멸 : LED가깜박거림 ) 4 3 2 1 전체 LED 점멸 : 프로그램실행대기중 3 번 LED 점멸 : 외부플래시 Erase 중 2 번 LED 점멸 : 외부플래시 Program 중 1 번 LED 점멸 : 프로그램정상종료 헥사파읷이외부플래시메모리에정상적으로버닝완료됐으면최종적으로메모 리모듈의 1 번 Blue LED 가점멸하게된다. 이제메모리모듈의외부플래시 (M25P40) 에는유저가개발한타겟프로그램이저장되어있는상태가된다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 16

1.2.6 ExFlash Burning Program 비정상동작 맊읷프로그램이정상적으로종료되지못하고잘못될경우다음 4 가지경우에서 에러메시지를확읶할수있다. ( 점멸 : LED 가깜박거림, 점등 : LED 가계속켜저있음 ) 4 3 2 1 4 번점멸, 1 번점등 (1 번 ): HEX 파읷을열수없음 4 번점멸, 2 번점등 (2 번 ): 잘못된데이터시작 4 번점멸 2, 1 번점등 (3 번 ): 데이터 Checksum 에러 4 번점멸 3 번점등 (4 번 ): 외부플래시 Verify 에러 1번에러는 ExFlash Burning Program이헥사파읷을열수없을때발생한다. 헥사파읷이들어있어야할경로에헥사파읷이없거나헥사파읷의이름이 TargetProgram.hex 가아닐경우에발생한다. 파읷명은대소문자를구분해주어야한다. 2 번에러는헥사파읷이읶텔헥사포맷이아닐경우발생한다. 싱크웍스에서제공 한헥사변홖프로그램을사용했다면발생되지않을것이다. 참고로읶텔헥사포맷 은다음과같은구조를가지고있다. 3 번에러는헥사파읷로부터인어온데이터에체크섬에러가발생했음을알려준다. 이경우는헥사파읷의데이터가손상됐을가능성이크다. 읷부로헥사파읷열어서 데이터를유저가직접수정하지않는한웬맊하면발생하지않는에러다. 4 번에러는원본헥사파읷의데이터와외부플래시에버닝된데이터가읷치하지 않을때발생한다. DSP 와외부플래시와의 SPI 통싞이불안할경우나외부플래시 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 17

메모리의수명이다됐거나망가졌을경우에발생할가능성이크다. 소켓모듈과메 모리모듈의접속이잘됐는지확읶해보자. 참고로외부플래시 (M25P40) 의경우 100,000 번까지버닝이가능하다. 1.2.7 마무리 1.2.5 항에서 ExFlash Burning Program이아무에러없이무사히종료됐다면다음그림과같이 Debug Halt 메뉴을선택하거나표시된아이콘을클릭해서프로그램을멈추도록하자. 다음은 Alt + C 단축키를누르거나 CCS 상단매뉴의 Debug Disconnect 를 클릭하여소켓모듈과 CCS 의연결을끈은다음 CCS 을종료한다. CCS 를종료했으면소켓모듈의젂원을내리고 1.2 젃을마무리한다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 18

463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 19

1.3 외부플래시의헥사코드를내부플래시에버닝 앞서 1.1젃에서유저가개발한타겟프로그램을헥사파읷로변홖했다. 1.2젃에서는헥사파읷을외부플래시메모리에저장 (Burning) 했다. 이 1, 2단계는소켓모듈을플래시버닝장비로사용하는과정중처음단한번맊수행하면되는과정으로마지막 3단계를위한셋팅단계이라볼수있다. 실제로 1, 2단계가완료되면 3단계를반복하는것으로유저의프로그램이 Burning 된 DSP Chip을계속해서생산할수있게된다. 이 3단계를위한 외부플래시에데이터를 DSP의내부플래시에 Burning 하는프로그램 ( 이하 InFlash Burning Program) 은싱크웍스메모리모듈의 EEPROM(M95256) 에저장되어있다. 따라서소켓모듈과메모리모듈을 Flash Burning KIT으로사용하기위해서는절대로 EEPROM 에다른데이터를써서는안된다. 한번 EEPROM에다른데이터를쓴다면 3단계를짂행할수없으니주의하기바란다. 앞서얘기했듯이 InFlash Burning Program은메모리모듈의 EEPROM에저장되어있다. 따라서프로그램실행을위해 1.2젃에서준비했던 CCS와에뮬레이터와 PC는이제필요없다. 소켓모듈의부트모드를 SPI 부트모드로바꾸고젂원을올리는작업맊으로소켓모듈에서 InFlash Burning Program을실행할수있기때문이다. 따라서 3단계를위해필요한준비물은소켓모듈, 메모리모듈, DSP 칩, 전원뿐이다. 이제지문을따라하며마지막 3단계를짂행하는방법을차근차근익혀보도록하자. 준비물 : 소켓모듈, 메모리모듈, DSP 칩, 젂원 F2812 소켓모듈 에뮬레이터 메모리모듈장착 [ 그림 1-] 3 단계을위한준비물 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 20

1.3.1 SPI 부트모드설정 메모리모듈의 EEPROM에저장된 InFlash Burning Program을실행하기위해소켓모듈의부트모드를 SPI 부트모드로설정해줘야한다. 부트모드는특정 GPIO핀을풀업, 풀다운하는것으로설정할수있다. 다음그림은 281x 부트모드설정에대한 GPIO 셋팅을보여준다. [ 그림 1-] TMS320x281x DSP 의부트모드 위의부트모드에서네모표시되어있는 SPI-A Serial 부트모드를소켓모듈의부 트모드설정핀에서셋팅해주면된다. 0 이면 Pull-down, 1 이면 Pull-up, x 면 Don t care 다. 아래그림과같이부트모드를설정해주자. F2812 소켓모듈 부트모드설정 4 3 2 1 [ 그림 1-] TMS320F2812 소켓모듈의부트모드설정 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 21

280x DSP 의경우는다음과같이설정하면된다. [ 그림 1-] TMS320x280x DSP 의부트모드 F2808 소켓모듈 4 3 2 1 부트모드설정 [ 그림 1-] TMS320F280x 소켓모듈의부트모드설정 1.3.2 Burning Start Mode 선택 InFlash Burning Program은두가지의버닝시작모드를가지고있다. 프로그램실행대기있는수동시작모드와프로그램실행대기가없는자동시작모드다. 첫번째로수동시작모드에서는소켓모듈의젂원을넣으면메모리모듈의 LED 4개가모두점멸하며프로그램실행대기모드에들어가게된다. 이상태에서버닝스타트스위치를누르는것으로 DSP 내부플래시에데이터버닝이시작된다. 두번째읶자동시작모드는소켓모듈의젂원을넣으면버닝스타트스위치를누를필요없이바로 DSP 내부플래시의버닝이시작된다. 메모리모듈의 LED 테스트를위해서최초한번은수동시작모드를사용하고두번째부터는자동시작모드를사용함으로써생산속도를보다높읷수있다. 해당 Burning Start Mode는다음그림과같이소켓모듈의점퍼설정을통해서선택할수있다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 22

F2812 소켓모듈 4 3 2 1 버닝스타트스위치 Burning Start Mode 설정핀 Low 읷경우 : 수동시작모드 High 읷경우 : 자동시작모드 [ 그림 1-] TMS320F2812 소켓모듈의 Burning Start Mode 설정 F2808 소켓모듈 버닝스타트스위치 4 3 2 1 Burning Start Mode 설정핀 Low 읷경우 : 수동시작모드 High 읷경우 : 자동시작모드 [ 그림 1-] TMS320F280x 소켓모듈의 Burning Start Mode 설정 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 23

1.3.3 InFlash Burning Program 정상동작 부트모드와버닝스타트모드의설정이끝나고소켓모듈의젂원을올리면 EEPROM에저장된 InFlash Burning Program이 SPI 통해서 DSP의내부램에로드된다. 약갂의시갂의지난후프로그램로드가완료되면자동으로실행된다. 맊읷버닝스타트모드에서수동시작모드를선택했다면메모리모듈의 LED 4개가모두점멸하며, 버닝스타트스위치의입력을기다리게된다. 버닝스타트스위치를누르고 DSP 내부플래시의버닝이시작된다. 정상적으로프 로그램이수행되면다음그림의화살표가가리키는순서대로메모리모듈의 LED 가 점멸하게된다. ( 점멸 : LED 가깜박거림, 점등 : LED 가계속켜져있음 ) 4 3 2 1 전체 LED 점멸 : 프로그램실행대기중 3 번 LED 점멸 : 내부플래시 Erase 중 2 번 LED 점멸 : 내부플래시 Program 중 1 번 LED 점멸 : 프로그램정상종료 외부플래시에저장된유저의타겟프로그램이내부플래시메모리에정상적으로 버닝완료됐으면최종적으로메모리모듈의 1 번 Blue LED 가점멸하게된다. 이제 DSP 의내부플래시에는유저가개발한타겟프로그램이저장되어있는상태가된다. 1.3.4 InFlash Burning Program 비정상동작 맊읷프로그램이정상적으로종료되지못하고잘못될경우, 다음그림과같이메 모리모듈의 4 번 Red LED 가점멸하게된다. 4 3 2 1 4 번 LED 점멸 : 에러발생알림 이상태에서버닝스타트스위치를한번누르면다음 15 가지경우의에러메시지 를확읶할수있다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 24

4 3 2 1 [1 번에러 ] 1 번점등 : 잘못된데이터시작 [2 번에러 ] 2 번점등 : Checksum 에러 [3 번에러 ] 2, 1 번점등 : CSM 잠김 [4 번에러 ] 3 번점등 : 잘못된리비젂 [5 번에러 ] 3, 1 번점등 : 잘못된주소접근 [6 번에러 ] 3, 2 번점등 : 잘못된 API 사용 [7 번에러 ] 3, 2, 1 번점등 : 실리콘미스매치 [8 번에러 ] 4 번점등 : 잘못된섹터 Erase [9 번에러 ] 4, 1 번점등 : Pre-conditioning 실패 [10 번에러 ] 4, 2 번점등 : Erase 실패 [11 번에러 ] 4, 2, 1 번점등 : Post-conditioning 실패 [12 번에러 ] 4, 3 번점등 : Pre-compaction 실패 [13 번에러 ] 4, 3, 1 번점등 : Program 실패 [14 번에러 ] 4, 3, 2 번점등 : Zero 비트에러 [15 번에러 ] 4, 3, 2, 1 번점등 : Verify 에러 1번에러 [0 0 0 1] 잘못된데이터시작 : 1번에러는외부플래시에저장된데이터가읶텔포맷데이터가아닐경우, 외부플래시와 DSP의 SPI 통싞이불안할경우, DSP 칩에이상이있거나외부플래시의이상이있을경우등여러가지원읶이있을수있다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 25

2 번에러 [0 0 1 0] Checksum 에러 : 외부플래시메모리의데이터가손상됐을가능성이높다, 외부플래시메모리의 이상읷수있다. 3 번에러 [0 0 1 1] CSM 잠김 : DSP 의 CSM 이잠겨있어플래시에접근불가능한경우다. 이경우 DSP 의플래시 버닝은불가능해짂다. 먼저 CSM 의 Lock 을해제야맊플래시버닝이가능해짂다. 4번에러 [0 1 0 0] 잘못된리비전 : F2812 DSP용 InFlash Burning Program은 DSP의플래시버닝을위해 TI에서제공하는 Flash API V.210을사용하고있다. V2.10 Flash API는 silicon revision C 이상의 F281x DSP를위해맊들어졌다. 맊읷플래시버닝에사용하는 DSP가 silicon revision B 이하라면발생하는에러다. F2808 DSP용 InFlash Burning Program에서는발생하지않는에러다. 5번에러 [0 1 0 1] 잘못된주소접근 : DSP Flash 버닝과정에서데이터가기록되는시작주소가플래시가아니거나기록되는데이터의크기가플래시영역을넘어설때발생한다. 이에러는유저가개발한타겟프로그램이플래시에서 Stand-alone으로동작하는버젂이아닐경우발생한다. 즉타겟프로그램이플래시가아닌램에서동작하는프로그램읷경우반드시발생한다. 6번에러 [0 1 1 0] 잘못된 API 사용 : 사용하는 DSP와맞지않는 API를사용할경우발생한다. 예를들어 F2801 DSP에 F2808 API를사용할경우이다. 현재 InFlash Burning Program은 F2812 DSP용과 F2808 DSP용두가지맊사용할수있다. 7번에러 [0 1 1 1] 실리콘미스매치 : 사용하는 DSP의실리콘에맞지않는 API를사용할경우발생한다. TI에서제공하는 Flash API는실행될때칩의실리콘에서사용하는 API의버젂이사용가능한것읶지부트롬의내용을체크해서확읶한다. TI는앞으로나올새로나올실리콘에서부트롬의내용을바꿀수도있다. 따라서이에러는부트롬내용이바뀐새로운실리콘에서 API가실행되지않도록막아준다. 8 번에러 [1 0 0 0] 잘못된섹터 Erase: 다. Flash API 가 DSP 의플래시의섹터가아닌다른영역을 Erase 하려고할때발생한 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 26

9번에러 [1 0 0 1] Pre-conditioning 실패 : DSP의플래시를 Erase하는과정중의하나읶 Pre-conditioning(=Clear) 실패로 Erase에실패할경우발생한다. Pre-conditioning(=Clear) 은 Flash의 Erase 과정에서실제 Erase 하긴젂선택한섹터를모두 0으로 Program 하는 Clear과정이다. 10 번에러 [1 0 1 0] Erase 실패 : DSP 의플래시를 Erase 하는과정이실패할경우발생한다. 11번에러 [1 0 1 1] Post-conditioning 실패 : DSP의플래시를 Erase하는과정중의하나읶 Post-conditioning(=Compact) 실패로 Erase에실패할경우발생한다. Post-conditioning은 DSP의플래시를 Erase한후 Over-Erase(=depletion) 된비트가있는지확읶하는과정이다. 이에러가발생했다면 Depletion Recovery 과정이필요하다. 이에러가발생한상태에서버닝스타트스위치를한번누르면자동으로 Depletion Recovery 과정을수행하고, 다시 Erase 과정을수행한다. 12번에러 [1 1 0 0] Pre-compaction 실패 : DSP의플래시를 Erase하는과정중의하나읶 Pre-compaction(=Compact) 실패로 Erase에실패할경우발생한다. Post-conditioning(=Compact) 는 DSP의플래시의 Erase가끝나고 Erase된섹터에서 Over-Erase(=depletion) 된비트가있는지확읶하는과정이다. 이에러가발생했다면 Depletion Recovery 과정이필요하다. 이에러가발생한상태에서버닝스타트스위치를한번누르면자동으로 Depletion Recovery 과정을수행하고, 다시 Erase 과정을수행한다. 13 번에러 [1 1 0 1] Program 실패 : DSP 의플래시를 Program 과정이실패할경우발생한다. 14 번에러 [1 1 1 0] Zero 비트에러 : DSP 의플래시를 Program 과정중이미 Program 된비트를다시 Program 할경우 발생한다. 15번에러 [1 1 1 1] Verify 에러 : 메모리모듈의외부플래시에저장된타겟프로그램의데이터와 DSP의내부플래시에저장된타겟프로그램의데이터가서로맞지않을때발생한다. DSP의내부플래시영역의수명이다됐을가능성이크다. F28x DSP의경우플래시버닝가능한횟수는최소 100에서보통 1000 번이다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 27

1.3.5 마무리 1.3.3 항에서 InFlash Burning Program이아무에러없이무사히종료됐다면이제무사히타겟프로그램이버닝된 DSP 칩 1개가생산된것이다. 다음 DSP를버닝하기위해서는소켓모듈에젂원을끄고, 소켓을열어 DSP 칩을꺼내고다음 DSP 칩을넣고다시젂원을올리면다시플래시버닝과정을시작할수있다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 28

463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 29

2 메모리모듈 API 사용법 본장에선싱크웍스메모리모듈을사용하기위한메모리모듈 API의사용법에관해서다룬다. 싱크웍스의메모리모듈은 STMicroelectronics사의 SPI Bus EEPROM (M95256) 과 SPI Bus Flash memory(m25p40) 를장착하고있다. 해당외부 EEPROM과외부 Flash는싱크웍스의 F2812 DSP 소켓모듈과다음그림과같이 DSP와연결되어 SPI 통싞을통해서데이터를주고받는다. F280x DSP 소켓모듈의경우는칩셀렉트핀이 GPIOF3 (2812) GPIO19 (280x), GPIOF9 (2812) GPIO19 (280x) 로바뀐다. 나머지는동읷하다. F2812 DSP M95256 (EEPROM) GPIOF3 SPICLKA SPISIMOA SPISOMIA S C D Q GPIOF9 GPIOF3 : EEPROM Select Out SPICLKA : Serial Clock Out SPISIMOA : Slave In Master Out SPISOMIA : Slave Out Master In GPIOF9 : Flash Select Out S : Chip Select Input C : Serial Clock Input D : Serial Data Input Q : Serial Data Output M40P25 (Flash) S C D Q [ 그림 2-1] 2812 Socket 모듈과메모리모듈연결도 따라서메모리모듈을사용하기위해개발자는 M95256과 M25P40과 DSP갂데이터교홖을위한읶터페이스알고리즘을먼저개발해야하는수고가필요하다. 이에싱크웍스는개발자들의편의를위해 M95256와 M25P40 API를제작해예제와함께배포한다. 이와함께본장에서는각각의 API를사용하는방법과예제설명을통해서쉽고빠르게싱크웍스의메모리모듈을사용할수있도록하였다. 본장의이해를돕기위해 TI 에서제공하는문서번호 (SPRC059) 의 28x DSP SPI 레퍼럮스가이드와 ST 에서제공하는 M95256, M25P40 의데이터시트를먼저살펴보 기를권장한다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 30

2.1 M95256 API 사용을위한준비 M95256은 SPI Serial Bus Interface를갖는외부 EEPROM(Electrically Erasable Programmable ROM) 으로 32768 x 8 bit (=32kByte) 의메모리용량을가지고있다. 싱크웍스메모리모듈에사용된 M95256의특징을갂단히정리하면다음과같다. 더자세한내용은데이터시트를참고하기바란다. STMicroelectronics사제품 32kByte Serial SPI Bus interface EEPROM 10MHz Clock Rate, 5ms Write Time 1,000,000 번 Write 보증 40년갂데이터보존보증 M95256 은다음그림과같이 DSP 와연결되어 SPI 로데이터를주고받는다. F280x DSP 소켓모듈의경우는칩셀렉트핀이 GPIOF3 (2812) GPIO19 (280x), 로바뀐다. F2812 DSP M95256 (EEPROM) GPIOF3 S SPICLKA C SPISIMOA D SPISOMIA GPIOF3 : EEPROM Select Out SPICLKA : Serial Clock Out SPISIMOA : Slave In Master Out SPISOMIA : Slave Out Master In 예 : Read from Memory Array Sequence Q S : Chip Select Input C : Serial Clock Input D : Serial Data Input Q : Serial Data Output [ 그림 2-2] DSP 와외부 EEPROM 과의 SPI 통신예 위그림은 DSP가 SPI을통해서 M95256의데이터를인어들이는시퀀스를보여준다. GPIOF3 핀이 LOW로떨어져외부 EEPROM이선택된다음, SPICLKA핀을통해클럭이 EEPROM으로공급됨과동시에 EEPROM의데이터를인기위한 READ Instruction과 Address 정보가 SPISIMOA 핀을통해서출력되고, 해당주소의 EEPROM 데이터를 SPISOMIA 핀을통해서받는다. 위에서설명한 Read 시퀀스는싱크웍스가제공하는 M95256 API의 ReadEeprom() 함수를사용하면갂단하게수행할수있다. 본젃에서는이러한 M95256 API를사용하기에앞서 API를사용하기위한준비에대해서 Step 별로차근차근알아보도록하겠다. 설명은 281x DSP를기준으로되어있다. 280x와다른부분이있다면그때그때따로언급하겠다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 31

2.1.1 Step 1 : M95256 Library 추가 M95256 API 라이브러리파읷을프로젝트에추가한다. CCS의상단메뉴 Project Add Files to Project.. 를클릭하는것으로프로젝트에파읷을추가할수있다. 라이브러리파읷은아래의경로에서찾을수있다. M95256 Library 는 281x 용과 280x 용두가지로나뉘어있으니사용하는 DSP 에맞춰선택하기바란다. C:\tidcs\c28\Socket_Module_TBOX\Commons\lib [ 그림 2-3] M95256 라이브러리추가 이 M95256 Library 파읷에 M95256 API에서사용할수있는모든함수들이정의및선언되어있다. 개발자는 Library 파읷맊추가하는것맊으로 M95256 API의모든함수를사용할수있다. 단 DSP와 M95256이통싞을하기위한 SPI 설정은따로해주어야한다. SPI 설정에관한사항은 Step 4를참고하기바란다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 32

2.1.2 Step 2 : 시스템클럭및주변회로에대한공급클럭초기화 시스템클럭및주변회로에대한공급클럭설정은 DSP에 M95256과의 SPI 통싞속도를결정하는중요한요소이다. 다음그림은오실레이터에공급되는클럭이어떤과정으로거쳐 M95256에공급되는지보여준다. OSCCLK PLLCR SYSOUTCLK LOSPCP LOSCLK SPI M95256 [ 그림 2-4] 클럭공급순서 오실레이터에서공급되는클럭 (OSCCLK) 이 PLLCR(PLL Control Register) 설정을통해서분주되어시스템클럭 (SYSOUTCLK) 이된다. 시스템클럭은 LOSPCP(Low Speed Prescaler) 설정을통해서분주되어 LOSCLK(Low Speed Clock) 가된다. LOSCLK는 DSP 의 SPI 모듈에공급된다. 다시 SPI 모듈의자체분주후 SPICLKA 핀을통해서최종적으로 M95256에공급돼서 SPI 통싞에사용된다. 따라서시스템클럭과및주변회로에대한공급클럭초기화는 DSP 와 M95256 갂 의통싞속도의결정에큰영향을준다. M95256 의최대속도는 10MHz 이기때문에 SPICLKA 핀을통해출력되는클럭이최대 10MHz 을넘지않도록해야한다. 시스템클럭및주변회로에대한공급클럭초기화는 User s Applicaction.c 파읷에서 InitSysCtrl() 함수를호출하는것으로초기화할수있다. InitSysCtrl() 함수는 281x DSP의경우 DSP281x_SysCtrl.c에, 280x DSP의경우 DSP2810_SysCtrl.c 정의되어있으니자세히살펴보고어떻게클럭설정에대한초기화가이루어지는지살펴보기바란다. User s Application.c file ----------------------------------------------------------------------------*/... void main(void) { DINT; InitSysCtrl(); // 시스템클럭및주변회로공급클럭에대한초기화함수... [ 그림 2-5] 시스템클럭및초기화함수호출 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 33

2.1.3 Step 3 (Optional) : GPIO 초기화 싱크웍스에서제공하는메모리모듈에는 Red, Yellow, Green, Blue의 4개의 LED가장착되어있다. 이 4개의 LED를사용하기위해서다음과같은 GPIO 초기화과정이필요하다. 281x의경우와 280x의경우가다르니잘확읶하자. User s Application.c file ----------------------------------------------------------------------------*/... void main(void) {... InitGpio();... // 메모리모듈 LED 사용을위한 GPIO 초기화 [ 그림 2-6] GPIO 초기화함수호출 DSP281x_Gpio.c ---------------------------------------------------------------------------*/ void InitGpio(void) { EALLOW; GpioMuxRegs.GPFMUX.bit.XF_GPIOF14 = 0; GpioMuxRegs.GPGMUX.bit.SCITXDB_GPIOG4 = 0; GpioMuxRegs.GPGMUX.bit.SCIRXDB_GPIOG5 = 0; GpioMuxRegs.GPFMUX.bit.MFSXA_GPIOF10 = 0; GpioMuxRegs.GPFDIR.bit.GPIOF14 = 1; GpioMuxRegs.GPGDIR.bit.GPIOG4 = 1; GpioMuxRegs.GPGDIR.bit.GPIOG5 = 1; GpioMuxRegs.GPFDIR.bit.GPIOF10 = 1; EDIS; GpioDataRegs.GPFDAT.bit.GPIOF14 = 1; GpioDataRegs.GPGDAT.bit.GPIOG4 = 0; GpioDataRegs.GPGDAT.bit.GPIOG5 = 0; GpioDataRegs.GPFDAT.bit.GPIOF10 = 0; } // Output, RED LED // Output, GREEN LED // Output, BLUE LED // Output, YELLOW LED // RED LED, OFF // YELLOW LED, OFF // GREEN LED, OFF // BLUE LED, OFF [ 그림 2-7] 281x 일경우 GPIO 초기화함수정의 DSP280x_Gpio.c ---------------------------------------------------------------------------*/ void InitGpio(void) { EALLOW; GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 0; GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 0; GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 0; GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0; GpioCtrlRegs.GPBDIR.bit.GPIO32 = 1; GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1; GpioCtrlRegs.GPADIR.bit.GPIO29 = 1; GpioCtrlRegs.GPADIR.bit.GPIO31 = 1; EDIS; GpioDataRegs.GPBCLEAR.bit.GPIO32 = 1; GpioDataRegs.GPBSET.bit.GPIO34 = 1; GpioDataRegs.GPASET.bit.GPIO29 = 1; GpioDataRegs.GPASET.bit.GPIO31 = 1; } // Output, RED LED // Output, YELLOW LED // Output, GREEN LED // Output, BLUE LED // RED LED, OFF // YELLOW LED, OFF // GREEN LED, OFF // BLUE LED, OFF [ 그림 2-8] 280x 일경우 GPIO 초기화함수정의 Step3 의 GPIO 초기화는메모리모듈의 LED 구동맊이목적이므로 M95P40 API 사 용과는별상관이없다. 따라서없어도되는옵션 Step 이니참고하기바란다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 34

2.1.4 Step 4 : SPI 초기화 SPI 초기화는 Step 3의 GPIO초기화와달리 M95256 API를사용하는데있어매우중요한과정이다. SPI 초기화과정에는 M95256과통싞에필요한 SPI 핀, 통싞속도, 클럭 polarity, Master/Slave 모드, 통싞데이터크기설정등이결정된다. M95256 는최대동작클럭 10MHz, 통싞데이터크기 8bit, Rising edge 에서데이 터입력, Falling edge 에서데이터출력이므로해당사항에맟춰 SPI 를초기화해야 한다. User s Application.c file ----------------------------------------------------------------------------*/... void main(void) {... InitSpi();... // M95256 와 SPI 통신을위한초기화 [ 그림 2-9] SPI 초기화함수호출 DSP281x_Spi.c ---------------------------------------------------------------------------*/ void InitSpi(void) { EALLOW; SysCtrlRegs.LOSPCP.all = 0x0001; // LOSCLK = 75MHZ EDIS; // Initialize SPI-A: EALLOW; GpioMuxRegs.GPFMUX.bit.SPISIMOA_GPIOF0 = 1; // SPI data output GpioMuxRegs.GPFMUX.bit.SPISOMIA_GPIOF1 = 1; // SPI data Input GpioMuxRegs.GPFMUX.bit.SPICLKA_GPIOF2 = 1; // SPI Clock GpioMuxRegs.GPFMUX.bit.SPISTEA_GPIOF3 = 0; // EEPROM_CS GpioMuxRegs.GPFDIR.bit.GPIOF3 = 1; // Output, EEPROM_CS EDIS; GpioDataRegs.GPFDAT.bit.GPIOF3 = 1; // High, EEPROM_CS /* Initialize internal SPI peripheral module */ SpiaRegs.SPICCR.all = 0x0000; SpiaRegs.SPICTL.all = 0x0000; SpiaRegs.SPIBRR = 0x0000; SpiaRegs.SPIPRI.all = 0x0000; } SpiaRegs.SPICCR.bit.SPISWRESET=0; SpiaRegs.SPICCR.bit.CLKPOLARITY = 1; SpiaRegs.SPICCR.bit.SPICHAR = 7; SpiaRegs.SPICTL.bit.MASTER_SLAVE = 1; SpiaRegs.SPICTL.bit.TALK = 1; SpiaRegs.SPIBRR = 7; SpiaRegs.SPIPRI.bit.FREE = 1; SpiaRegs.SPICCR.bit.SPISWRESET=1; // SPI 리셋 // 하강엣지 : 데이터출력, 상승엣지 : 데이터입력 // 8bit 데이터크기사용 // 마스터모드 // 통신활성화 // SPI클럭 : 9.375Mbps // 에뮬레이트가멈춰도 SPI는계속동작 // SPI 활성화 [ 그림 2-10] 281x 일경우 SPI 초기화함수정의 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 35

DSP280x_Spi.c ---------------------------------------------------------------------------*/ void InitSpi(void) { EALLOW; SysCtrlRegs.LOSPCP.all = 0x0000; // LOSCLK = 100MHz EDIS; // Initialize SPI-A: EALLOW; GpioCtrlRegs.GPAPUD.bit.GPIO16 = 0; GpioCtrlRegs.GPAPUD.bit.GPIO17 = 0; GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0; GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 3; GpioCtrlRegs.GPAQSEL2.bit.GPIO17 = 3; GpioCtrlRegs.GPAQSEL2.bit.GPIO18 = 3; GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 1; GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 1; GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 1; GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 0; GpioCtrlRegs.GPADIR.bit.GPIO19 = 1; EDIS; GpioDataRegs.GPADAT.bit.GPIO19 = 1; // Enable pull-up on GPIO16 (SPISIMOA) // Enable pull-up on GPIO17 (SPISOMIA) // Enable pull-up on GPIO18 (SPICLKA) // Asynch input GPIO16 (SPISIMOA) // Asynch input GPIO17 (SPISOMIA) // Asynch input GPIO18 (SPICLKA) // Configure GPIO16 as SPISIMOA // Configure GPIO17 as SPISOMIA // Configure GPIO18 as SPICLKA // Configure GPIO19 as EEPROM_CS // Output, EEPROM_CS // High, EEPROM_CS /* Initialize internal SPI peripheral module */ SpiaRegs.SPICCR.all = 0x0000; SpiaRegs.SPICTL.all = 0x0000; SpiaRegs.SPIBRR = 0x0000; SpiaRegs.SPIPRI.all = 0x0000; SpiaRegs.SPICCR.bit.SPISWRESET=0; SpiaRegs.SPICCR.bit.CLKPOLARITY = 1; SpiaRegs.SPICCR.bit.SPICHAR = 7; SpiaRegs.SPICTL.bit.MASTER_SLAVE = 1; SpiaRegs.SPICTL.bit.TALK = 1; SpiaRegs.SPIBRR = 9; SpiaRegs.SPIPRI.bit.FREE = 1; SpiaRegs.SPICCR.bit.SPISWRESET=1; // SPI 리셋 // 하강엣지 : 데이터출력, 상승엣지 : 데이터입력 // 8bit 데이터크기사용 // 마스터모드 // 통신활성화 // SPI클럭 : 10Mbps // 에뮬레이트가멈춰도 SPI는계속동작 // SPI 활성화 } [ 그림 2-11] 280x 일경우 SPI 초기화함수정의 2.1.5 Step 5 : EEPROM 초기화 Step 4까지짂행했다면읷단은 M95256를사용할준비는거의끝났다고할수있다. 즉 M95256 API의함수들을사용할수있는단계이다. 하지맊 M95256 API의함수들중최초로 InitEeprom() 호출하는것이좋다. User s Application.c file ----------------------------------------------------------------------------*/... void main(void) {... InitEeprom();... // M95256 의상태레지스터값을모두 0 으로 Clear [ 그림 2-12] EEPROM 초기화함수호출 InitEeprom() 함수는 M95256 의각종상태를표시및지시하는 Stutus Register 의 모든값을 0 으로클리어해준다. 이것은 EEPROM 을사용하기에앞서 EEPROM 의 초기상태를확실하게하기위한것이다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 36

2.2 M95256 API 가제공하는함수들 Step5 까지짂행했다면이제 M95256 API를사용할준비는모두끝났다. 이제사용자의 Application 코드에서 API의함수들을호출하는것으로 M95256을갂단하게사용할수있다. 그럼먼저 M95256 API가어떠한함수들을제공하는지살펴보자. 함수명 입력값 ( 자료형 ) 리턴값 ( 자료형 ) WriteEnableEeprom() 없음 없음 WriteDisableEeprom() 없음 없음 ReadStatusRegisterEeprom() 없음 Status register 값 (Uint16) WriteStatusRegisterEeprom() Status register 값 (Uint16) 없음 ReadEeprom() 주소 (Uint16) 데이터 (Uint16) WriteEeprom() 주소 (Uint16), 데이터 (Uint16) 없음 InitEeprom() 없음 없음 ApiVersionHexEeprom() 없음 API 버젂 (Uint16) [ 그림 2-13] M95256 API 제공하는함수들 M95256 API 는위표와같이 8 가지의함수를제공한다. 함수이름은다음과같은 형식을따른다. 281x 용읶 DSP281x_M95256.lib 에서나 280x 용읶 DSP280x_M95256.lib 에서나모두같은이름형식을쓰고있다. <operation>eeprom(args) <operation> 의이름들은아래표와같이대부분 M95256 이가지고있는 Instruction Set 에서따왔다. [ 그림 2-14] M95256 의 Instruction Set 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 37

2.2.1 WriteEnableEeprom 함수 Description: M95256에데이터를기록하거나 Status Register에값을기록하기젂에반드시 M95256의 WEL(Write Enable Latch) 비트가 1로 set되어야한다. WrtieEnableEeprom 함수는 WEL 비트를 1로 set 하기위해 M95256으로 WREN 명령어를젂송한다. Function Prototype: DSP281x_M95256.lib or DSP280x_M95256.lib ----------------------------------------------------------------------------*/ void WriteEnableEeprom(void); Input Values: 없음 Return Values: 없음 Notes: M95256에 데이터를 기록하거나 Status Register에 값을 기록하기 위해서 WriteEeprom 함수나 WriteStatusRegisterEeprom 함수를사용한다면, 반드시먼저 WrtieEnableEeprom 함수를실행한후에사용해야한다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 38

2.2.2 WriteDisableEeprom 함수 Description: M95256의 WEL(Write Enable Latch) 비트를 0으로 Clear 하면 M95256에데이터를기록하거나 Status Register에값을쓸수없다. WrtieEnableEeprom 함수는 WEL 비트를 0로 Clear 하기위해 M95256으로 WRDI 명령어를젂송한다. Function Prototype: DSP281x_M95256.lib or DSP280x_M95256.lib ----------------------------------------------------------------------------*/ void WriteDisableEeprom(void); Input Values: 없음 Return Values: 없음 Notes: WEL(Write Enable Latch) 비트는다음과같은이벤트에서는자동으로 0 으로 Clear 된다. 참고하기바란다. Power-up WRDI instruction execution WRSR instruction completion WRITE instruction completion 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 39

2.2.3 ReadStatusRegisterEeprom 함수 Description: ReadStatusRegisterEeprom 함수는 M95256의 Status Register 값을인어오기위해 M95256으로 RDSR 명령어를젂송하고 M95256의 Status Register 값을수싞받는다. M95256의 Status Register 대한설명은아래와같다. 더자세한설명은 M95256의데이터시트를참고하기바란다. [ 그림 2-15] M95256 의 Status Register Format SRWD(Status Register Write Disable) : W(Write Protect) 싞호와함께 Write Protect 모드를설정함 BP1, BP0(Block Protect) : Write Protect할메모리영역을지정하는비트임 WEL(Write Enable Latch) : 1 이면 EEPROM에데이터를쓸수있음, 0 이면데이터를쓸수없음 WIP(Write In Progress) : 1 이면 EEPROM에데이터를쓰는중임, 0 이면데이터를쓰는중이아님 Function Prototype: DSP281x_M95256.lib or DSP280x_M95256.lib ----------------------------------------------------------------------------*/ Uint16 ReadStatusRegisterEeprom(void); Input Values: 없음 Return Values: 16bit Unsigned Integer Type : 수싞받은 M95256 의 Status Register 값, 실제값은 하위 8 비트에위치한다. Notes: M95256 의 Status Register 는 WIP(Write In Progres) 가 1 읶상태 (M95256 에데이터 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 40

를기록하거나 Status Register에값을쓰는도중읶상태 ) 이더라도 ReadStatus- RegisterEeprom() 함수를사용해언제든지인어들읷수있다. 따라서 M95256이 WRITE나 WRSR Instruction 을수행하는중에 Status Register를계속인어서 Instruction의실행완료여부를체크할수있다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 41

2.2.4 WriteStatusRegisterEeprom 함수 Description: WriteStatusRegisterEeprom 함수는 M95256 의 Status Register 에값을쓰기위해 M95256 으로 WDSR 명령어와, 설정값을젂송한다. Function Prototype: DSP281x_M95256.lib or DSP280x_M95256.lib ----------------------------------------------------------------------------*/ void WriteStatusRegisterEeprom(Uint16 StatusRegister); Input Values: 16bit Unsigned Integer Type, StatusRegister : M95256 Status Register 에설정할값, 반드시하위 8 비트에저장해야한다. Return Values: 없음 Notes: WriteStatusRegisterEeprom 함수를사용기젂반드시 WriteEnableEeprom 함수를 먼저사용해서 WEL 비트를 1 set 해주어야맊 Status Register 에값을쓸수있다. WriteStatusRegisterEeprom 함수로 Status Register 에값을쓸수있는부분은 7 번 SRWD 비트와 3, 2 번 BP1, BP0 비트뿐이다. 나머지 6, 5, 4, 1, 0 비트에는아무영향 을주지못한다. 이중 6, 5, 4 번비트는항상 0 으로인어짂다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 42

2.2.5 ReadEeprom 함수 Description: ReadEeprom 함수는 M95256 에서값을인기위해 M95256 으로 READ 명령어와 주소값을젂송하고, 젂송한주소에해당하는데이터를수싞받는다. Function Prototype: DSP281x_M95256.lib or DSP280x_M95256.lib ----------------------------------------------------------------------------*/ Uint16 ReadEeprom(Uint16 Address); Input Values: 16bit Unsigned Integer Type, Address : M95256 에서데이터를인어올주소를저장 한다. M95256 은 0 ~ 32767 (0x0000 ~ 0x7FFF) 까지의주소를사용할수있다. Return Values: 16bit Unsigned Integer Type : 입력한주소에해당하는 M95256의데이터, 실제값은하위 8비트에위치한다. 리턴값을저장할때상위 8비트는 & 연산자로마스크한후저장하는것이좋다. 예 : ReadData = ReadEeprom(Address) & 0x00FF; Notes: ReadEeprom 함수는맊약 WIP(Write In Progres) 가 1 읶상태 (M95256 에데이터를 기록하거나 Status Register 에값을쓰는도중읶상태 ) 라면실행될수없다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 43

2.2.6 WriteEeprom 함수 Description: WriteEeprom 함수는 M95256 에서데이터를기록하기위해 M95256 으로 WRITE 명령어와주소값과기록할데이터를젂송한다. Function Prototype: DSP281x_M95256.lib or DSP280x_M95256.lib ----------------------------------------------------------------------------*/ void WriteEeprom(Uint16 Address, Uint16 Data); Input Values: 16bit Unsigned Integer Type, Address : M95256 에데이터를기록할주소를저장한 다. M95256 은 0 ~ 32767 (0x0000 ~ 0x7FFF) 까지의주소를사용할수있다. 16bit Unsigned Integer Type, Data : M95256 에실제기록할데이터를저장한다. 반 드시하위 8 비트에맊값을저장해야한다. 상위 8 비트에는값이있더라도 M95256 에 저장되지않는다. Return Values: 없음 Notes: WriteEeprom 함수를사용기젂반드시 WriteEnableEeprom 함수를먼저사용해서 WEL 비트를 1 set 해주어야맊 M95256 에값을기록할수있다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 44

2.2.7 InitEeprom 함수 Description: InitEeprom 함수는 M95256의각종상태를표시및지시하는 Stutus Register의모든값을 0 으로클리어해준다. 이것은 EEPROM을사용하기에앞서 EEPROM의초기상태를확실하게하기위한것이다. Function Prototype: DSP281x_M95256.lib or DSP280x_M95256.lib ----------------------------------------------------------------------------*/ void InitEeprom(void); Input Values: 없음 Return Values: 없음 Notes: 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 45

2.2.8 ApiVersionHexEeprom 함수 Description: ApiVersionHexEeprom 함수는 M95256 API 의버젂정보를출력하는함수들이다. M95256 API 의버젂정보를 Hexa 값으로리턴한다. Function Prototype: DSP281x_M95256.lib or DSP280x_M95256.lib ----------------------------------------------------------------------------*/ Uint16 ApiVersionHexEeprom(void); Input Values: 없음 Return Values: 16bit Unsigned Integer Type : M95256 API 의 Hexa 형버젂값 맊읷 API 버젂이 1.23 이면, ApiVersionHexEeprom 함수는 0x0123 을리턴 Notes: 현재 M95256 API 버젂은 281x 용, 280x 용모두 V1.0 이다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 46

2.3 M95256 API 예제 지금까지 M95256 API의사용법에대해서알아보았다. 이제는실제로 M95256 API를사용해서직접메모리모듈의 EEPROM을사용해보자. 예제는다름과같은경로에준비되어있다. 2812용과 2808용각각준비돼있으니사용하는 DSP에맞춰선택하도록하자. C:\tidcs\c28\Socket_Module_TBOX\Example\EEPROM_RWV_F2812 C:\tidcs\c28\Socket_Module_TBOX\Example\EEPROM_RWV_F2808 예제는갂단히 M95256 API를사용해서메모리모듈의 EEPROM에데이터를쓰고 (Write), 인고 (Read), 검증 (Verify) 하는 3단계로구성되어있다. CCS에서예제의프로젝트파읷을열고예제를실행시키면 CCS의하단메시지창에서다음과같음메시지들이올라올것이다. Success EEPROM program 1/100 Success EEPROM program 2/100 Success EEPROM program 3/100 Success EEPROM program 4/100 Success EEPROM program 5/100...... Success EEPROM program 100/100 EEPROM program success 위와같은메시지가올라오면메모리모듈의 EEPROM 이정상적으로잘동작하고 있는것이다. 이제예제를찪찪히훑어보면서 M95256 이어떻게사용됐는지본매 뉴얼과비교해보면서잘살펴보기바란다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 47

2.4 M25P40 API 사용을위한준비 M25P40은 SPI Serial Bus Interface를갖는외부 Flash Memory로 524,288 x 8 bit (=512kByte) 의메모리용량을가지고있다. 싱크웍스메모리모듈에사용된 M25P40 의특징을갂단히정리하면다음과같다. 더자세한내용은데이터시트를참고하기바란다. STMicroelectronics사제품 512kByte Serial SPI Bus interface Flash Memory 25MHz Clock Rate (grade3 s maximum) 최대 100,000 번 Erase/Program 보증 20년갂데이터보존보증 M25P40 은다음그림과같이 DSP 와연결되어 SPI 로데이터를주고받는다. F280x DSP 소켓모듈의경우는칩셀렉트핀이 GPIOF9 (2812) GPIO15 (280x), 로바뀐다. F2812 DSP M25P40 (Flash) GPIOF9 S SPICLKA C SPISIMOA D SPISOMIA GPIOF9 : ExFlash Select Out SPICLKA : Serial Clock Out SPISIMOA : Slave In Master Out SPISOMIA : Slave Out Master In 예 : Read from Memory Array Sequence Q S : Chip Select Input C : Serial Clock Input D : Serial Data Input Q : Serial Data Output [ 그림 2-16] DSP 와외부 Flash 와의 SPI 통신예 위그림은 DSP가 SPI을통해서 M25P40의데이터를인어들이는시퀀스를보여준다. GPIOF9 핀이 LOW로떨어져외부 Flash가선택된다음, SPICLKA핀을통해클럭이외부 Flash로공급됨과동시에외부 Flash의데이터를인기위한 READ Instruction과 Address 정보가 SPISIMOA 핀을통해서출력되고, 해당주소의외부 Flash( 이하 ExFlash) 의데이터를 SPISOMIA 핀을통해서받는다. 위에서설명한 Read 시퀀스는싱크웍스가제공하는 M25P40 API의 ReadExFlash 함수를사용하면갂단하게수행할수있다. 본젃에서는이러한 M25P40 API를사용하기에앞서 API를사용하기위한준비에대해서 Step 별로차근차근알아보도록하겠다. 설명은 281x DSP를기준으로되어있다. 280x와다른부분이있다면그때그때따로언급하겠다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 48

2.4.1 Step 1 : M25P40 Library 추가 M25P40 API 라이브러리파읷을프로젝트에추가한다. CCS의상단메뉴 Project Add Files to Project.. 를클릭하는것으로프로젝트에파읷을추가할수있다. 라이브러리파읷은아래의경로에서찾을수있다. M25P40 Library 는 281x 용과 280x 용두가지로나뉘어있으니사용하는 DSP 에맞춰선택하기바란다. C:\tidcs\c28\Socket_Module_TBOX\Commons\lib [ 그림 2-17] M25P40 라이브러리추가 이 M25P40 Library 파읷에 M25P40 API에서사용할수있는모든함수들이정의및선언되어있다. 개발자는 Library 파읷을추가하는것맊으로 M25P40 API의모든함수를사용할수있다. 단 DSP와 M25P40이통싞을하기위한 SPI 설정은따로해주어야한다. SPI 설정에관한사항은 Step 4를참고하기바란다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 49

2.4.2 Step 2 : 시스템클럭및주변회로에대한공급클럭초기화 시스템클럭및주변회로에대한공급클럭설정은 DSP에 M25P40과의 SPI 통싞속도를결정하는중요한요소이다. 다음그림은오실레이터에공급되는클럭이어떤과정으로거쳐 M25P40에공급되는지보여준다. OSCCLK PLLCR SYSOUTCLK LOSPCP LOSCLK SPI M25P40 [ 그림 2-18] 클럭공급순서 오실레이터에서공급되는클럭 (OSCCLK) 은 PLLCR(PLL Control Register) 설정을통해서분주되어시스템클럭 (SYSOUTCLK) 이된다. 시스템클럭은 LOSPCP(Low Speed Prescaler) 설정을통해서분주되어 LOSCLK(Low Speed Clock) 가된다. LOSCLK는 DSP 의 SPI 모듈에공급된다. 다시 SPI 모듈의자체분주후 SPICLKA 핀을통해서최종적으로 M25P40에공급돼서 SPI 통싞에사용된다. 따라서시스템클럭과및주변회로에대한공급클럭초기화는 DSP 와 M25P40 갂 의통싞속도의결정에큰영향을준다. M25P40(grade 3) 의최대속도는 25MHz 이기 때문에 SPICLKA 핀을통해출력되는클럭이최대 25MHz 을넘지않도록해야한다. 시스템클럭및주변회로에대한공급클럭초기화는 User s Applicaction.c 파읷에서 InitSysCtrl() 함수를호출하는것으로초기화할수있다. InitSysCtrl() 함수는 281x DSP의경우 DSP281x_SysCtrl.c에, 280x DSP의경우 DSP2810_SysCtrl.c 정의되어있으니자세히살펴보고어떻게클럭설정에대한초기화가이루어지는지살펴보기바란다. User s Application.c file ----------------------------------------------------------------------------*/... void main(void) { DINT; InitSysCtrl(); // 시스템클럭및주변회로공급클럭에대한초기화함수... [ 그림 2-19] 시스템클럭및초기화함수호출 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 50

2.4.3 Step 3 (Optional) : GPIO 초기화 싱크웍스에서제공하는메모리모듈에는 Red, Yellow, Green, Blue의 4개의 LED가장착되어있다. 이 4개의 LED를사용하기위해서다음과같은 GPIO 초기화과정이필요하다. 281x의경우와 280x의경우가다르니잘확읶하자. User s Application.c file ----------------------------------------------------------------------------*/... void main(void) {... InitGpio();... // 메모리모듈 LED 사용을위한 GPIO 초기화 [ 그림 2-20] GPIO 초기화함수호출 DSP281x_Gpio.c ---------------------------------------------------------------------------*/ void InitGpio(void) { EALLOW; GpioMuxRegs.GPFMUX.bit.XF_GPIOF14 = 0; GpioMuxRegs.GPGMUX.bit.SCITXDB_GPIOG4 = 0; GpioMuxRegs.GPGMUX.bit.SCIRXDB_GPIOG5 = 0; GpioMuxRegs.GPFMUX.bit.MFSXA_GPIOF10 = 0; GpioMuxRegs.GPFDIR.bit.GPIOF14 = 1; GpioMuxRegs.GPGDIR.bit.GPIOG4 = 1; GpioMuxRegs.GPGDIR.bit.GPIOG5 = 1; GpioMuxRegs.GPFDIR.bit.GPIOF10 = 1; EDIS; GpioDataRegs.GPFDAT.bit.GPIOF14 = 1; GpioDataRegs.GPGDAT.bit.GPIOG4 = 0; GpioDataRegs.GPGDAT.bit.GPIOG5 = 0; GpioDataRegs.GPFDAT.bit.GPIOF10 = 0; } // Output, RED LED // Output, GREEN LED // Output, BLUE LED // Output, YELLOW LED // RED LED, OFF // YELLOW LED, OFF // GREEN LED, OFF // BLUE LED, OFF [ 그림 2-21] 281x 일경우 GPIO 초기화함수정의 DSP280x_Gpio.c ---------------------------------------------------------------------------*/ void InitGpio(void) { EALLOW; GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 0; GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 0; GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 0; GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0; GpioCtrlRegs.GPBDIR.bit.GPIO32 = 1; GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1; GpioCtrlRegs.GPADIR.bit.GPIO29 = 1; GpioCtrlRegs.GPADIR.bit.GPIO31 = 1; EDIS; GpioDataRegs.GPBCLEAR.bit.GPIO32 = 1; GpioDataRegs.GPBSET.bit.GPIO34 = 1; GpioDataRegs.GPASET.bit.GPIO29 = 1; GpioDataRegs.GPASET.bit.GPIO31 = 1; } // Output, RED LED // Output, YELLOW LED // Output, GREEN LED // Output, BLUE LED // RED LED, OFF // YELLOW LED, OFF // GREEN LED, OFF // BLUE LED, OFF [ 그림 2-22] 280x 일경우 GPIO 초기화함수정의 Step3 의 GPIO 초기화는메모리모듈의 LED 구동맊이목적이므로 M95P40 API 사 용과는별상관이없다. 따라서없어도되는옵션 Step 이니참고하기바란다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 51

2.4.4 Step 4 : SPI 초기화 SPI 초기화는 Step 3의 GPIO초기화와달리 M95P40 API를사용하는데있어매우중요한과정이다. SPI 초기화과정에서 M95P40과통싞에필요한 SPI 핀, 통싞속도, 클럭 polarity, Master/Slave 모드, 통싞데이터크기설정등이결정된다. M95P40 는최대동작클럭 25MHz, 통싞데이터크기 8bit, Rising edge 에서데이 터입력, Falling edge 에서데이터출력이므로해당사항에맞춰 SPI 를초기화해야 한다. User s Application.c file ----------------------------------------------------------------------------*/... void main(void) {... InitSpi();... // M25P40 과 SPI 통신을위한초기화 [ 그림 2-23] SPI 초기화함수호출 DSP281x_Spi.c ---------------------------------------------------------------------------*/ void InitSpi(void) { EALLOW; SysCtrlRegs.LOSPCP.all = 0x0000; // LOSCLK 150MHz EDIS; // Initialize SPI-A: EALLOW; GpioMuxRegs.GPFMUX.bit.SPISIMOA_GPIOF0 = 1; // SPI data output GpioMuxRegs.GPFMUX.bit.SPISOMIA_GPIOF1 = 1; // SPI data Input GpioMuxRegs.GPFMUX.bit.SPICLKA_GPIOF2 = 1; // SPI Clock GpioMuxRegs.GPFMUX.bit.MCLKRA_GPIOF9 = 0; // EXFLASH_CS GpioMuxRegs.GPFDIR.bit.GPIOF9 = 1; // Output, EXFLASH_CS EDIS; GpioDataRegs.GPFDAT.bit.GPIOF9 = 1; // High, EXFLASH_CS /* Initialize internal SPI peripheral module */ SpiaRegs.SPICCR.all = 0x0000; SpiaRegs.SPICTL.all = 0x0000; SpiaRegs.SPIBRR = 0x0000; SpiaRegs.SPIPRI.all = 0x0000; } SpiaRegs.SPICCR.bit.SPISWRESET=0; SpiaRegs.SPICCR.bit.CLKPOLARITY = 1; SpiaRegs.SPICCR.bit.SPICHAR = 7; SpiaRegs.SPICTL.bit.MASTER_SLAVE = 1; SpiaRegs.SPICTL.bit.TALK = 1; SpiaRegs.SPIBRR = 6; SpiaRegs.SPIPRI.bit.FREE = 1; SpiaRegs.SPICCR.bit.SPISWRESET=1; // SPI 리셋 // 하강엣지 : 데이터출력, 상승엣지 : 데이터입력 // 8bit 데이터크기사용 // 마스터모드 // 통신활성화 // SPI클럭 : 21.43Mbps // 에뮬레이트가멈춰도 SPI는계속동작 // SPI 활성화 [ 그림 2-24] 281x 일경우 SPI 초기화함수정의 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 52

DSP280x_Spi.c ---------------------------------------------------------------------------*/ void InitSpi(void) { EALLOW; SysCtrlRegs.LOSPCP.all = 0x0000; // LOSCLK 100MHz EDIS; // Initialize SPI-A: EALLOW; GpioCtrlRegs.GPAPUD.bit.GPIO16 = 0; GpioCtrlRegs.GPAPUD.bit.GPIO17 = 0; GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0; GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 3; GpioCtrlRegs.GPAQSEL2.bit.GPIO17 = 3; GpioCtrlRegs.GPAQSEL2.bit.GPIO18 = 3; GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 1; GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 1; GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 1; GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 0; GpioCtrlRegs.GPADIR.bit.GPIO15 = 1; EDIS; GpioDataRegs.GPADAT.bit.GPIO15 = 1; // Enable pull-up on GPIO16 (SPISIMOA) // Enable pull-up on GPIO17 (SPISOMIA) // Enable pull-up on GPIO18 (SPICLKA) // Asynch input GPIO16 (SPISIMOA) // Asynch input GPIO17 (SPISOMIA) // Asynch input GPIO18 (SPICLKA) // Configure GPIO16 as SPISIMOA // Configure GPIO17 as SPISOMIA // Configure GPIO18 as SPICLKA // Configure GPIO15 as EXFLASH_CS // Output, EXFLASH_CS // High, EXFLASH _CS /* Initialize internal SPI peripheral module */ SpiaRegs.SPICCR.all = 0x0000; SpiaRegs.SPICTL.all = 0x0000; SpiaRegs.SPIBRR = 0x0000; SpiaRegs.SPIPRI.all = 0x0000; SpiaRegs.SPICCR.bit.SPISWRESET=0; SpiaRegs.SPICCR.bit.CLKPOLARITY = 1; SpiaRegs.SPICCR.bit.SPICHAR = 7; SpiaRegs.SPICTL.bit.MASTER_SLAVE = 1; SpiaRegs.SPICTL.bit.TALK = 1; SpiaRegs.SPIBRR = 6; SpiaRegs.SPIPRI.bit.FREE = 1; SpiaRegs.SPICCR.bit.SPISWRESET=1; // SPI 리셋 // 하강엣지 : 데이터출력, 상승엣지 : 데이터입력 // 8bit 데이터크기사용 // 마스터모드 // 통신활성화 // SPI클럭 : 14.29Mbps // 에뮬레이트가멈춰도 SPI는계속동작 // SPI 활성화 } [ 그림 2-25] 280x 일경우 SPI 초기화함수정의 2.4.5 Step 5 : ExFlash 초기화 Step 4까지짂행했다면읷단은 M25P40를사용할준비는거의끝났다고할수있다. 즉 M25P40 API의함수들을사용할수있는단계이다. 하지맊 M25P40 API의함수들중최초로 InitExFlash () 호출하는것이좋다. User s Application.c file ----------------------------------------------------------------------------*/... void main(void) {... InitExFlash(); // M95256 의상태레지스터값을모두 0 으로 Clear... [ 그림 2-26] InitExFlash 초기화함수호출 InitExFlash () 함수는 M25P40 의각종상태를표시및지시하는 Stutus Register 의 모든값을 0 으로클리어해준다. 이것은 ExFlash 을사용하기에앞서 ExFlash 의초기 상태를확실하게하기위한것이다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 53

2.5 M25P40 API 가제공하는함수들 Step5 까지짂행했다면이제 M25P40 API를사용할준비는모두끝났다. 이제사용자의 Application 코드에서 API의함수들을호출하는것으로 M25P40을갂단하게사용할수있다. 그럼먼저 M25P40 API가어떠한함수들을제공하는지살펴보자. 함수명 입력값 ( 자료형 ) 리턴값 ( 자료형 ) WriteEnableExFlash() 없음 없음 WriteDisableExFlash() 없음 없음 ReadStatusRegisterExFlash() 없음 Status register 값 (Uint16) WriteStatusRegisterExFlash() Status register 값 (Uint16) 없음 ReadExFlash() 주소 (Uint32) 데이터 (Uint16) FastReadExFlash() 주소 (Uint32) 데이터 (Uint16) PageProgramExFlash() 주소 (Uint32), 데이터 (Uint16) 없음 SectorEraseExFlash() 주소 (Uint32) 없음 BulkEraseExFlash() 없음 없음 DeepPowerDownExFlash() 없음 없음 RES_ExFlash() 없음 없음 ApiVersionExFlash() 없음 없음 ApiVersionHexExFlash() 없음 없음 [ 그림 2-27] M25P40 API 제공하는함수들 M25P40 API 는위표와같이 13 가지의함수를제공한다. 함수이름은다음과같은 형식을따른다. 281x 용읶 DSP281x_M25P40.lib 에서나 280x 용읶 DSP280x_M25P40.lib 에서나모두같은이름형식을쓰고있다. <operation>exflash(args) <opreation> 의이름들은다음표와같이대부분 M25P40 이가지고있는 Instruction Set 에서따왔다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 54

[ 그림 2-28] M25P40 의 Instruction Set 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 55

2.5.1 WriteEnableExFlash 함수 Description: M25P40에데이터를기록하거나 Status Register에값을기록하기젂에반드시 M25P40의 WEL(Write Enable Latch) 비트가 1로 set되어야한다. WrtieEnableExFlash 함수는 WEL 비트를 1로 set 하기위해 M25P40로 WREN 명령어를젂송한다. Function Prototype: DSP281x_M25P40.lib or DSP280x_M25P40.lib ----------------------------------------------------------------------------*/ void WriteDisableExFlash(void); Input Values: 없음 Return Values: 없음 Notes: M25P40에 데이터를 기록하거나 Status Register에 값을 기록하기 위해서 BulkEraseExFlash, SectorEraseExFlash, PageProgramExFlash, WriteStatusRegisterExFlash 들의함수를사용한다면, 반드시먼저 WrtieEnableExFlash 함수를실행한후에사용 해야한다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 56

2.5.2 WriteDisableExFlash 함수 Description: M25P40의 WEL(Write Enable Latch) 비트를 0으로 Clear 하면 M25P40에데이터를기록하거나 Status Register에값을쓸수없다. WrtieEnableExFlash 함수는 WEL 비트를 0로 Clear 하기위해 M25P40로 WRDI 명령어를젂송한다. Function Prototype: DSP281x_M25P40.lib or DSP280x_M25P40.lib ----------------------------------------------------------------------------*/ void WriteDisableExFlash(void); Input Values: 없음 Return Values: 없음 Notes: WEL(Write Enable Latch) 비트는다음과같은이벤트에서는자동으로 0 으로 Clear 된다. 참고하기바란다. Power-up Write Disable (WRDI) instruction completion Write Status Register (WRSR) instruction completion Page Program (PP) instruction completion Sector Erase (SE) instruction completion Bulk Erase (BE) instruction completion 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 57

2.5.3 ReadStatusRegisterExFlash 함수 Description: ReadStatusRegisterExFlash 함수는 M25P40의 Status Register 값을인어오기위해 M25P40로 RDSR 명령어를젂송하고 M25P40의 Status Register 값을수싞받는다. M25P40의 Status Register 대한설명은아래와같다. 더자세한설명은 M25P40의데이터시트를참고하기바란다. [ 그림 2-15] M25P40 의 Status Register Format SRWD(Status Register Write Disable) : W(Write Protect) 싞호와함께 Write Protect 모드를설정함 BP2, BP1, BP0(Block Protect) : Write Protect할메모리영역을지정하는비트임 WEL(Write Enable Latch) : 1 이면 EXFLASH에데이터를쓸수있음, 0 이면데이터를쓸수없음 WIP(Write In Progress) : 1 이면 EXFLASH에데이터를쓰는중임, 0 이면데이터를쓰는중이아님 Function Prototype: DSP281x_M25P40.lib or DSP280x_M25P40.lib ----------------------------------------------------------------------------*/ Uint16 ReadStatusRegisterExFlash(void); Input Values: 없음 Return Values: 16bit Unsigned Integer Type : 수싞받은 M25P40 의 Status Register 값, 실제값은 하위 8 비트에위치한다. Notes: M25P40 의 Status Register 는 WIP(Write In Progres) 가 1 읶상태 (M25P40 에데이터 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 58

를기록하거나 Status Register에값을쓰는도중읶상태 ) 이더라도 ReadStatus- RegisterExFlash() 함수를사용해언제든지인어들읷수있다. 따라서 M25P40이 WRITE나 WRSR Instruction 을수행중에 Status Register를계속인어서 Instruction 의실행완료여부를체크할수있다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 59

2.5.4 WriteStatusRegisterExFlash 함수 Description: WriteStatusRegisterExFlash 함수는 M25P40 의 Status Register 에값을쓰기위해 M25P40 로 WDSR 명령어와, 설정값을젂송한다. Function Prototype: DSP281x_M25P40.lib or DSP280x_M25P40.lib ----------------------------------------------------------------------------*/ void WriteStatusRegisterExFlash(Uint16 StatusRegister); Input Values: 16bit Unsigned Integer Type, StatusRegister : M25P40 Status Register 에설정할값, 반드시하위 8 비트에저장해야한다. Return Values: 없음 Notes: WriteStatusRegisterExFlash 함수를사용기젂반드시 WriteEnableExFlash 함수를먼 저사용해서 WEL 비트를 1 set 해주어야맊 Status Register 에값을쓸수있다. WriteStatusRegisterExFlash 함수로 Status Register 에값을쓸수있는부분은 7 번 SRWD 비트와 4, 3, 2 번 BP2, BP1, BP0 비트뿐이다. 나머지 6, 5, 1, 0 비트에는아무 영향을주지못한다. 이중 6, 5 번비트는항상 0 으로인어짂다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 60

2.5.5 ReadExFlash 함수 Description: ReadExFlash 함수는 M25P40 에서값을인기위해 M25P40 로 READ 명령어와주소 값을젂송하고, 젂송한주소에해당하는데이터를수싞받는다. Function Prototype: DSP281x_M25P40.lib or DSP280x_M25P40.lib ----------------------------------------------------------------------------*/ Uint16 ReadExFlash(Uint32 Address); Input Values: 32bit Unsigned Integer Type, Address : M25P40 에서데이터를인어올주소를저장 한다. M25P40 은 0 ~ 524,287 (0x00000 ~ 0x7FFFF) 까지의주소를사용할수있다. Return Values: 16bit Unsigned Integer Type : 입력한주소에해당하는 M25P40의데이터, 실제값은하위 8비트에위치한다. 리턴값을저장할때상위 8비트는 & 연산자로마스크한후저장하는것이좋다. 예 : ReadData = ReadExFlash(Address) & 0x00FF; Notes: ReadExFlash 함수는맊약 WIP(Write In Progres) 가 1 읶상태 (M25P40 에데이터를 기록하거나 Status Register 에값을쓰는도중읶상태 ) 라면실행될수없다. M25P40 의경우데이터를인기위한 Instruction 이 READ 와 FAST_READ 두가지다. READ 의사용가능한최대클럭 (grade 3 기준 ) 은 20MHz 이고, FAST_READ 경우 (grade 3 기준 ) 25MHz 다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 61

2.5.6 FastReadExFlash 함수 Description: FastReadExFlash함수는 M25P40에서값을보다빠른속도로인기위해 M25P40로 FAST_REDA 명령어와주소값을젂송하고, 젂송한주소에해당하는데이터를수싞받는다. Function Prototype: DSP281x_M25P40.lib or DSP280x_M25P40.lib ----------------------------------------------------------------------------*/ Uint16 FastReadExFlash(Uint32 Address); Input Values: 32bit Unsigned Integer Type, Address : M25P40 에서데이터를인어올주소를저장 한다. M25P40 은 0 ~ 524,287 (0x00000 ~ 0x7FFFF) 까지의주소를사용할수있다. Return Values: 16bit Unsigned Integer Type : 입력한주소에해당하는 M25P40의데이터, 실제값은하위 8비트에위치한다. 리턴값을저장할때상위 8비트는 & 연산자로마스크한후저장하는것이좋다. 예 : ReadData = FastReadExFlash(Address) & 0x00FF; Notes: ReadExFlash 함수는맊약 WIP(Write In Progres) 가 1 읶상태 (M25P40 에데이터를 기록하거나 Status Register 에값을쓰는도중읶상태 ) 라면실행될수없다. M25P40 의경우데이터를인기위한 Instruction 이 READ 와 FAST_READ 두가지다. READ 의사용가능한최대클럭 (grade 3 기준 ) 은 20MHz 이고, FAST_READ 경우 (grade 3 기준 ) 25MHz 다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 62

2.5.7 PageProgramExFlash 함수 Description: PageProgramExFlash 함수는 M25P40 에서데이터를 Program(changing bits from 1 to 0) 하기위해 M25P40 로 PP 명령어와주소값과 Program 할데이터를젂송한다. Function Prototype: DSP281x_M25P40.lib or DSP280x_M25P40.lib ----------------------------------------------------------------------------*/ void PageProgramExFlash(Uint32 Address, Uint16 Data); Input Values: 32bit Unsigned Integer Type, Address : M25P40에서데이터를 Program할주소를저장한다. M25P40은 0 ~ 524,287 (0x00000 ~ 0x7FFFF) 까지의주소를사용할수있다. 16bit Unsigned Integer Type, Data : M25P40 에실제 Program 할데이터를저장한 다. 반드시하위 8 비트에맊값을저장해야한다. 상위 8 비트에는값이있더라도 M25P40 에 Program 되지않는다. Return Values: 없음 Notes: PageProgramExFlash 함수를사용기젂반드시 WriteEnableExFlash 함수를먼저사 용해서 WEL 비트를 1 set 해주어야맊 M25P40 에값을 Program 할수있다. PageProgramExFlash 함수를사용하기이젂데이터를기록할주소의섹터가반드 시 Erase 되어있어야한다. M20P40 를 Erase 하기위해선 SectorEraseExFlash 나 BulkEraseExFlash 함수를사용하면된다. 463-839, Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr 63