MICROCHIP PIC24 플래시 프로그래밍

제품 정보
플래시 프로그래밍
dsPIC33/PIC24 장치 제품군에는 사용자 코드 실행을 위한 내부 프로그래밍 가능 플래시 프로그램 메모리가 있습니다. 이 메모리를 프로그래밍하는 방법에는 최대 세 가지가 있습니다.
- 테이블 명령어 연산
- ICSP(회로 내 직렬 프로그래밍)
- 인애플리케이션 프로그래밍(IAP)
테이블 명령어는 플래시 프로그램 메모리 공간과 dsPIC33/PIC24 장치의 데이터 메모리 공간 간에 데이터를 전송하는 방법을 제공합니다. TBLRDL 명령은 프로그램 메모리 공간의 비트[15:0]에서 읽는 데 사용됩니다. TBLWTL 명령어는 플래시 프로그램 메모리 공간의 비트[15:0]에 쓰는 데 사용됩니다. TBLRDL 및 TBLWTL은 Word 모드 또는 Byte 모드에서 플래시 프로그램 메모리에 액세스할 수 있습니다.
플래시 프로그램 메모리 주소 외에도 테이블 명령어는 기록될 플래시 프로그램 메모리 데이터의 소스 또는 플래시 프로그램의 대상인 W 레지스터(또는 메모리 위치에 대한 W 레지스터 포인터)도 지정합니다. 메모리 읽기.
이 섹션에서는 플래시 프로그램 메모리를 프로그래밍하는 기술을 설명합니다. dsPIC33/PIC24 장치 제품군에는 사용자 코드 실행을 위한 내부 프로그래밍 가능 플래시 프로그램 메모리가 있습니다. 이 메모리를 프로그래밍하는 방법에는 최대 세 가지가 있습니다.
- 런타임 자체 프로그래밍(RTSP)
- ICSP™(In-Circuit Serial Programming™)
- 향상된 회로 내 직렬 프로그래밍(EICSP)
RTSP는 실행 중에 애플리케이션 소프트웨어에 의해 수행되는 반면, ICSP 및 EICSP는 장치에 대한 직렬 데이터 연결을 사용하여 외부 프로그래머에서 수행됩니다. ICSP와 EICSP는 RTSP보다 훨씬 빠른 프로그래밍 시간을 허용합니다. RTSP 기술은 섹션 4.0 “RTSP(런타임 자체 프로그래밍)”에 설명되어 있습니다. ICSP 및 EICSP 프로토콜은 각 장치에 대한 프로그래밍 사양 문서에 정의되어 있으며 Microchip에서 다운로드할 수 있습니다. web사이트 (http://www.microchip.com). C 언어로 프로그래밍할 때 Flash 프로그래밍을 용이하게 하는 여러 내장 함수를 사용할 수 있습니다. 내장 기능에 대한 자세한 내용은 "MPLAB® XC16 C 컴파일러 사용 설명서"(DS50002071)를 참조하십시오.
제품 사용 지침
플래시 프로그램 메모리를 프로그래밍하려면 다음 단계를 따르십시오.
- 제품군 참조 매뉴얼 섹션이 사용 중인 장치를 지원하는지 확인하려면 장치 데이터 시트를 참조하십시오.
- Microchip Worldwide에서 장치 데이터 시트 및 제품군 참조 매뉴얼 섹션을 다운로드하세요. Web사이트 위치: http://www.microchip.com.
- 메모리를 프로그래밍하는 세 가지 방법 중 하나를 선택하십시오(테이블 명령어 작동, ICSP(In-Circuit Serial 프로그래밍), IAP(In-Application 프로그래밍)).
- 테이블 명령어 연산을 사용하는 경우 TBLRDL 명령어를 사용하여 프로그램 메모리 공간의 비트[15:0]에서 읽고 TBLWTL 명령어를 사용하여 플래시 프로그램 메모리 공간의 비트[15:0]에 씁니다.
- 기록할 플래시 프로그램 메모리 데이터의 소스 또는 플래시 프로그램 메모리 읽기의 대상으로 W 레지스터(또는 메모리 위치에 대한 W 레지스터 포인터)를 지정해야 합니다.
플래시 프로그램 메모리 프로그래밍에 대한 추가 정보 및 세부 사항은 dsPIC33/PIC24 제품군 참조 매뉴얼을 참조하십시오.
테이블 지시 작동
테이블 명령어는 플래시 프로그램 메모리 공간과 dsPIC33/PIC24 장치의 데이터 메모리 공간 간에 데이터를 전송하는 방법을 제공합니다. 이 섹션에서는 플래시 프로그램 메모리 프로그래밍 중에 사용되는 테이블 명령어에 대한 요약을 제공합니다. 네 가지 기본 테이블 지침이 있습니다.
- TLRDL: 테이블 읽기 낮음
- TBLRDH: 테이블 읽기 높음
- TBLWTL: 테이블 쓰기 낮음
- TBLWTH: 테이블 쓰기 높음
TBLRDL 명령은 프로그램 메모리 공간의 비트[15:0]에서 읽는 데 사용됩니다. TBLWTL 명령어는 플래시 프로그램 메모리 공간의 비트[15:0]에 쓰는 데 사용됩니다. TBLRDL 및 TBLWTL은 Word 모드 또는 Byte 모드에서 플래시 프로그램 메모리에 액세스할 수 있습니다.
TBLRDH 및 TBLWTH 명령어는 프로그램 메모리 공간의 비트[23:16]를 읽거나 쓰는 데 사용됩니다. TBLRDH 및 TBLWTH는 워드 또는 바이트 모드에서 플래시 프로그램 메모리에 액세스할 수 있습니다. 플래시 프로그램 메모리의 폭은 24비트에 불과하므로 TBLRDH 및 TBLWTH 명령어는 존재하지 않는 플래시 프로그램 메모리의 상위 바이트를 주소 지정할 수 있습니다. 이 바이트를 "팬텀 바이트"라고 합니다. 팬텀 바이트를 읽으면 0x00이 반환됩니다. 팬텀 바이트에 대한 쓰기는 효과가 없습니다. 24비트 플래시 프로그램 메모리는 두 개의 병렬 16비트 공간으로 간주될 수 있으며 각 공간은 동일한 주소 범위를 공유합니다. 따라서 TBLRDL 및 TBLWTL 명령은 "낮은" 프로그램 메모리 공간(PM[15:0])에 액세스합니다. TBLRDH 및 TBLWTH 명령어는 "높은" 프로그램 메모리 공간(PM[31:16])에 액세스합니다. PM[31:24]에 대한 모든 읽기 또는 쓰기는 팬텀(구현되지 않은) 바이트에 액세스합니다. 테이블 명령어 중 하나가 바이트 모드에서 사용되는 경우 테이블 주소의 최하위 비트(LSb)가 바이트 선택 비트로 사용됩니다. LSb는 상위 또는 하위 프로그램 메모리 공간의 어느 바이트에 액세스할지 결정합니다.
그림 2-1은 테이블 명령어를 사용하여 플래시 프로그램 메모리의 주소를 지정하는 방법을 보여줍니다. 24비트 프로그램 메모리 주소는 TBLPAG 레지스터의 비트[7:0]과 테이블 명령어에 지정된 W 레지스터의 유효 주소(EA)를 사용하여 구성됩니다. 24비트 프로그램 카운터(PC)는 참조용으로 그림 2-1에 설명되어 있습니다. EA의 상위 23비트는 플래시 프로그램 메모리 위치를 선택하는 데 사용됩니다.
바이트 모드 테이블 명령어의 경우 W 레지스터 EA의 LSb는 16비트 플래시 프로그램 메모리 워드의 어느 바이트가 주소 지정되는지 선택하는 데 사용됩니다. '1'은 비트[15:8]을 선택하고 '0'은 비트[7:0]을 선택합니다. W 레지스터 EA의 LSb는 Word 모드의 테이블 명령어에 대해 무시됩니다. 플래시 프로그램 메모리 주소 외에도 테이블 명령어는 기록될 플래시 프로그램 메모리 데이터의 소스 또는 플래시 프로그램의 대상인 W 레지스터(또는 메모리 위치에 대한 W 레지스터 포인터)도 지정합니다. 메모리 읽기. 바이트 모드의 테이블 쓰기 작업의 경우 소스 작업 레지스터의 비트[15:8]는 무시됩니다.
테이블 읽기 명령어 사용
테이블 읽기에는 두 단계가 필요합니다.
- 주소 포인터는 TBLPAG 레지스터와 W 레지스터 중 하나를 사용하여 설정됩니다.
- 주소 위치의 플래시 프로그램 메모리 내용을 읽을 수 있습니다.
- 단어 읽기 모드
Ex에 표시된 코드ample 2-1 및 Examp2-2절은 워드 모드에서 테이블 명령어를 이용하여 플래시 프로그램 메모리의 워드를 읽는 방법을 보여준다.

- 읽기 바이트 모드
Ex에 표시된 코드amp파일 2-3은 하위 바이트 읽기 시 사후 증가 연산자를 보여줍니다. 이는 작업 레지스터의 주소를 0씩 증가시킵니다. 이는 세 번째 쓰기 명령어의 중간 바이트에 액세스하기 위해 EA[1]을 '0'로 설정합니다. 마지막 사후 증분은 WXNUMX을 다시 짝수 주소로 설정하여 다음 플래시 프로그램 메모리 위치를 가리킵니다.
- 테이블 쓰기 래치
테이블 쓰기 명령어는 비휘발성 프로그램 메모리에 직접 쓰지 않습니다. 대신, 테이블 쓰기 명령어는 쓰기 데이터를 저장하는 쓰기 래치를 로드합니다. NVM 주소 레지스터는 래치된 데이터가 기록되어야 하는 첫 번째 주소로 로드되어야 합니다. 모든 쓰기 래치가 로드되면 특수한 명령어 시퀀스를 실행하여 실제 메모리 프로그래밍 작업이 시작됩니다. 프로그래밍하는 동안 하드웨어는 쓰기 래치의 데이터를 플래시 메모리로 전송합니다. 쓰기 래치는 항상 주소 0xFA0000에서 시작하고 워드 프로그래밍의 경우 0xFA0002까지, 행 프로그래밍이 있는 장치의 경우 0xFA00FE까지 확장됩니다.
메모: 쓰기 래치의 수는 장치에 따라 다릅니다. 사용 가능한 쓰기 래치 수는 특정 장치 데이터 시트의 "플래시 프로그램 메모리" 장을 참조하십시오.
컨트롤 레지스터
여러 SFR(특수 기능 레지스터)은 플래시 프로그램 메모리 삭제 및 쓰기 작업을 프로그래밍하는 데 사용됩니다(NVMCON, NVMKEY 및 NVM 주소 레지스터 NVMADR 및 NVMADRU).
NVMCON 등록
NVMCON 레지스터는 플래시 및 프로그램/삭제 작업을 위한 기본 제어 레지스터입니다. 이 레지스터는 삭제 또는 프로그램 작업을 수행할지 여부를 선택하고 프로그램 또는 삭제 사이클을 시작할 수 있습니다. NVMCON 레지스터는 레지스터 3-1에 표시됩니다. NVMCON의 하위 바이트는 수행할 NVM 작업 유형을 구성합니다.
NVMKEY 등록
NVMKEY 레지스터(레지스터 3-4 참조)는 플래시 메모리를 손상시킬 수 있는 NVMCON의 실수로 쓰기를 방지하는 데 사용되는 쓰기 전용 레지스터입니다. 일단 잠금이 해제되면 NVMCON에 대한 쓰기는 WR 비트가 삭제 또는 프로그램 루틴을 호출하도록 설정될 수 있는 하나의 명령 주기 동안 허용됩니다. 타이밍 요구 사항을 고려할 때 인터럽트를 비활성화해야 합니다.
지우기 또는 프로그래밍 시퀀스를 시작하려면 다음 단계를 수행하십시오.
- 인터럽트를 비활성화합니다.
- NVMKEY에 0x55를 씁니다.
- NVMKEY에 0xAA를 씁니다.
- WR 비트(NVMCON[15])를 설정하여 프로그래밍 쓰기 주기를 시작합니다.
- 두 개의 NOP 명령어를 실행합니다.
- 인터럽트를 복원합니다.

인터럽트 비활성화
성공적인 결과를 보장하려면 모든 플래시 작업에 대해 인터럽트를 비활성화해야 합니다. NVMKEY 잠금 해제 시퀀스 중에 인터럽트가 발생하면 WR 비트에 대한 쓰기가 차단될 수 있습니다. NVMKEY 잠금 해제 시퀀스는 섹션 3.2 "NVMKEY 레지스터"에 설명된 대로 중단 없이 실행되어야 합니다.
전역 인터럽트 활성화(GIE 비트)를 비활성화하거나 DISI 명령어를 사용하여 인터럽트를 비활성화할 수 있습니다. DISI 명령어는 우선순위 6 이하의 인터럽트만 비활성화하므로 권장되지 않습니다. 따라서 Global Interrupt Enable 방식을 사용해야 합니다.
CPU가 GIE에 쓰는 작업은 코드 흐름에 영향을 미치기 전에 두 번의 명령 주기가 필요합니다. 나중에 두 개의 NOP 명령어가 필요하거나 NVMKEY 로드와 같은 다른 유용한 작업 명령어로 대체될 수 있습니다. 이는 설정 및 지우기 작업 모두에 적용 가능합니다. 이전에 호출된 함수가 다른 이유로 인터럽트를 비활성화한 경우 NVM 대상 루틴이 인터럽트를 허용하지 않도록 인터럽트를 다시 활성화할 때는 주의해야 합니다. 어셈블리에서 이 문제를 해결하기 위해 스택 푸시 및 팝을 사용하여 GIE 비트의 상태를 유지할 수 있습니다. C에서는 GIE를 지우기 전에 RAM의 변수를 사용하여 INTCON2를 저장할 수 있습니다. 인터럽트를 비활성화하려면 다음 순서를 사용하십시오.
- 스택에 INTCON2를 푸시합니다.
- GIE 비트를 지웁니다.
- XNUMX개의 NOP 또는 NVMKEY에 쓰기.
- WR 비트(NVMCON[15])를 설정하여 프로그래밍 주기를 시작합니다.
- INTCON2의 POP로 GIE 상태를 복원합니다.

NVM 주소 레지스터
두 개의 NVM 주소 레지스터인 NVMADRU 및 NVMADR이 연결되면 프로그래밍 작업을 위해 선택한 행 또는 단어의 24비트 EA를 형성합니다. NVMADRU 레지스터는 EA의 상위 16비트를 저장하는 데 사용되고, NVMADR 레지스터는 EA의 하위 XNUMX비트를 저장하는 데 사용됩니다. 일부 장치는 NVMADRL 및 NVMADRH와 동일한 레지스터를 참조할 수 있습니다. NVM 주소 레지스터는 이중 명령 단어 프로그래밍 작업을 수행할 때 항상 이중 명령 단어 경계, 행 프로그래밍 작업을 수행할 때 행 경계, 페이지 지우기 작업을 수행할 때 페이지 경계를 가리켜야 합니다.
레지스터 3-1: NVMCON: 플래시 메모리 제어 레지스터

메모
- 이 비트는 POR(Power-On Reset) 시에만 재설정(즉, 삭제)될 수 있습니다.
- 유휴 모드를 종료할 때 플래시 프로그램 메모리가 작동하기 전에 전원 켜기 지연(TVREG)이 있습니다. 자세한 내용은 해당 장치 데이터 시트의 "전기적 특성" 장을 참조하십시오.
- NVMOP[3:0]의 다른 모든 조합은 구현되지 않습니다.
- 이 기능은 일부 장치에서는 사용할 수 없습니다. 사용 가능한 작업에 대해서는 특정 장치 데이터 시트의 "플래시 프로그램 메모리" 장을 참조하십시오.
- PWRSAV 명령을 실행한 후 절전 모드로 진입하려면 보류 중인 모든 NVM 작업이 완료되어야 합니다.
- 이 비트는 RAM 버퍼 행 프로그래밍을 지원하는 장치에서만 사용할 수 있습니다. 가용성은 장치별 데이터 시트를 참조하십시오.

메모
- 이 비트는 POR(Power-On Reset) 시에만 재설정(즉, 삭제)될 수 있습니다.
- 유휴 모드를 종료할 때 플래시 프로그램 메모리가 작동하기 전에 전원 켜기 지연(TVREG)이 있습니다. 자세한 내용은 해당 장치 데이터 시트의 "전기적 특성" 장을 참조하십시오.
- NVMOP[3:0]의 다른 모든 조합은 구현되지 않습니다.
- 이 기능은 일부 장치에서는 사용할 수 없습니다. 사용 가능한 작업에 대해서는 특정 장치 데이터 시트의 "플래시 프로그램 메모리" 장을 참조하십시오.
- PWRSAV 명령을 실행한 후 절전 모드로 진입하려면 보류 중인 모든 NVM 작업이 완료되어야 합니다.
- 이 비트는 RAM 버퍼 행 프로그래밍을 지원하는 장치에서만 사용할 수 있습니다. 가용성은 장치별 데이터 시트를 참조하십시오.
레지스터 3-2: NVMADRU: 비휘발성 메모리 상위 주소 레지스터

레지스터 3-3: NVMADR: 비휘발성 메모리 주소 레지스터

레지스터 3-4: NVMKEY: 비휘발성 메모리 키 레지스터

런타임 셀프 프로그래밍(RTSP)
RTSP를 사용하면 사용자 응용 프로그램이 플래시 프로그램 메모리 내용을 수정할 수 있습니다. RTSP는 TBLRD(테이블 읽기) 및 TBLWT(테이블 쓰기) 명령어, TBLPAG 레지스터 및 NVM 제어 레지스터를 사용하여 수행됩니다. RTSP를 사용하면 사용자 애플리케이션은 플래시 메모리의 단일 페이지를 지우고 특정 장치에서 128개의 명령 단어 또는 최대 XNUMX개의 명령 단어를 프로그래밍할 수 있습니다.
RTSP 작동
dsPIC33/PIC24 플래시 프로그램 메모리 어레이는 최대 1024개의 명령어를 저장할 수 있는 소거 페이지로 구성됩니다. dsPIC33/PIC24 제품군의 모든 디바이스에서 더블 워드 프로그래밍 옵션을 사용할 수 있습니다. 또한, 일부 디바이스는 행 프로그래밍 기능을 제공하여 한 번에 최대 128개의 명령어 워드를 프로그래밍할 수 있습니다. 프로그래밍 및 소거 작업은 항상 짝수 더블 프로그래밍 워드, 행 또는 페이지 경계에서 수행됩니다. 프로그래밍 행의 사용 가능 여부 및 크기, 그리고 소거 페이지 크기에 대한 자세한 내용은 해당 디바이스 데이터시트의 "플래시 프로그램 메모리" 장을 참조하십시오.asing. 플래시 프로그램 메모리는 쓰기 래치라고 하는 홀딩 버퍼를 구현하며, 장치에 따라 최대 128개의 프로그래밍 명령어 데이터를 저장할 수 있습니다. 실제 프로그래밍 작업을 수행하기 전에 쓰기 데이터를 쓰기 래치에 로드해야 합니다. RTSP의 기본 순서는 테이블 포인터인 TBLPAG 레지스터를 설정한 다음 일련의 TBLWT 명령어를 실행하여 쓰기 래치에 데이터를 로드하는 것입니다. 프로그래밍은 NVMCON 레지스터의 제어 비트를 설정하여 수행됩니다. 쓰기 래치에 데이터를 로드하는 데 필요한 TBLWTL 및 TBLWTH 명령어의 수는 기록할 프로그램 워드의 수와 같습니다.
메모: TBLPAG 레지스터는 수정하기 전에 저장하고 사용 후에는 복원하는 것이 좋습니다.
주의
일부 장치에서는 구성 비트가 "플래시 구성 바이트"라는 섹션에 있는 프로그램 플래시 사용자 메모리 공간의 마지막 페이지에 저장됩니다. 이러한 장치를 사용하면 프로그램 메모리의 마지막 페이지에서 페이지 지우기 작업을 수행하면 플래시 구성 바이트가 지워져 코드 보호가 가능해집니다. 따라서 사용자는 프로그램 메모리의 마지막 페이지에서 페이지 지우기 작업을 수행해서는 안 됩니다. 구성 비트가 "장치 구성 레지스터"라는 섹션의 구성 메모리 공간에 저장되어 있으면 이는 문제가 되지 않습니다. 구성 비트가 있는 위치를 확인하려면 특정 장치 데이터 시트의 "메모리 구성" 장에 있는 프로그램 메모리 맵을 참조하십시오.
플래시 프로그래밍 작업
프로그래밍 또는 삭제 작업에는 프로그램 또는 삭제 작업이 필요합니다.asinRTSP 모드에서 내부 플래시 프로그램 메모리를 사용합니다. 프로그램 또는 소거 작업은 장치에 의해 자동으로 타이밍이 지정됩니다(타이밍 정보는 해당 장치 데이터 시트를 참조하십시오). WR 비트(NVMCON[15])를 설정하면 작업이 시작됩니다. 작업이 완료되면 WR 비트는 자동으로 해제됩니다. CPU는 프로그래밍 작업이 완료될 때까지 대기합니다. 이 시간 동안 CPU는 명령을 실행하거나 인터럽트에 응답하지 않습니다. 프로그래밍 주기 중에 인터럽트가 발생하면 주기가 완료될 때까지 보류 상태로 유지됩니다. 일부 dsPIC33/PIC24 장치는 보조 플래시 프로그램 메모리를 제공할 수 있습니다(자세한 내용은 해당 장치 데이터 시트의 "메모리 구성" 장 참조). 이를 통해 사용자 플래시 프로그램 메모리가 소거 및/또는 프로그래밍되는 동안 CPU 대기 없이 명령을 실행할 수 있습니다. 반대로, 사용자 플래시 프로그램 메모리에서 코드가 실행되는 한 보조 플래시 프로그램 메모리는 CPU 대기 없이 프로그래밍할 수 있습니다. NVM 인터럽트를 사용하여 프로그래밍 작업이 완료되었음을 나타낼 수 있습니다.
메모
- RTSP 삭제 또는 프로그래밍 작업이 진행되는 동안 POR 또는 BOR 이벤트가 발생하면 RTSP 작업이 즉시 중단됩니다. 사용자는 장치가 Reset 상태에서 나온 후 다시 RTSP 작업을 실행해야 합니다.
- RTSP 삭제 또는 프로그래밍 작업이 진행되는 동안 EXTR, SWR, WDTO, TRAPR, CM 또는 IOPUWR 재설정 이벤트가 발생하는 경우 RTSP 작업이 완료된 후에만 장치가 재설정됩니다.
RTSP 프로그래밍 알고리즘
이 섹션에서는 세 가지 주요 프로세스로 구성된 RTSP 프로그래밍에 대해 설명합니다.
수정할 데이터 페이지의 RAM 이미지 생성
수정할 데이터 페이지의 RAM 이미지를 생성하려면 다음 두 단계를 수행하십시오.
- 플래시 프로그램 메모리의 페이지를 읽고 이를 데이터 "이미지"로 데이터 RAM에 저장합니다. RAM 이미지는 페이지 주소 경계부터 읽어야 합니다.
- 필요에 따라 RAM 데이터 이미지를 수정합니다.
Erasing 플래시 프로그램 메모리
위의 1단계와 2단계를 완료한 후 다음 XNUMX단계를 수행하여 플래시 프로그램 메모리 페이지를 삭제합니다.
- NVMOP[3:0] 비트(NVMCON[3:0])를 설정하여 1단계에서 읽은 플래시 프로그램 메모리의 페이지를 삭제합니다.
- 삭제할 페이지의 시작 주소를 NVMADRU 및 NMVADR 레지스터에 씁니다.
- 인터럽트가 비활성화된 경우:
- a) WR 비트(NVMCON[15]) 설정을 활성화하려면 NVMKEY 레지스터에 키 시퀀스를 씁니다.
- b) WR 비트를 설정합니다. 그러면 지우기 주기가 시작됩니다.
- c) 두 개의 NOP 명령어를 실행합니다.
- WR 비트는 지우기 사이클이 완료되면 지워집니다.
플래시 메모리 페이지 프로그래밍
프로세스의 다음 부분은 플래시 메모리 페이지를 프로그래밍하는 것입니다. 플래시 메모리 페이지는 1단계에서 생성된 이미지의 데이터를 사용하여 프로그래밍됩니다. 데이터는 이중 명령 단어 또는 행 단위로 쓰기 래치로 전송됩니다. 모든 장치에는 이중 명령어 프로그래밍 기능이 있습니다. (행 프로그래밍이 가능한지, 어떤 유형의 행 프로그래밍이 가능한지 확인하려면 특정 장치 데이터 시트의 "플래시 프로그램 메모리" 장을 참조하십시오.) 쓰기 래치가 로드된 후 프로그래밍 작업이 시작됩니다. 플래시 메모리에 래치를 씁니다. 전체 페이지가 프로그래밍될 때까지 이 과정이 반복됩니다. 전체 페이지가 프로그래밍될 때까지 플래시 페이지의 첫 번째 명령 단어에서 시작하여 이중 프로그램 단어 또는 명령 행의 단계로 증가하면서 다음 세 단계를 반복합니다.
- 쓰기 래치를 로드합니다.
- a) 쓰기 래치의 위치를 가리키도록 TBLPAG 레지스터를 설정합니다.
- b) TBLWTL 및 TBLWTH 명령어 쌍을 사용하여 원하는 수의 래치를 로드합니다.
- 더블 워드 프로그래밍의 경우 두 쌍의 TBLWTL 및 TBLWTH 명령어가 필요합니다.
- 행 프로그래밍의 경우 각 명령어 단어 행 요소에 TBLWTL 및 TBLWTH 명령어 쌍이 필요합니다.
- 프로그래밍 작업을 시작합니다:
- a) NVMOP[3:0] 비트(NVMCON[3:0])를 설정하여 이중 명령어 단어 또는 명령어 행을 적절하게 프로그래밍합니다.
b) 프로그래밍할 이중 명령어 워드 또는 명령어 행의 첫 번째 주소를 NVMADRU 및 NVMADR 레지스터에 씁니다.
c) 인터럽트가 비활성화된 경우:
• WR 비트(NVMCON[15]) 설정을 활성화하려면 NVMKEY 레지스터에 키 시퀀스를 씁니다.
• WR 비트를 설정합니다. 그러면 지우기 주기가 시작됩니다
• 두 개의 NOP 명령을 실행합니다.
- a) NVMOP[3:0] 비트(NVMCON[3:0])를 설정하여 이중 명령어 단어 또는 명령어 행을 적절하게 프로그래밍합니다.
- 프로그래밍 사이클이 완료되면 WR 비트가 지워집니다.
원하는 양의 플래시 프로그램 메모리를 프로그래밍하려면 필요에 따라 전체 프로세스를 반복하십시오.
메모
- 사용자는 RTSP를 사용하여 지울 수 있는 플래시 프로그램 메모리의 최소량이 단일 지워진 페이지라는 점을 기억해야 합니다. 따라서 삭제 주기가 시작되기 전에 이러한 위치의 이미지를 범용 RAM에 저장하는 것이 중요합니다.
- 플래시 프로그램 메모리의 행이나 단어는 삭제되기 전에 두 번 이상 프로그래밍되어서는 안 됩니다.
- 플래시의 마지막 페이지에 구성 바이트가 저장된 장치의 경우 프로그램 메모리의 마지막 페이지에서 페이지 지우기 작업을 수행하면 구성 바이트가 지워져 코드 보호가 활성화됩니다. 이러한 장치에서는 플래시 메모리의 마지막 페이지를 삭제하면 안 됩니다.
ERASIN플래시 한 페이지
Ex에 표시된 코드 시퀀스amp파일 4-1은 플래시 프로그램 메모리의 페이지를 지우는 데 사용할 수 있습니다. NVMCON 레지스터는 프로그램 메모리의 한 페이지를 지우도록 구성됩니다. NVMADR 및 NMVADRU 레지스터에는 삭제될 페이지의 시작 주소가 로드됩니다. 프로그램 메모리는 "짝수" 페이지 주소 경계에서 삭제되어야 합니다. 플래시 페이지의 크기를 결정하려면 특정 장치 데이터 시트의 "플래시 프로그램 메모리" 장을 참조하십시오.
지우기 작업은 WR 비트(NVMCON[15])를 설정하기 전에 NVMKEY 레지스터에 특수 잠금 해제 또는 키 시퀀스를 기록하여 시작됩니다. 잠금 해제 시퀀스는 Ex에 표시된 대로 정확한 순서로 실행되어야 합니다.amp4-1, 중단 없이; 따라서 인터럽트를 비활성화해야 합니다.
지우기 주기 후에 코드에 두 개의 NOP 명령을 삽입해야 합니다. 특정 장치에서는 구성 비트가 프로그램 플래시의 마지막 페이지에 저장됩니다. 이러한 장치를 사용하면 프로그램 메모리의 마지막 페이지에서 페이지 지우기 작업을 수행하면 플래시 구성 바이트가 지워지고 결과적으로 코드 보호가 가능해집니다. 사용자는 프로그램 메모리의 마지막 페이지에서 페이지 지우기 작업을 수행해서는 안 됩니다.

쓰기 래치 로드 중
쓰기 래치는 사용자 애플리케이션 테이블 쓰기와 실제 프로그래밍 시퀀스 사이의 저장 메커니즘으로 사용됩니다. 프로그래밍 작업 중에 장치는 쓰기 래치의 데이터를 플래시 메모리로 전송합니다. 행 프로그래밍을 지원하는 장치의 경우 Examp파일 4-3은 128개 쓰기 래치(128개 명령어 단어)를 로드하는 데 사용할 수 있는 명령어 시퀀스를 보여줍니다. 플래시 프로그램 메모리 행을 프로그래밍하기 위해 쓰기 래치를 로드하려면 128 TBLWTL 및 128 TBLWTH 명령어가 필요합니다. 장치에서 사용할 수 있는 프로그래밍 래치 수를 확인하려면 특정 장치 데이터 시트의 "플래시 프로그램 메모리" 장을 참조하십시오. 행 프로그래밍을 지원하지 않는 장치의 경우 Examp파일 4-4는 두 개의 쓰기 래치(두 개의 명령 단어)를 로드하는 데 사용할 수 있는 명령의 순서를 보여줍니다. 쓰기 래치를 로드하려면 두 개의 TBLWTL 및 두 개의 TBLWTH 명령어가 필요합니다.
메모
- Load_Write_Latch_Row에 대한 코드는 Ex에 표시됩니다.ample 4-3 및 Load_Write_Latch_Word에 대한 코드는 Ex에 표시됩니다.amp4-4. 이 두 가지 코드 모두amples는 다음 ex에서 언급됩니다.amp레.
- 래치 수는 특정 장치 데이터 시트를 참조하십시오.

단일 행 프로그래밍 EXAMPLE
NVMCON 레지스터는 플래시 프로그램 메모리의 한 행을 프로그래밍하도록 구성됩니다. 프로그램 동작은 WR 비트(NVMCON[15])를 설정하기 전에 NVMKEY 레지스터에 특수 잠금 해제 또는 키 시퀀스를 기록함으로써 시작됩니다. 잠금 해제 시퀀스는 Ex에 표시된 대로 중단 없이 정확한 순서로 실행되어야 합니다.amp4-5. 따라서 시퀀스를 쓰기 전에 인터럽트를 비활성화해야 합니다.
메모: 모든 장치에 행 프로그래밍 기능이 있는 것은 아닙니다. 이 옵션을 사용할 수 있는지 확인하려면 특정 장치 데이터 시트의 "플래시 프로그램 메모리" 장을 참조하십시오.
프로그래밍 주기 후에 코드에 두 개의 NOP 명령을 삽입해야 합니다.

RAM 버퍼를 사용한 행 프로그래밍
dsPIC33 디바이스를 선택하면 TBLWT 명령으로 데이터를 전송하기 위해 홀딩 래치를 거치지 않고 데이터 RAM의 버퍼 공간에서 직접 행 프로그래밍을 수행할 수 있습니다. RAM 버퍼의 위치는 기록될 프로그램 데이터의 첫 번째 워드가 포함된 데이터 RAM 주소와 함께 로드되는 NVMSRCADR 레지스터에 의해 결정됩니다.
프로그램 작업을 수행하기 전에 RAM의 버퍼 공간에 프로그래밍할 데이터 행을 로드해야 합니다. RAM은 압축(패킹) 또는 압축되지 않은 형식으로 로드될 수 있습니다. 압축 스토리지는 하나의 데이터 워드를 사용하여 두 개의 인접한 프로그램 데이터 워드의 MSB(최상위 바이트)를 저장합니다. 압축되지 않은 형식은 각 프로그램 데이터 단어에 대해 두 개의 데이터 단어를 사용하며, 두 단어의 상위 바이트는 00h입니다. 압축 형식은 비압축 형식에 비해 데이터 RAM 공간의 약 3/4을 사용합니다. 반면, 비압축 형식은 24비트 프로그램 데이터 워드의 구조를 모방하고 상위 팬텀 바이트로 완성됩니다. 데이터 형식은 RPDF 비트(NVMCON[9])에 의해 선택됩니다. 이 두 형식은 그림 4-1에 나와 있습니다.
RAM 버퍼가 로드되면 플래시 주소 포인터인 NVMADR 및 NVMADRU는 기록할 플래시 행의 24비트 시작 주소와 함께 로드됩니다. 쓰기 래치 프로그래밍과 마찬가지로 프로세스는 NVM 잠금 해제 시퀀스를 쓴 다음 WR 비트를 설정하여 시작됩니다. 일단 시작되면 장치는 자동으로 올바른 래치를 로드하고 모든 바이트가 프로그래밍될 때까지 NVM 주소 레지스터를 증가시킵니다. 전ample 4-7은 ex를 보여줍니다.amp프로세스의 르. NVMSRCADR이 데이터 언더런 오류 조건이 발생하는 값으로 설정되면 URERR 비트(NVMCON[8])가 해당 조건을 나타내도록 설정됩니다.
RAM 버퍼 행 프로그래밍을 구현하는 장치는 1개 또는 2개의 쓰기 래치도 구현합니다. 이는 TBLWT 명령어를 사용하여 로드되며 워드 프로그래밍 작업을 수행하는 데 사용됩니다.
워드 프로그래밍
NVMCON 레지스터는 플래시 프로그램 메모리의 두 명령어 단어를 프로그래밍하도록 구성됩니다. 프로그램 동작은 WR 비트(NVMCON[15])를 설정하기 전에 NVMKEY 레지스터에 특수 잠금 해제 또는 키 시퀀스를 기록함으로써 시작됩니다. 잠금 해제 시퀀스는 Ex에 표시된 대로 정확한 순서로 실행되어야 합니다.amp4-8편, 중단 없이. 따라서 시퀀스를 쓰기 전에 인터럽트를 비활성화해야 합니다.
프로그래밍 주기 후에 코드에 두 개의 NOP 명령을 삽입해야 합니다.

장치 구성 레지스터에 쓰기
특정 장치에서 구성 비트는 "장치 구성 레지스터"라는 섹션의 구성 메모리 공간에 저장됩니다. 다른 장치에서는 구성 비트가 "플래시 구성 바이트"라는 섹션에 있는 프로그램 플래시 사용자 메모리 공간의 마지막 페이지에 저장됩니다. 이러한 장치를 사용하면 프로그램 메모리의 마지막 페이지에서 페이지 지우기 작업을 수행하면 플래시 구성 바이트가 지워져 코드 보호가 가능해집니다. 따라서 사용자는 프로그램 메모리의 마지막 페이지에서 페이지 지우기 작업을 수행해서는 안 됩니다. 구성 비트가 있는 위치를 확인하려면 특정 장치 데이터 시트의 "메모리 구성" 장에 있는 프로그램 메모리 맵을 참조하십시오.
구성 비트가 구성 메모리 공간에 저장되면 RTSP를 사용하여 장치 구성 레지스터에 쓸 수 있으며 RTSP를 사용하면 먼저 지우기 사이클을 수행하지 않고도 각 구성 레지스터를 개별적으로 다시 쓸 수 있습니다. 시스템 클럭 소스, PLL 및 WDT 활성화와 같은 중요한 장치 작동 매개변수를 제어하므로 구성 레지스터를 작성할 때 주의해야 합니다.
장치 구성 레지스터를 프로그래밍하는 절차는 TBLWTL 명령어만 필요하다는 점을 제외하면 플래시 프로그램 메모리를 프로그래밍하는 절차와 유사합니다. 이는 각 장치 구성 레지스터의 상위 23비트가 사용되지 않기 때문입니다. 또한 구성 레지스터에 액세스하려면 테이블 쓰기 주소의 비트 70000618을 설정해야 합니다. 장치 구성 레지스터에 대한 전체 설명은 "dsPIC33/PIC24 제품군 참조 설명서"의 "장치 구성"(DSXNUMX)과 특정 장치 데이터 시트의 "특수 기능" 장을 참조하십시오.
메모
- 장치 구성 레지스터에 쓰기는 모든 장치에서 가능하지 않습니다. 장치별 NVMOP[3:0] 비트 정의에 따라 사용 가능한 모드를 확인하려면 특정 장치 데이터 시트의 "특수 기능" 장을 참조하십시오.
- 장치 구성 레지스터에서 RTSP를 수행하는 동안 장치는 내부 FRC 발진기를 사용하여 작동해야 합니다(PLL 없음). 장치가 다른 클록 소스에서 작동하는 경우 장치 구성 레지스터에서 RTSP 작업을 수행하기 전에 내부 FRC 오실레이터(NOSC[2:0] = 000)에 대한 클록 전환을 수행해야 합니다.
- FOSC(오실레이터 구성 레지스터)의 기본 오실레이터 모드 선택 비트(POSCMD[1:0])가 새 값으로 다시 프로그래밍되는 경우 사용자는 FOSC의 클록 스위칭 모드 비트(FCKSM[1:0])를 확인해야 합니다. FOSC 레지스터는 이 RTSP 작업을 수행하기 전에 초기 프로그래밍된 값 '0'을 갖습니다.
구성 레지스터 쓰기 알고리즘
일반적인 절차는 다음과 같습니다.
- TBLWTL 명령어를 사용하여 테이블 쓰기 래치에 새 구성 값을 씁니다.
- 구성 레지스터 쓰기를 위해 NVMCON을 구성합니다(NVMCON = 0x4000).
- 프로그래밍할 구성 레지스터의 주소를 NVMADRU 및 NVMADR 레지스터에 씁니다.
- 활성화된 경우 인터럽트를 비활성화합니다.
- NVMKEY 레지스터에 키 시퀀스를 씁니다.
- WR 비트(NVMCON[15])를 설정하여 쓰기 시퀀스를 시작합니다.
- 필요한 경우 인터럽트를 다시 활성화합니다.
Examp파일 4-10은 장치 구성 레지스터를 수정하는 데 사용할 수 있는 코드 시퀀스를 보여줍니다.
레지스터 지도
플래시 프로그래밍과 관련된 레지스터의 요약은 표 5-1에 나와 있습니다.
이 섹션에는 매뉴얼의 이 섹션과 관련된 애플리케이션 노트가 나열되어 있습니다. 이 애플리케이션 노트는 dsPIC33/PIC24 제품군에 맞게 특별히 작성되지는 않았지만 개념은 적절하며 수정 및 가능한 제한 사항과 함께 사용될 수 있습니다. 플래시 프로그래밍과 관련된 현재 애플리케이션 노트는 다음과 같습니다.
메모: 마이크로칩을 방문해주세요. web사이트 (www.마이크로칩닷컴) 추가 애플리케이션 노트 및 코드 exampdsPIC33/PIC24 장치 제품군에 대한 파일입니다.
개정 내역
개정판 A(2009년 XNUMX월)
이는 이 문서의 최초 릴리스 버전입니다.
개정 B(2011년 XNUMX월)
이 개정판에는 다음 업데이트가 포함되어 있습니다.
- Examp레:
- Ex 제거됨ample 5-3 및 Examp르 5-4
- 업데이트된 Examp4-1, 예ample 4-5 및 Examp르 4-10
- #WR에 대한 모든 참조는 Ex에서 #15로 업데이트되었습니다.amp4-1, 예ample 4-5 및 Examp르 4-8
- Ex에서 다음을 업데이트했습니다.amp레 4-3:
- 제목 "워드 프로그래밍"을 "행 프로그래밍을 위한 쓰기 래치 로드"로 업데이트했습니다.
- #ram_image에 대한 모든 참조가 #0xFA로 업데이트되었습니다.
- Ex가 추가되었습니다.amp르 4-4
- Ex에서 제목을 업데이트했습니다.amp르 4-8
- 참고사항:
- 섹션 4.2 “플래시 프로그래밍 작업”에 두 가지 참고 사항을 추가했습니다.
- 섹션 4.5.2 “쓰기 래치 로드”의 참고 사항을 업데이트했습니다.
- 섹션 4.6 “장치 구성 레지스터에 쓰기”에 세 가지 참고 사항을 추가했습니다.
- 표 1-5에 참고 1을 추가했습니다.
- 레지스터 :
- NVMOP[3:0]의 비트 값 업데이트: NVMCON(플래시 메모리 제어) 레지스터의 NVM 작업 선택 비트(레지스터 3-1 참조)
- 섹션:
- 5.2.1.4 "Write Word 모드" 및 5.2.1.5 "Write Byte 모드" 섹션이 제거되었습니다.
- 섹션 3.0 “제어 레지스터” 업데이트됨
- 섹션 4.5.5 “워드 프로그래밍”에서 다음을 업데이트했습니다.
- 섹션 제목 "플래시 메모리의 한 단어 프로그래밍"을 "워드 프로그래밍"으로 변경했습니다.
- 첫 번째 단락을 업데이트했습니다.
- 두 번째 문단의 "한 단어"라는 용어를 "한 쌍의 단어"로 변경했습니다.
- 섹션 1 “구성 레지스터 쓰기 알고리즘”에 새로운 4.6.1단계를 추가했습니다.
- 테이블:
- 업데이트된 표 5-1
- 프로그램 메모리에 대한 몇 가지 참조가 플래시 프로그램 메모리로 업데이트되었습니다.
- 언어 및 형식 업데이트와 같은 기타 사소한 업데이트가 문서 전체에 통합되었습니다.
개정 C(2011년 XNUMX월)
이 개정판에는 다음 업데이트가 포함되어 있습니다.
- Examp레:
- 업데이트된 Examp르 4-1
- 업데이트된 Examp르 4-8
- 참고사항:
- 섹션 4.1 “RTSP 작업”에 참고 사항을 추가했습니다.
- 섹션 3 "플래시 프로그래밍 작업"에 참고 4.2을 추가했습니다.
- 섹션 3 "RTSP 프로그래밍 알고리즘"에 참고 4.2.1을 추가했습니다.
- 섹션 4.5.1에 메모를 추가했습니다.asing 플래시 한 페이지"
- 섹션 2 "쓰기 래치 로드"에 참고 4.5.2를 추가했습니다.
- 레지스터 :
- 비휘발성 메모리 주소 레지스터의 비트 15-0에 대한 비트 설명을 업데이트했습니다(레지스터 3-3 참조).
- 섹션:
- 섹션 4.1 “RTSP 작동” 업데이트됨
- 섹션 4.5.5 “워드 프로그래밍” 업데이트됨
- 언어 및 형식 업데이트와 같은 기타 사소한 업데이트가 문서 전체에 통합되었습니다.
개정판 D(2011년 XNUMX월)
이 개정판에는 다음 업데이트가 포함되어 있습니다.
- 섹션 2.1.3 “테이블 쓰기 래치” 업데이트됨
- 섹션 3.2 “NVMKEY 레지스터” 업데이트됨
- NVMCON: 플래시 메모리 제어 레지스터의 참고 사항 업데이트(레지스터 3-1 참조)
- 섹션 4.0 "RTSP(런타임 자체 프로그래밍)" 전반에 걸쳐 광범위한 업데이트가 이루어졌습니다.
- 언어 및 형식 업데이트와 같은 기타 사소한 업데이트가 문서 전체에 통합되었습니다.
개정판 E(2018년 XNUMX월)
이 개정판에는 다음 업데이트가 포함되어 있습니다.
- Ex가 추가되었습니다.amp2-2, 예amp4-2, 예ample 4-6 및 Examp르 4-9
- 섹션 4.5.4 “RAM 버퍼를 사용한 행 프로그래밍”을 추가했습니다.
- 섹션 1.0 "소개", 섹션 3.3 "NVM 주소 레지스터", 섹션 4.0 "RTSP(런타임 자체 프로그래밍)" 및 섹션 4.5.3 "단일 행 프로그래밍 Ex"를 업데이트했습니다.amp그만큼"
- 업데이트된 레지스터 3-1
- 업데이트된 Examp르 4-7
- 업데이트된 표 5-1
개정판 F(2021년 XNUMX월)
섹션 3.2.1 “인터럽트 비활성화”를 추가했습니다.
업데이트된 Examp3-1, 예amp4-1, 예amp4-2, 예amp4-5, 예amp4-6, 예amp4-7, 예amp4-8, 예ample 4-9 및 Examp레 4-10.
섹션 3.2 “NVMKEY 레지스터”, 섹션 4.5.1 “Er” 업데이트됨asing 플래시 한 페이지", 섹션 4.5.3 "단일 행 프로그래밍 예제ample” 및 섹션 4.6.1 “구성 레지스터 쓰기 알고리즘”.
Microchip 제품의 코드 보호 기능에 대한 자세한 내용은 다음과 같습니다.
- 마이크로칩 제품은 해당 마이크로칩 데이터 시트에 포함된 사양을 충족합니다.
- Microchip은 자사 제품군이 의도된 방식으로, 작동 사양 내에서, 정상적인 조건에서 사용될 경우 안전하다고 믿습니다.
- Microchip은 지적 재산권을 소중히 여기고 적극적으로 보호합니다. Microchip 제품의 코드 보호 기능을 위반하려는 시도는 엄격히 금지되며 디지털 밀레니엄 저작권법을 위반할 수 있습니다.
- Microchip이나 다른 반도체 제조업체는 코드의 보안을 보장할 수 없습니다. 코드 보호는 제품이 "깨지지 않음"을 보장한다는 것을 의미하지 않습니다. 코드 보호는 지속적으로 발전하고 있습니다. Microchip은 제품의 코드 보호 기능을 지속적으로 개선하기 위해 최선을 다하고 있습니다.
이 간행물과 여기에 있는 정보는 Microchip 제품을 설계, 테스트 및 응용 프로그램과 통합하는 것을 포함하여 Microchip 제품에만 사용할 수 있습니다. 이 정보를 다른 방식으로 사용하는 것은 이 약관을 위반하는 것입니다. 장치 응용 프로그램에 관한 정보는 귀하의 편의를 위해서만 제공되며 업데이트로 대체될 수 있습니다. 애플리케이션이 사양을 충족하는지 확인하는 것은 귀하의 책임입니다. 추가 지원이 필요한 경우 지역 Microchip 영업 사무소에 문의하거나 다음에서 추가 지원을 받으십시오. https://www.microchip.com/en-us/support/design-help/client-supportservices.
이 정보는 MICROCHIP에서 "있는 그대로" 제공합니다. MICROCHIP은 비침해, 상품성 및 특정 목적에의 적합성에 대한 묵시적 보증을 포함하되 이에 국한되지 않는 정보와 관련하여 명시적이든 묵시적이든, 서면이든 구두든, 법적이든 기타 어떤 종류의 진술이나 보증도 하지 않습니다. 상태, 품질 또는 성능. 어떠한 경우에도 MICROCHIP은 정보 또는 그 사용과 관련된 모든 종류의 간접적, 특별, 징벌적, 부수적 또는 결과적 손실, 손해, 비용 또는 경비에 대해 책임을 지지 않습니다. 가능성 또는 손해를 예측할 수 있습니다. 법률이 허용하는 최대 한도 내에서 정보 또는 그 사용과 관련된 모든 청구에 대한 MICROCHIP의 총 책임은 귀하가 정보에 대해 MICROCHIP에 직접 지불한 수수료 금액을 초과하지 않습니다.
생명 유지 및/또는 안전 애플리케이션에서 Microchip 장치를 사용하는 것은 전적으로 구매자의 위험이며, 구매자는 그러한 사용으로 인해 발생하는 모든 손해, 청구, 소송 또는 비용으로부터 Microchip을 방어, 보상하고 무해하게 보호하는 데 동의합니다. 달리 명시되지 않는 한, Microchip 지적 재산권에 따라 묵시적 또는 기타 방식으로 라이선스가 양도되지 않습니다.
Microchip의 품질 관리 시스템에 대한 정보는 다음을 방문하십시오. www.microchip.com/quality.
상표
Microchip 이름 및 로고, Microchip 로고, Adaptec, AnyRate, AVR, AVR 로고, AVR Freaks, BesTime, BitCloud, CryptoMemory, CryptoRF, dsPIC, flexPWR, HELDO, IGLOO, JukeBlox, KeeLoq, Kleer, LANCheck, LinkMD, maXStylus, maXTouch, MediaLB, megaAVR, Microsemi, Microsemi 로고, MOST, MOST 로고, MPLAB, OptoLyzer, PIC, picoPower, PICSTART, PIC32 로고, PolarFire, Prochip Designer, QTouch, SAM-BA, SenGenuity, SpyNIC, SST, SST 로고, SuperFlash , Symmetricom, SyncServer, Tachyon, TimeSource, tinyAVR, UNI/O, Vectron 및 XMEGA는 미국 및 기타 국가에서 Microchip Technology Incorporated의 등록 상표입니다. AgileSwitch, APT, ClockWorks, The Embedded Control Solutions Company, EtherSynch, Flashtec, Hyper Speed Control, HyperLight Load, IntelliMOS, Libero, motorBench, mTouch, Powermite 3, Precision Edge, ProASIC, ProASIC Plus, ProASIC Plus 로고, Quiet-Wire, SmartFusion, SyncWorld, Temux, TimeCesium, TimeHub, TimePictra, TimeProvider, TrueTime, WinPath 및 ZL은 미국에서 Microchip Technology Incorporated의 등록 상표입니다.
인접 키 억제, AKS, 디지털 시대의 아날로그, 모든 커패시터, AnyIn, AnyOut, 증강 스위칭, BlueSky, BodyCom, CodeGuard, CryptoAuthentication, CryptoAutomotive, CryptoCompanion, CryptoController, dsPICDEM, dsPICDEM.net, 동적 평균 매칭, DAM , ECAN, Espresso T1S, EtherGREEN, GridTime, IdealBridge, 회로 내 직렬 프로그래밍, ICSP, INICnet, 지능형 병렬 처리, 칩 간 연결, JitterBlocker, Knob-on-Display, maxCrypto, maxView, memBrain, Mindi, MiWi, MPASM, MPF, MPLAB 인증 로고, MPLIB, MPLINK, MultiTRAK, NetDetach, NVM Express, NVMe, Omniscient 코드 생성, PICDEM, PICDEM.net, PICkit, PICtail, PowerSmart, PureSilicon, QMatrix, REAL ICE , 리플 차단기, RTAX, RTG4, SAM-ICE, 직렬 쿼드 I/O, simpleMAP, SimpliPHY, SmartBuffer, SmartHLS, SMART-IS, storClad, SQI, SuperSwitcher, SuperSwitcher II, Switchtec, SynchroPHY, 전체 내구성, TSHARC, USBCheck, VariSense, VectorBlox, VeriPHY, ViewSpan, WiperLock, XpressConnect 및 ZENA는 미국 및 기타 국가에서 Microchip Technology Incorporated의 상표입니다.
SQTP는 미국 Microchip Technology Incorporated의 서비스 상표입니다.
Adaptec 로고, 주문형 주파수, Silicon Storage Technology, Symmcom 및 Trusted Time은 기타 국가에서 Microchip Technology Inc.의 등록 상표입니다.
GestIC는 Microchip Technology Inc.의 자회사인 Microchip Technology Germany II GmbH & Co. KG의 다른 국가에 등록 상표입니다.
여기에 언급된 다른 모든 상표는 해당 회사의 자산입니다.
© 2009-2021, Microchip Technology Incorporated 및 그 자회사.
모든 권리는 보호됩니다.
ISBN: 978-1-5224-9314-3
전세계 판매 및 서비스
아메리카
- 회사 사무실
2355 웨스트 챈들러 대로
챈들러, AZ 85224-6199
전화: 480-792-7200
팩스: 480-792-7277
기술 지원: http://www.microchip.com/
지원하다 Web 주소: www.마이크로칩닷컴 - 애틀랜타
덜루스, 조지아주
전화: 678-957-9614
팩스: 678-957-1455 - 오스틴, 텍사스
전화: 512-257-3370 - 보스턴
웨스트버러, 매사추세츠
전화: 774-760-0087
팩스: 774-760-0088 - 시카고
이타스카, 일리노이주
전화: 630-285-0071
팩스: 630-285-0075 - 달라스
텍사스 애디슨
전화: 972-818-7423
팩스: 972-818-2924 - 디트로이트
노비, 미시간주
전화: 248-848-4000 - 휴스턴, 텍사스
전화: 281-894-5983 - 인디애나폴리스
노블즈빌, IN
전화: 317-773-8323
팩스: 317-773-5453
전화: 317-536-2380 - 로스엔젤레스
미션 비에호, 캘리포니아
전화: 949-462-9523
팩스: 949-462-9608
전화: 951-273-7800 - 롤리, 노스캐롤라이나
전화: 919-844-7510 - 뉴욕, 뉴욕
전화: 631-435-6000 - 샌호세, 캘리포니아
전화: 408-735-9110
전화: 408-436-4270 - 캐나다 - 토론토
전화: 905-695-1980
팩스: 905-695-2078
아시아/태평양
- 호주 - 시드니
전화: 61-2-9868-6733 - 중국 – 베이징
전화: 86-10-8569-7000 - 중국 – 청두
전화: 86-28-8665-5511 - 중국 - 충칭
전화: 86-23-8980-9588 - 중국 – 둥관
전화: 86-769-8702-9880 - 중국 – 광저우
전화: 86-20-8755-8029 - 중국 - 항저우
전화: 86-571-8792-8115 - 중국 – 홍콩 특별행정구
전화: 852-2943-5100 - 중국 – 난징
전화: 86-25-8473-2460 - 중국 - 칭다오
전화: 86-532-8502-7355 - 중국 – 상하이
전화: 86-21-3326-8000 - 중국 - 선양
전화: 86-24-2334-2829 - 중국 – 선전
전화: 86-755-8864-2200 - 중국 – 쑤저우
전화: 86-186-6233-1526 - 중국 – 우한
전화: 86-27-5980-5300 - 중국 – 시안
전화: 86-29-8833-7252 - 중국 – 샤먼
전화: 86-592-2388138 - 중국 - 주하이
전화: 86-756-3210040 - 인도 - 방갈로르
전화: 91-80-3090-4444 - 인도 – 뉴델리
전화: 91-11-4160-8631 - 인도 - 푸네
전화: 91-20-4121-0141 - 일본 – 오사카
전화: 81-6-6152-7160 - 일본 – 도쿄
전화: 81-3-6880-3770 - 한국 – 대구
전화: 82-53-744-4301 - 한국 – 서울
전화: 82-2-554-7200 - 말레이시아 – 쿠알라 룸푸르
전화: 60-3-7651-7906 - 말레이시아 - 페낭
전화: 60-4-227-8870 - 필리핀 – 마닐라
전화: 63-2-634-9065 - 싱가포르
전화: 65-6334-8870 - 대만 – 신주
전화: 886-3-577-8366 - 대만 – 가오슝
전화: 886-7-213-7830 - 대만 – 타이페이
전화: 886-2-2508-8600 - 태국 – 방콕
전화: 66-2-694-1351 - 베트남 – 호치민
전화: 84-28-5448-2100
유럽
- 오스트리아 - 벨스
전화: 43-7242-2244-39
팩스: 43-7242-2244-393 - 덴마크 - 코펜하겐
전화: 45-4485-5910
팩스: 45-4485-2829 - 핀란드 – 에스포
전화: 358-9-4520-820 - 프랑스 - 파리
전화: 33-1-69-53-63-20
팩스: 33-1-69-30-90-79 - 독일 - 가르힝
전화: 49-8931-9700 - 독일 – 한
전화: 49-2129-3766400 - 독일 - 하일브론
전화: 49-7131-72400 - 독일 - 카를스루에
전화: 49-721-625370 - 독일 - 뮌헨
전화: 49-89-627-144-0
팩스: 49-89-627-144-44 - 독일 – 로젠하임
전화: 49-8031-354-560 - 이탈리아 – 밀라노
전화: 39-0331-742611
팩스: 39-0331-466781 - 이탈리아 – 파도바
전화: 39-049-7625286 - 네덜란드 - 드루넨
전화: 31-416-690399
팩스: 31-416-690340 - 노르웨이 - 트론헤임
전화: 47-7288-4388 - 폴란드 - 바르샤바
전화: 48-22-3325737 - 루마니아 - 부쿠레슈티
전화: 40-21-407-87-50 - 스페인 – 마드리드
전화: 34-91-708-08-90
팩스: 34-91-708-08-91 - 스웨덴 – 예테보리
전화: 46-31-704-60-40 - 스웨덴 – 스톡홀름
전화: 46-8-5090-4654 - 영국 – 워킹엄
전화: 44-118-921-5800
팩스: 44-118-921-5820
메모:
이 제품군 참조 매뉴얼 섹션은 장치 데이터 시트를 보완하는 역할을 합니다. 장치 변형에 따라 이 매뉴얼 섹션이 모든 dsPIC33/PIC24 장치에 적용되지 않을 수도 있습니다. 이 문서가 귀하가 사용 중인 장치를 지원하는지 확인하려면 현재 장치 데이터 시트의 "플래시 프로그램 메모리" 장 시작 부분에 있는 참고 사항을 참조하십시오.
장치 데이터 시트 및 제품군 참조 매뉴얼 섹션은 Microchip Worldwide에서 다운로드할 수 있습니다. Web사이트 위치: http://www.microchip.com.
문서 / 리소스
![]() |
MICROCHIP PIC24 플래시 프로그래밍 [PDF 파일] 사용자 가이드 PIC24 플래시 프로그래밍, PIC24, 플래시 프로그래밍, 프로그래밍 |
![]() |
MICROCHIP PIC24 플래시 프로그래밍 [PDF 파일] 사용자 가이드 PIC24 플래시 프로그래밍, PIC24, 플래시 프로그래밍 |






