Pull to refresh

Comments 10

Самое обидное, что в I2C у тебя хотя бы есть механизм ACK/NACK. У RFFE устройств такого нет. И сиди гадай, ты не прав, или все же микросхема. А она просто молчать будет до победного.

Это, получается, как с женщинами.

ну вот не хочешь ты платить филипсу (кстати, где он(с)) отчисления, возьми, как все остальные, просто придумай другое название и будет у тебя вместо i2c свой очередной twi/sccb/pmbus/... при этом совместимый, но нет же - "@#$нутым нет покоя"

С таким интерфейсом я ещё не сталкивался, почитать было интересно.

Ногодрыг прям сложный получился. Если не удаётся эмулировать такой спец.интерфейс аппаратно, типа через SPI или что-нибудь подобное, я пользуюсь запросом DMA от таймера. Сама DMA-передача идёт либо в регистры таймера, либо прямо в порт GPIO. Это сильно быстрее и точнее, чем прерывания.

Передний фронт SCLK Задний фронт SCLK

Что-то вы здесь намерили не то. По описанию мк фронт должен быть короче 4 нс. Либо на осциллографе включено ограничение полосы, либо забыли щуп в 1:10 переключить.

STM32F103 не на самой большой скорости

И микросхеме QPC1220Q вроде нужны логические уровни КМОП 1,8 В, а не 3,3 В.

Спасибо за комментарий. Рад, что было интересно)

Про DMA идея отличная, на момент реализации, почему-то, для себя выбрал реализацию с таймером. Собственно, на лучшую реализацию не претендую. Главное, что стабильно работает.

Что касается измерений на линии SCLK, как будет момент, постараюсь перепроверить для STM32F411CEU6. Активная работа над реализацией была давненько, что-то мог упустить) Однако точно помню, что на AT32F413KCU7-4 тайминги точно укладывались в спецификацию интерфейса.

Очень интересно! Спасибо за такой подарок всей тусовке! В моей волосатой голове начали бродить мысли где ещё это можно применить? Давайте накидаем вариантов?

Этот кадр представляет собой стандартный вид ответа на некорректную команду. Честно говоря, не совсем понятно, что подразумевали разработчики интерфейса, включая его в спецификацию, поскольку, на практике, его применение ну совсем уж ограничено.

Это нужно для того, чтобы шина не подвисала до окончания таймаута, ожидая ответа от слэйва, когда к нему по каким-то причинам пришла некорректная команда и он её проигнорировал.

Добиться скоростей выше одного МГц при эмуляции на микроконтроллере, с учётом того, что он должен решать и другие задачи, будет очень сложно.

А зачем вам мегагерц? На вашем же скрине написано, что тактовая может быть от 32 кГц.

Добрый день, спасибо за комментарий

Это нужно для того, чтобы шина не подвисала до окончания таймаута, ожидая ответа от слэйва, когда к нему по каким-то причинам пришла некорректная команда и он её проигнорировал.

Не могли бы раскрыть подробнее? Насколько я понимаю, поводов для подвисания там вроде присутствовать не должно, т.к. шина всегда притянута вверх или вниз мастером или слейвом.

А зачем вам мегагерц? На вашем же скрине написано, что тактовая может быть от 32 кГц.

В статье я и не утверждаю, что целюсь в такие скорости. Однако, поскольку информации в интернете по данному интерфейсу особо нет, на момент реализации, я старался с запасом попасть в требуемые RFFE параметры. Чтобы исключить лишние неопределённости. Потому старался добиться максимальных скоростей тактирования на шину.

Добиться ровного и стабильного тактирования на скорости в 1МГц и более не вышло.

Мастер после запроса ждёт ответ и, если слэйв проигнорировал запрос из-за помех в линии - может ждать бесконечно долго или до срабатывания таймаута. Поэтому, чтобы такого не было - слэйв всегда максимально быстро отвечает или запрошенными данными, или таким вот ответом.

Sign up to leave a comment.

Articles