이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.
SPI 버스를 사용하여 EEPROM과 통신하기
이 예제는 Aardvark의 I2C/SPI 활동 보드에 탑재된 EEPROM AT25080A와 직렬 주변기기 인터페이스(SPI) 버스를 통해 통신하는 방법을 보여줍니다.
먼저 SPI 객체를 생성합니다. 이 예제에서는 보드 인덱스와 주소가 모두 0인 Aardvark의 I2C/SPI 액티비티 보드를 사용합니다. 컴퓨터를 SPI 버스에 연결하기 위해 Aardvark사의 USB-I2C/SPI 어댑터를 사용합니다. SPI 객체 생성의 경우, 이는 다음과 같이 해석됩니다.
Vendor= aardvarkBoardIndex= 0Port= 0
eeprom = spi('aardvark',0,0);
disp(eeprom);
SPI Object : Adapter Settings BoardIndex: 0 BoardSerial: 2237727782 VendorName: aardvark Communication Settings BitRate: 1000000 Hz ChipSelect: 0 ClockPhase: FirstEdge ClockPolarity: IdleLow Port: 0 Communication State ConnectionStatus: Disconnected Read/Write State TransferStatus: Idle
읽기 또는 쓰기 작업을 수행하기 전에, connect 함수를 사용하여 SPI 객체를 장치에 연결해야 합니다. 객체가 성공적으로 연결되었는지 확인하려면 해당 객체의 ConnectionStatus 속성을 확인하면 됩니다. 장치에 연결되면 ConnectionStatus 속성이 자동으로 Connected로 업데이트됩니다.
connect(eeprom); eeprom.ConnectionStatus
ans = Connected
SPI는 전이중 모드로 작동합니다. 따라서 모든 읽기/쓰기 작업에서 데이터는 항상 양방향으로 전송됩니다. 이를 EEPROM에 'Hello'를 기록하고 다시 읽어오는 간단한 작업을 통해 설명할 수 있습니다.
EEPROM 데이터시트에는 데이터 읽기 및 쓰기에 대해 다음과 같이 명시되어 있습니다.
칩에 데이터를 기록하기 전에 먼저 쓰기 권한을 활성화해야 합니다. 칩에
6를 기록하면 쓰기 권한을 활성화할 수 있습니다. 참고: 칩의 쓰기 기능이 활성화되어 있지 않으면, 쓰기 명령을 무시하고 대기 상태로 돌아갑니다.
데이터는 다음 형식으로 칩에 기록되어야 합니다.
[Write_Command Upper_Byte_Address Lower_Byte_Address data1 data2 ...]
이 EEPROM의 Write_Command 값은 2입니다.
데이터를 올바르게 읽어오려면 다음 형식으로 칩에 기록해야 합니다.
[Read_Command Upper_Byte_Address Lower_Byte_Address zeros(1,size of data to be read back)]
이 EEPROM의 Read_Command는 3입니다.
EEPROM 쓰기 권한을 활성화하십시오
write(eeprom,6);
write 함수를 사용하여 EEPROM의 0번째 주소에 'Hello'를 기록하십시오.
dataToWrite = [2 0 0 double('Hello')];
write(eeprom, dataToWrite);
이제 EEPROM에서 데이터를 읽어올 수 있습니다.
dataToWrite = [3 0 0 zeros(1,5)]; returnedData = writeAndRead(eeprom, dataToWrite);
반환된 데이터는 다음과 같습니다.
바이트 1:3 - 의미 없음
4번째 바이트 이후 - EEPROM에서 읽어들인 데이터
이 경우, 읽어온 데이터는 다음과 같습니다.
char(returnedData(4:end))
ans = Hello
SPI 객체의 연결을 해제하고 메모리 및 작업 공간에서 제거합니다.
disconnect(eeprom);
clear('eeprom');