AT45DB041D 데이터 플래시를 SPI 로 구동할 수 있는 모듈입니다.
MCU 의 구동에 추가적인 메모리가 필요할 때 SPI 기능을 실험할 때
적합한 모듈입니다.
WAT-AVR128 에 바로 연결하여 사용할 수 있습니다.
ATMEGA128 용 소스코드
/*
EX_06_01.c
SPI 로DataFlash 읽고쓰는예제입니다.
SPI 를초기화한후
데이터를쓰고읽은후
쓰고읽은데이터가동일한지확인합니다.
AVRStudio 4.18
2013-03-08
*/
#include <stdio.h>
#include <avr/io.h>
#include "WAT128.h"
#include "AT45DB161D.h"
BYTE Data[256]; // w
BYTE ReadData[256];
int main()
{
const BYTE BufferNum =AT45DB_BUFFER_1;
const BYTE PageNum =4;
DDRA = 0xFF;
PORTA = 0xFF;
// AT45DB 용SPI 초기화
SpiInit();
SFlash_GetID();
// 버퍼로한번써줘야한다.(중요)
PageToBuffer(1,0);
// Data 에임의의값
for(int i=0;i<256;i++)
{
Data[i] = i;
}
// Data 값을버퍼에넣기
SFlash_WriteBuffer(BufferNum,0,Data,256);
// 버퍼값을페이지(실제저장할위치)에쓰기
SFlash_BufferToPage(BufferNum, PageNum, 1);
// 읽어올변수(ReadData)에임의의값쓰기
for(int i=0;i<256;i++)
{
ReadData[i] = 0xff;
}
// 페이지데이터를버퍼로가져오기
PageToBuffer(BufferNum,PageNum);
// 버퍼데이터를ReadData로가져오기
GetMemBuffer(ReadData);
//
for(int i=0;i<256;i++)
{
if(ReadData[i] != Data[i] )
{
while (1)
{
// 쓰고읽은데이터가다르다면
PORTA = 0x55;
}
}
}
// 쓰고읽은데이터가동일하다면
PORTA = 0xf0;;
while(1)
{
}
}