1 Wire STM32

Michal Grunt michal.grunt na vynet.cz
Úterý Červenec 23 16:39:26 CEST 2013


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

-----Original Message-----
From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Jan Waclawek
Sent: Tuesday, July 23, 2013 12:57 PM
To: HW-news
Subject: Re: 1 Wire STM32

Mimochodom, aj toto ukazuje, preco tu '51 treba ucit.

wek

----- Original Message ---------------
>OC/OD, ked toto niekto neovlada, tak sa musi vratit k zakladnemu 
>studiu.

_______________________________________________
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