Zpět

Implementace Dallas 1-Wire protokolu do mikroprocesoru AVR

Implementing Dallas 1-Wire slave on AVR
Práce soutěže Student EEICT 2005

Abstract: The paper describes the basic principles of the Dallas 1-Wire bus, which is unique due to use of only one wire (in addition to ground) for communication between the devices. The goal is to develop a 1-Wire slave device based on an AVR microcontroller, which will be in full compliance with the standard [1]. The MCU should understand the basic commands to control its I/O pins. All source codes are avaiable for download - unfortunatelly with Czech comments.

ABSTRAKT

Tento dokument popisuje základní principy Dallas 1-Wire sběrnice, která je unikátní díky použití jediného vodiče (plus země) pro komunikaci mezi zařízeními. Účelem práce je vyvinout 1-Wire slave zařízení založené na mikroprocesoru AVR, které bude plně kompatibilní se standardem [1]. Mikroprocesor by měl rozumět základním příkazům pro obsluhu svých vstupně-výstupních pinů.

1 ÚVOD

Jednoúčelové obvody firmy Dallas komunikující po 1-Wire sběrnici se v současné době vývoje mikroprocesorové techniky rozšířily i v naší zemi. Mezi nejznámější patří teplotní čidla rodiny DS18x20. Tento článek popisuje implementaci 1-Wire slave zařízení do mikroprocesoru AVR, na jehož porty lze po sběrnici přistupovat. Navržené principy softwarově emulovaného 1-Wire slave zařízení je možné využít zejména v měřící a regulační technice.

2 POPIS 1-WIRE SBĚRNICE

Komunikace na sběrnici je asynchronní a poloduplexní, striktně dodržuje master/slave schéma. Zařízení typu slave může být připojeno více. Sběrnice je neaktivní v log. 1, což je zabezpečeno pull-up rezistorem. Všechna zařízení mají budič s otevřeným kolektorem, pomocí kterého mohou sběrnici stáhnout na log. 0, a jsou připojena prostřednictvím pouhých dvou vodičů - datového a zemnícího.

Komunikace je rozdělena do tzv. časových slotů, trvajících typicky 60 s. Jeden bit je přenesen během jednoho časového slotu. Master zahajuje veškerou komunikaci generováním sestupné hrany, kterou se synchronizují všechna slave zařízení. Na sběrnici jsou definovány čtyři základní operace: zápis 1, zápis 0, čtení a reset. Níže uvedené časování sběrnice je doporučené, z pohledu master zařízení je popsáno v [3], časování slave nutné pro jeho implementaci do AVR je částečně popsáno v [1] a bylo experimentálně zjišťováno a ověřováno na vzorku obvodu teplotního čidla DS18S20.

2.1 ZÁPIS

Popis 1-Wire sběrnice

Zápis log. 1 je zobrazen na obr. 1 a), nízká úroveň trvá 6 s. Zápis log. 0 ukazuje obr. 1 b), v tomto případě trvá nízká úroveň 60 s. Slave zařízení po sestupné hraně signálu počká 30 s a přečte stav sběrnice, který odpovídá přenášenému bitu.

2.2 ČTENÍ

Čtení je zobrazeno na obr. 1 c). Master stáhne sběrnici na log. 0 po dobu 6 s a po uplynutí dalších 9 s přečte její stav. Operace čtení odpovídá operaci zápisu log. 1, jejich rozlišení záleží na vnitřním stavu slave zařízení.

Slave zařízení se synchronizuje sestupnou hranou a dále se zachová podle bitu, který chce zapsat. Jedná-li se o log. 1, nevykoná žádnou operaci. Má-li být zapsána log. 0, stáhne slave bezprostředně po sestupné hraně sběrnici na nízkou úroveň po dobu 30 s.

2.3 RESET

Operace resetu se skládá ze dvou částí: reset pulsu vyslaného master zařízením a presence pulsu potvrzujícího přítomnost slave zařízení. Reset puls trvá 8 časových slotů, tj. 480 s. Master po jeho odeslání počká 70 s a přečte stav sběrnice. Je-li sběrnice na log. 0, je připojeno alespoň jedno slave zařízení.

Slave detekuje jako reset puls přítomnost nízké úrovně na sběrnici po dobu překračující 240 s. Po návratu na log. 1 počká slave 30 s a na 120 s odpoví presence pulsem. Operaci resetu ukazuje obr. 1 d).

3 PŘÍKAZY 1-WIRE PROTOKOLU

Po iniciaci reset pulsem a potvrzení presence pulsem očekávají slave zařízení připojená na sběrnici tzv. ROM příkaz. Tím se adresuje konkrétní zařízení na sběrnici (lze jich adresovat i více naráz). Vybrané zařízení poté očekává příkaz k provedení určité operace (tzv. funkční příkaz).

3.1 ADRESACE SLAVE ZAŘÍZENÍ

Každé 1-Wire slave zařízení má výrobcem přiřazené 64-bitové unikátní identifikační číslo. Mikroprocesor emuluje všechny základní ROM příkazy: READ ROM, SKIP ROM, MATCH ROM a SEARCH ROM.

3.2 FUNKČNÍ PŘÍKAZY SLAVE ZAŘÍZENÍ

Scratchpad

Mikroprocesor má implementované příkazy čtení a zápisu na tzv. scratchpad, tj. dočasnou paměť. Scratchpad se skládá ze tří bajtů, první odpovídá stavu brány A mikroprocesoru, druhý udává verzi firmware a poslední obsahuje kontrolní součet DOW CRC (obr. 2). Zapisovat je možné pouze na první bajt scratchpadu.

Podporovány jsou tyto příkazy:

4 IMPLEMENTACE V MIKROPROCESORU AVR

Slave zařízení je implementováno promocí mikroprocesoru typu ATtiny26 firmy Atmel. Zdrojový kód je tvořený v AVR assembleru. Z hlediska časování jsou nejkritičtější funkce čtení a zápisu bitu na sběrnici. Emulované slave zařízení je převážně kompatibilní se standardem [1], odchyluje se pouze v několika bodech - detekce reset pulsu se pohybuje mezi 220 a 260 s, reakce při zápisu log. 0 slave zařízením může v nejhorším případě dosáhnout až 5 s a implementace nepodporuje adaptivní časování sběrnice a overdrive rychlost. Pokud se ale master bude držet doporučení [3], k žádným problémům v komunikaci nedojde.

Zdrojový kód je možné snadno rozšířit k zpřístupnění dalších periferií mikroprocesoru, např. AD převodníku nebo modulu PWM. Při vývoji byl kladen důraz na jeho modularitu, pro změnu funkce slave zařízení je postačující zásah do hlavního programu a části obsluhující funkční příkazy. Zdrojový kód se skládá z následujících pěti funkčních celků:

Procesor využívá vnitřního oscilátoru na frekvenci 4 MHz, bezchybný chod je zajišťován integrovaným obvodem watchdog a brown-out detekcí. Identifikační číslo slave zařízení je uloženo v EEPROM paměti mikroprocesoru spolu s konfigurací vstupů a výstupů portu A, který je po sběrnici přístupný.

LITERATURA

  1. Book of iButton Standards, Dallas Semiconductor Corp., 1997
  2. Application Note AVR318: Dallas 1-Wire master, Atmel Corp., 2004
  3. Application Note 126: 1-Wire Communication Through Software, Dallas Semiconductor Corp., 2004

DOWNLOAD