Программный I2C для STM8

Oct 01, 2015 11:17

Я еще где-то в июне подготовил код софтового I2C, но только вчера вечером руки дошли протестировать на железе. С таймингами я, конечно, намучился, а еще хуже было с порядком изменения состояния ног SDA и SCL (т.к. между последовательными сменами состояния возникали интервалы до 0.5мкс - все-таки, у меня еще и прерывания разные работают, то иногда ( Read more... )

stm8, железяки

Leave a comment

Comments 5

32bit_me October 1 2015, 11:09:31 UTC
Круто! Я тоже софтовый i2c писал лет 10 назад.

Reply

eddy_em October 1 2015, 11:55:38 UTC
На самом деле, несмотря на рукожопность STM8 (errata довольно ощутимая), в простейшем режиме аппаратный I2C нормально работает, если не рассчитывать на прерывания.
Я на логанализаторе сравнивал формы: красивенькая такая аппаратная и кривущая программная. Чуть какое прерывание - и сбой тайминга. Благо, протокол не придирчив к таймингам, ему лишь бы фронты четкие были.

Но вообще, да - программные реализации протоколов, для которых в чипе уже есть аппаратные - это та еще содомия. Однако, если есть желание к дешевенькому "вольтметру" подключить какой-нибудь датчик по I2C, то либо перепаивать, либо этим заниматься.

Reply

32bit_me October 1 2015, 12:01:24 UTC
Ну да. Я делал это для древнего контроллера, у которого не было аппаратного i2c.

Reply


mbr October 1 2015, 13:55:58 UTC
Я так и не понял суть проблемы, если есть аппаратный?

Reply

eddy_em October 1 2015, 14:55:54 UTC
Это для извращений: если хочется, скажем, "вольтметр" на STM8 переделать в барометр-гигрометр-термометр.

Reply


Leave a comment

Up