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