Программный I2C для STM8
Oct. 1st, 2015 11:17 amЯ еще где-то в июне подготовил код софтового I2C, но только вчера вечером руки дошли протестировать на железе. С таймингами я, конечно, намучился, а еще хуже было с порядком изменения состояния ног SDA и SCL (т.к. между последовательными сменами состояния возникали интервалы до 0.5мкс — все-таки, у меня еще и прерывания разные работают, то иногда получалось так, что в конце переданного байта "самопроизвольно" возникал STOP).
Но вроде бы со всем разобрался, выложил код на примере работы с SI7005. Кстати, заметил неплохую "очепятку": почему-то я везде humidity называл pressure (то ли забыл, что датчик не давление, а влажность измеряет, то ли с другим его поначалу перепутал). В этом коде все исправлено: команда 'H' запускает измерение влажности (результат выводится в виде H*10), а команда 'T' измеряет температуру (результат выводится в виде T*100).
Теперь при желании можно на основе "вольтметра" на STM8S003 сделать термометр-гигрометр.
Но вроде бы со всем разобрался, выложил код на примере работы с SI7005. Кстати, заметил неплохую "очепятку": почему-то я везде humidity называл pressure (то ли забыл, что датчик не давление, а влажность измеряет, то ли с другим его поначалу перепутал). В этом коде все исправлено: команда 'H' запускает измерение влажности (результат выводится в виде H*10), а команда 'T' измеряет температуру (результат выводится в виде T*100).
Теперь при желании можно на основе "вольтметра" на STM8S003 сделать термометр-гигрометр.
no subject
Date: 2015-10-01 11:09 am (UTC)no subject
Date: 2015-10-01 11:55 am (UTC)Я на логанализаторе сравнивал формы: красивенькая такая аппаратная и кривущая программная. Чуть какое прерывание — и сбой тайминга. Благо, протокол не придирчив к таймингам, ему лишь бы фронты четкие были.
Но вообще, да — программные реализации протоколов, для которых в чипе уже есть аппаратные — это та еще содомия. Однако, если есть желание к дешевенькому "вольтметру" подключить какой-нибудь датчик по I2C, то либо перепаивать, либо этим заниматься.
no subject
Date: 2015-10-01 12:01 pm (UTC)no subject
Date: 2015-10-01 01:55 pm (UTC)no subject
Date: 2015-10-01 02:55 pm (UTC)