В этом примере показано взаимодействие с AT25080A EEPROM на I2C/SPI плате действий Aardvark по шине последовательного периферийного интерфейса (SPI).
Для начала создайте объект SPI. В данном примере мы используем плату I2C/SPI Activity Board компании 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 и чтения его назад.
Лист таблиц данных 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);
Напишите 'Hello' по 0-му адресу EEPROM с помощью write
функция.
dataToWrite = [2 0 0 double('Hello')];
write(eeprom, dataToWrite);
Теперь мы можем считать данные из EEPROM.
dataToWrite = [3 0 0 zeros(1,5)]; returnedData = writeAndRead(eeprom, dataToWrite);
Возвращенные данные:
Байты 1:3 - Все равно
Четвертый байт и далее - данные считываются из EEPROM
В этом случае считанные данные:
char(returnedData(4:end))
ans = Hello
Отсоедините объект SPI и удалите его из памяти и рабочей области.
disconnect(eeprom);
clear('eeprom');