Этот пример показывает, как связаться с EEPROM AT25080A в Совете Действия I2C/SPI Муравьеда по шине Последовательного периферийного интерфейса (SPI).
Чтобы начаться, создайте объект SPI. В данном примере мы используем Совет Действия I2C/SPI Муравьеда, который имеет и параметр плат и адрес как 0. Чтобы соединить компьютер с шиной SPI, адаптер USB-I2C/SPI от Муравьеда используется. Для создания объекта SPI это переводит в:
Vendor
= муравьед
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 действует в полном дуплексном режиме. Следовательно для любой операции чтения-записи, данные всегда передаются в обоих направлениях. Это может быть проиллюстрировано с простой задачей записи 'Привет' в EEPROM и чтение его назад.
Таблица данных EEPROM задает следующее для того, чтобы читать и записать данные:
Чип должен быть с разрешением записи прежде, чем записать что-либо в него. Чип может быть с разрешением записи путем записи 6
в него. ПРИМЕЧАНИЕ: Если чип не будет с разрешением записи, он проигнорирует инструкцию по записи и возвратится к резервному состоянию
Данные должны быть записаны в чип в следующем формате:
[Write_Command Upper_Byte_Address Lower_Byte_Address data1 data2 ...]
Write_Command для этого EEPROM равняется 2.
Данные должны быть записаны в чип в следующем формате, чтобы считать его назад правильно:
[Read_Command Upper_Byte_Address Lower_Byte_Address zeros(1,size of data to be read back)]
Read_Command для этого EEPROM равняется 3.
Разрешение записи eeprom
write(eeprom,6);
Запишите 'Привет' в 0th адресе 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');