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

Этот пример показывает, как связаться с 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');