SPI
Pavel Kutina
hw na prelude.cz
Sobota Srpen 24 01:38:58 CEST 2013
A bez karty nebo bez celeho modulu je take stale v nule (jen pro vylouceni
HW problemu)? O STM nevim nic, ale zrovna vcera mne podobne vyskolil
Stellaris od TI na daleko trivialnejsi zalezitosti - ja se snazil cist dve
tlacitka, jedno chodilo, druhe ne, navic to, ktere chodilo, melo navic
nejakou sdilenou funkci pinu, takze tam bylo o dost vic prostoru pro chybu,
to druhe bylo ciste.
Inicializoval jsem je stejne, jen to na tom cistem GPIO nejelo. Nakonec jsem
zjistil, ze jsem je inicializoval blbe oba dva GPIO, jen to na tom sdilenem
pinu melo pull-up hardwarovy jeste "pres neco" externe na desce, takze i
kdyz jsem zkonil inicializaci GPIO, stejne tam byl a tlacitko do nuly vesele
spinalo... To potesilo - asi dve hodiny procitani dokumentace, nastavovani
registru - a nenapadlo me podivat se do schematu i na ten funkci pin...
Takze pokud je to SW spravne (asi ano, tenhle kod vypada podezrele podobne:
https://my.st.com/public/STe2ecommunities/mcu/Lists/STM32Discovery/Attachments/4993/main.c)
tak bych se zkusil podivat po zeleze...
Pavel Kutina
----- Original Message -----
From: "Michal Grunt" <michal.grunt na vynet.cz>
To: <hw-list na list.hw.cz>
Sent: Saturday, August 24, 2013 1:02 AM
Subject: SPI
Zdravím, už pár hodin bojuju s SPI na STM32 (F0) a nějak nemůžu přijít na to
kde je problém. Na logickem analyzátoru vidím průběhy MOSI, SCK a CS, ale
MISO si ani neškrtne, je pořád v L (jedná se o připojení SD karty s tímto
modulem http://www.ebay.com/itm/251289364968 ). SD karty jsem zkoušel dvě
(2GB a 256MB). Mám vůbec dobře nakonfigurované GPIO?
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
// MISO -> PA6
GPIO_StructInit (&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_0); // MISO
Pro jistotu ještě uvedu konfiguraci SPI
SPI_Cmd(SPI1, DISABLE);
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128; //
42000kHz/128=328kHz < 400kHz
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI1, &SPI_InitStructure);
SPI_RxFIFOThresholdConfig(SPI1, SPI_RxFIFOThreshold_QF);
SPI_CalculateCRC(SPI1, DISABLE);
SPI_Cmd(SPI1, ENABLE);
Děkuji za odpověď, MG
_______________________________________________
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