STM32F303 SPI3 DMA2 negeneruje TC flag

Jan Waclawek konfera na efton.sk
Středa Srpen 14 19:16:20 CEST 2013


To je naozaj zvlastne. V RM0313(Rev1)26.7 sa explicitne pise, ze SPI_DR sa
da pristupovat aj 8-bitovo.
Nemoze to nejako suvisiet s FIFO v SPI (to je, pokial viem, len v 'F3)? Ako
je nastaveny SPIx_CR2.FRXTH?

wek


----- Original Message ---------------
>DMA_CNDTRx sa ani nepohol a ked som to zbehol teraz vsimol som si ERROR flag, ze mate pravdu JE nastaveny.
>Transakcia prebehne len pri 16bit citani z SPIx->DR. Pri 8bit pristupe neprebehne korektne prevzatie dat z SPI, aspon tolko moj dohad. Je to zvlastne ale nic ine nakoniec nebolo treba zmenit len tu sirku RX DMA a uz to funguje. TX DMA je 8bit kedze potrebujem odosielat 8bit spravy a dokonca aj citanie ak potrebujem naozaj cittat a nie len cakat na koniec transakcie funguje v 8bit rezime.
>Jediny problem je ak je zakazane inkrementovanie adresy ako periferie tak pamate, vtedy to v 8bit rezime nefunguje a v 16bit ano.
>
>Este upresnim jedna sa o STM32F303VCT revizie Y, Periferia bola SPI3 a 
>DMA2 kanal. Doska je 4vrstva s pomerne slusnym blokovanim takze 
>nepredpokladam EMC problem.
>
>Jan Waclawek  wrote / napísal(a):
>> Coze? Ved TC sa ma nastavit pri dosiahnuti daneho poctu transakcii, to by
>> predsa nemalo zavisiet od velkosti transakcie...?
>> Ak tam bol predtym ten DMA_MemoryDataSize_Byte, na akej hodnote sa zastavil
>> DMA_CNDTRx?
>>
>> wek
>>
>> ----- Original Message ---------------
>>   
>>> Nie, tym to nieje. Moze tam zapisovat dokonca som toto miesto zmenil na 
>>> pole ked som testoval ci to funguje ak je zapnute inkrementovanie adresy 
>>> pamate. A fungovalo...
>>> Uz som nasiel pricinu, v tomto pripade je treba pouzit 16bit citanie. V 
>>> RX DMA bolo treba zmenit:
>>>
>>> DMA_InitStructure.DMA_MemoryDataSize         = DMA_MemoryDataSize_HalfWord;
>>> DMA_InitStructure.DMA_PeripheralDataSize    = 
>>> DMA_PeripheralDataSize_HalfWord;
>>>



Další informace o konferenci Hw-list