Я работал над чипом FTDI FT2232H для взаимодействия с устройствами I2 C. Я начал изучать AN_177 примечание к приложению pdf. У меня нет EEPROM для опыта, нет осциллографа для просмотра сигналов. Моя цель - понять сам код и делать записи для моих будущих проектов. Вот фрагмент кода, который я не совсем понимаю:
FT_STATUS write_byte(uint8 slaveAddress, uint8 registerAddress, uint8 data)
{
uint32 bytesToTransfer = 0;
uint32 bytesTransfered;
bool writeComplete=0;
uint32 retry=0;
bytesToTransfer=0;
bytesTransfered=0;
buffer[bytesToTransfer++]=registerAddress; /* Byte addressed inside EEPROM */
buffer[bytesToTransfer++]=data;
status = I2C_DeviceWrite(ftHandle, slaveAddress, bytesToTransfer, buffer, &bytesTransfered, I2C_TRANSFER_OPTIONS_START_BIT|I2C_TRANSFER_OPTIONS_STOP_BIT);
/* poll to check completition */
while((writeComplete==0)&& (retry<I2C_WRITE_COMPLETION_RETRY))
{
bytesToTransfer=0;
bytesTransfered=0;
buffer[bytesToTransfer++]=registerAddress; /* Addressed inside EEPROM */
status = I2C_DeviceWrite(ftHandle, slaveAddress, bytesToTransfer,buffer, &bytesTransfered, I2C_TRANSFER_OPTIONS_START_BIT|I2C_TRANSFER_OPTIONS_BREAK_ON_NACK);
if((FT_OK == status) && (bytesToTransfer == bytesTransfered))
{
writeComplete=1;
printf(" ... Write done\n");
}
retry++;
}
return status;
}
Вы можете видеть и понимать, что в то время как l oop является частью опроса.
Я проверил таблицу данных 24LC024H I2 C EEPROM, и они упомянули об Acknowladge Polling (стр. 10) - особенность этого типа EEPROM '. Опрос Acknowladge в основном проверяет, когда устройство готово к отправке данных. Есть также блок-схема ... вы можете посмотреть. Блок-схема
Вот что я хочу отметить:
buffer[bytesToTransfer++]=registerAddress; /* Addressed inside EEPROM */
В таблице данных 24LC024H, относящейся к Acknowladge Polling, говорится, что часть опроса состоит из START + Control Byte (или адрес ведомого) + бит R / W, не включая адрес внутри EEPROM (адрес Word в протоколе I2 C). Так почему ребята из FTDI включили эту строку кода? Я что-то упустил?
С наилучшими пожеланиями ...