Konzola pro I2C

Testuju teď nějaká zařízení s rozhraním I2C a hodilo by se mi mít možnost je snadno ovládat a testovat.

Jasně, je to jednoduché, připojím je k Arduinu, napíšu si program, vypíšu hodnoty… Jenže při testování chci simulovat různé věci, zápisy, čtení a kdesi cosi, a pokaždé překládat program není moc příjemné. Tak jsem si udělal takovou konzolu – máte připojenou sériovou linku a prostě posíláte příkazy. Žádná sofistikovanost, jen ty nejzákladnější: zapiš, přečti, zapiš + přečti.

Formát příkazů je následující:

Když chci poslat dva bajty, třeba 01 a 55, do zařízení 0x27, pošlu po sériové lince toto:

Tedy hexadecimálně adresu (27), příkaz pro zápis (tečka) a bajty, co se mají poslat.

Pro čtení používám příkaz „otazník“ a za ním počet bajtů, které chci přečíst (vždy dvoumístné hexadecimální číslo):

přečte dva bajty ze zařízení 27.

A když chci zapsat a číst, třeba s RTC DS1307 – zapíšu 0 a načtu 7 bajtů v jedné transakci:

Tedy zařízení 68 (DS1307), zapisuju (tečka) jeden bajt s hodnotou 00, a pak čtu (otazník) 07 bajtů.

A abych nemusel psát furt dokola adresu, udělal jsem si takovou zkratku – napíšu třeba „27!“ (tedy příkaz vykřičník) a tím řeknu, že všechny další příkazy, pokud budou bez adresy, použijou tuto zadanou. Takže třeba výše zmíněné příkazy:

Už adresu neuvádím, konzole bere tu, co jsem zadal s vykřičníkem. Pokud ji uvedu, použije se samozřejmě ta, co jsem uvedl

Kód je jednoduchý, máte ho tu v gistu:

Líbil se vám článek? Podpořte autora na Patreonu
banner