STM32F3 SPI vubec... (bylo ruseni SPI signalu)

Jan Waclawek konfera na efton.sk
Úterý Prosinec 18 20:58:41 CET 2018


>  Nestacim objevovat dalsi podivnosti, zkousim 
> rozchodit CRC u SPI
 
> Ono to funguje ale: Jedina moznost, jak vynulovat RX a TXCRCR a RXCRCR 
> registry, je vypnuti a zapnuti bitem CRCEN? 

Neviem, nepouzil som este CRC v SPI, ale malo by sa dat pouzit aj
automaticke nulovanie spolu s kontrolou, ako je to uvedene v podkapitole
"Resetting the SPIx_TXCRC and SPIx_RXCRC values". 

> Prenasim data v ramcich 512B 
> a kazdy ramec by mel byt nezavisly, chci tedy inicializovat vzdy pred 
> prenosem CRC.
> 
> Ten se ma ale menit, jen kdyz je SPI disabled, coz se mi vubec nelibi, 
> protoze v tomto stavu nebudi vystupy MOSI ani CLK, jestli jsem dobre 
> meril. To by mi mohlo zblbnout slave, co s tim??? Asi budu muset doplnit 
> PU rezistory. Kdo to mohl takhle debilne vymyslet...

Ten SPE treba vypnut/zapnut aj pri inych prilezitostiach, ja som sa s tym
potykal pri pouziti dvoch slave s rozlicnou kombinaciou CPOL/CPHA (pri
prepnuti v niektorom smere SPI modul generoval v nasledujucom frame o
jeden clock naviac). Kedze som v tom konkretnom pripade mali oba slave
chipselect, nejaka zmena stavu pocas vypnuteho SPI (ked samozrejme boli aj
oba chipselecty neaktivne) nepredstavoval problem; ale nevidim dovod preco
by nemal stacit interny pullup/pulldown (podla potreby). Ak by nestacil
(povedzme ze je tam nejaky intenzivny presluch zo susediacej drahy "cez
pidikapacitu"), potom sa da urobit sekvencia 1. prepnut GPIO pre SCK pin z
AF na Out (s prislusne predpripravenou urovnou v ODR), 2. zakazat SPI,
urobit co v nom treba, povolit SPI, 3. prepnut GPIO pre SCK pin z Out na
AF, 4. spustit prenos v SPI. Znie to komplikovane, ale v skutocnosti su to
len dva zapisy do prislusneho MODER registra - samozrejme si treba davat
pozor na atomicitu, ak tato procedura sposobi, ze je tento register
prepisovany v programe v prerusovacich urovniach roznych priorit.

wek




Další informace o konferenci Hw-list