ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 апреля
1022674 Топик полностью
Илья (31.07.2020 10:13, просмотров: 616) ответил =AK= на I2C программный. "Затягивание SCL" не используется.
я имею в виду что клок (SCL), т.е. длительность клоков 

спецификация I2C говорит:

The output stages of devices connected to the bus must have an open-drain or open-collector to perform the wired-AND function.

For a single master application, the master’s SCL output can be a push-pull driver design if there are no devices on the bus which would stretch the clock.

Clock stretching is a feature of some slaves. If no slaves in a system can stretch the clock (hold SCL LOW), the master need not be designed to handle this procedure


3.1.9 Clock stretching

https://www.nxp.com/docs/en/user-guide/UM10204.pdf


так как у вас Slave поменялся, то в теории он может уметь затягивать SCL (в полном соответствии со спецификацией). я не утверждаю что проблема в этом, но встречался со случаями "необъяснимых" проблем из-за этой фичи. Для программного I2C на PIC-ах лечение простое - управлять через TRIS, а не PORT/LAT