exponenta event banner

Связь с EEPROM по шине SPI

В этом примере показано взаимодействие с AT25080A EEPROM на плате I2C/SPI активности Aardvark по шине последовательного периферийного интерфейса (SPI).

Для начала создайте объект SPI. В этом примере мы используем плату I2C/SPI активности Aardvark, которая имеет как индекс платы, так и адрес 0. Для подключения компьютера к шине SPI используется USB-I2C/SPI адаптер фирмы Aardvark. При создании объекта SPI это переводится в:

  • Vendor = aardvark

  • BoardIndex = 0

  • Port = 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

Перед выполнением операции чтения или записи необходимо подключить объект SPI к устройству с помощью connect функция. Можно проверить, успешно ли подключен объект, проверив его ConnectionStatus собственность. После подключения к устройству свойство ConnectionStatus автоматически обновляется для получения Connected.

connect(eeprom);
eeprom.ConnectionStatus
ans =

Connected

SPI работает в полнодуплексном режиме. Следовательно, для любой операции чтения/записи данные всегда передаются в обоих направлениях. Это можно проиллюстрировать простой задачей написания «Hello» в ЭСППЗУ и чтения его обратно.

В таблице EEPROM для чтения и записи данных указывается следующее:

  • Чип должен иметь возможность записи перед записью чего-либо в него. Чип может быть включен для записи путем записи 6 к нему. ПРИМЕЧАНИЕ: Если микросхема не поддерживает запись, она проигнорирует команду записи и вернется в состояние ожидания

  • Данные должны записываться в микросхему в следующем формате:

[Write_Command Upper_Byte_Address Lower_Byte_Address data1 data2 ...]

Для этого ЭСППЗУ Write_Command 2.

  • Данные должны быть записаны на микросхему в следующем формате для правильного считывания:

[Read_Command Upper_Byte_Address Lower_Byte_Address zeros(1,size of data to be read back)]

Для этого ЭСППЗУ Read_Command 3.

Включить запись в eeprom

write(eeprom,6);

Напишите «Hello» по 0-му адресу EEPROM с помощью write функция.

dataToWrite = [2 0 0 double('Hello')];
write(eeprom, dataToWrite);

Теперь мы можем считывать данные из ЭСППЗУ.

dataToWrite = [3 0 0 zeros(1,5)];
returnedData = writeAndRead(eeprom, dataToWrite);

Возвращенные данные:

  • Байты 1:3 - Все равно

  • Четвертый байт - данные, считанные из ЭСППЗУ

В этом случае считывание данных выполняется следующим образом:

char(returnedData(4:end))
ans =

Hello

Отсоедините объект SPI и удалите его из памяти и рабочей области.

disconnect(eeprom);
clear('eeprom');