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