1 Wire STM32

HUDA volny hudaklan na volny.cz
Středa Červenec 24 06:50:44 CEST 2013


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;
> }
>


Další informace o konferenci Hw-list