Как использовать I2 C с XC16, используя M CC - Микрочип - PullRequest
0 голосов
/ 20 февраля 2020

Это первый раз, когда я пытался использовать I2 C для своего дизайна, так что терпите меня. Я использовал M CC для настройки I2 C, и у меня есть I2 C. c и I2 C .h. Я пытаюсь прочитать значение датчика давления. Значение имеет длину 15 бит. Нужно ли мне писать подчиненному, прежде чем я прочту, или я могу просто прочитать значение сразу? Я поместил часть своего кода ниже. Вы можете видеть, что я только пытаюсь прочитать значение давления. Кто-нибудь может указать мне правильное направление, как этого добиться? Спасибо, парни.

ПРИМЕЧАНИЕ. Использование PIC24FJ128GB204 с компилятором xc16

I2C1_MESSAGE_STATUS status;

uint8_t PressureCommand = 1; //1 indicates a read
uint16_t address = 0xE0; 
uint16_t PressureData;
uint8_t length = 2; //2 bytes of data


//Request to read 2 bytes of data
I2C1_MasterRead(&PressureData, length, address, &status);
while(I2C1_MESSAGE_PENDING == status)

1 Ответ

1 голос
/ 23 февраля 2020

Да, вам нужно «написать» подчиненному, прежде чем вы сможете что-то прочитать. Обычная процедура выглядит следующим образом:

  1. Настройка условия START (переход SDA с HIGH на LOW при высоком уровне SCL)
  2. Send I2 C адрес устройства (7-битный адрес + бит0 = 0 для записи)
  3. Slave отправляет: ACK
  4. Send I2 C адрес регистра, который вы хотите прочитать (8 бит) (в вашем случае это данные давления)
  5. Ведомые отправляют: ACK
  6. Повторный START (переход SDA с HIGH на LOW при высоком уровне SCL)
  7. Отправка I2 C адреса устройства (7-битный адрес + бит0 = 1 для чтения )
  8. Ведомые отправляют: ACK
  9. Ведомые отправляют: MSB данных давления
  10. Ведущие отправляют: ACK
  11. Ведомые отправляют: LSB данных давления
  12. Мастер посылает: NACK
  13. Send STOP (переход SDA с НИЗКОГО НА ВЫСОКИЙ, когда SCL ВЫСОКИЙ)

В вашем случае данные Давления представляют собой двухбайтовое значение. Однако на шаге 4 вам нужно только запросить первый байт, но при этом ожидать получения двух байтов.

Редактировать: Возможно, вы захотите посмотреть на эту ветку форума .

...