Почему в этом примере кода I2 C из FTDI есть адрес слова? - PullRequest
1 голос
/ 02 мая 2020

Я работал над чипом 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 включили эту строку кода? Я что-то упустил?

С наилучшими пожеланиями ...

...