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