В этом примере показано взаимодействие с 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');