1 Wire STM32

Michal Grunt michal.grunt na vynet.cz
Středa Červenec 24 10:40:49 CEST 2013


Asi máte pravdu. Vygooglil jsem jeden z mála příkladů a tam skutečně sestupná hrana není. Nicméně to stejně nejde. Asi se na to kouknu log. analyzátorem co se tam vůbec děje (jestli vůbec něco).

MG

-----Original Message-----
From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On Behalf Of HUDA volny
Sent: Wednesday, July 24, 2013 6:51 AM
To: HW-news
Subject: Re: 1 Wire STM32

Stejně si myslím, že postup je špatně. Podle obrázku PIC7 by měl být poslán jen start signál a potom už jen číst data. Na tom obrázku je drobná chybka. Poslední sestupná hrana už by neměla být označena jako host signál, ale jako sensor signál.

Pak by postup měl být takovýto:
  - nahodím SDA, počkám těch cca 50ms
  - shodím, počkám Tbe (10ms)
  - nahodím, počkám Tgo (100us)
  - přečtu stav Trel
  - přečtu stav Treh
  - čtu jednotlivé bity zprávy

Na obrázku PIC9 je postup popsán. Po start signálu uvolnit sběrnici a počkat na "sensor response signal".

HUDA


Dne Tue, 23 Jul 2013 16:39:26 +0200 Michal Grunt <michal.grunt na vynet.cz>
napsal(a):

> Tak stejně asi dělám něco špatně (senzor AM2302, napájení čidla je na 
> Discovery F0 připojené na 5V, SDA na PA3). Ow_reset mi vždy vrátí 0 
> (což by odpovídalo poslednímu přikazu GPIO_ResetBits) a je jedno 
> jestli je čidlo připojené nebo odpojené.
> http://meteobox.tk/files/AM2302.pdf
> Postup dle PDFka:
> - nahodím SDA, počkám těch cca 50ms
> - shodím, počkám Tbe (10ms)
> - nahodím, počkám Tgo (100us)
> - shodím, počkám Trel (120us - 80+40)
> - přečtu stav Treh
>
> void ow_init(void)
> {
> 	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
>
> 	GPIO_StructInit (&GPIO_InitStructure);
> 	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
> 	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
> 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
> 	GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
> 	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
> 	GPIO_Init(GPIOA, &GPIO_InitStructure); }
>
> uint8_t ow_reset(void)
> {
> 	uint8_t presence;
>
> 	GPIO_SetBits(GPIOA,GPIO_Pin_3);
> 	delay_ms(50); // počkat až čidlo po zapnutí napájení naběhne, nevím 
> zda je to nutné...
>
> 	GPIO_ResetBits(GPIOA, GPIO_Pin_3);
> 	delay_ms(10);
>
> 	GPIO_SetBits(GPIOA,GPIO_Pin_3);
> 	delay_us(100);
> 	GPIO_ResetBits(GPIOA, GPIO_Pin_3);
>
> 	delay_us(120);
>
> 	presence = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3);
>
> 	return presence;
> }
>
_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list