<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=46&amp;t=14299&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-01-25T23:09:40+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=14299&amp;mode</id>
<entry>
<author><name><![CDATA[krafin]]></name></author>
<updated>2016-01-25T22:47:02+01:00</updated>
<published>2016-01-25T22:47:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151736#p151736</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151736#p151736"/>
<title type="html"><![CDATA[Re: STM32 - spi problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151736#p151736"><![CDATA[
Ten procek ma 4 bajtowe FIFO jako bufor, a flaga TXE jest zerowana dopiero gdy jest on zapełniony w ponad połowie. Skoro ty wysyłasz tylko jeden bajt to ona nigdy się nie wyzeruje. Po za tym tak jak napisał QuadMan. Albo ustawiasz SSM i machasz programowo pinem NSS <strong>poprzez bit SSI</strong> albo zerujesz  SSM i wtedy pinem NSS macha SPI w zależności od tego czy ma coś w buforze. Jeżeli ustawimy machanie sprzętowe to może również dawać krótki impuls pomiędzy kolejnymi bajtami.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 6 minutach ]</span></strong><br /><br />To samo tyczy się flagi BUSY. Program od razu przelatuje poprzez pierwszego while-a i nie zatrzymuje się na drugim bo w tym momencie flaga BUSY jest jeszcze ustawiona, ponieważ SPI jeszcze nadaje. Dodaj jakiegoś delaya od razu po zapisie do rejestru DR a zobaczysz, że program stanie ci na drugim while-u.<br />Po za tym pokaż jeszcze konfigurację AFR dla GPIO.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=487">krafin</a> — 25 sty 2016, o 22:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2016-01-25T23:09:40+01:00</updated>
<published>2016-01-25T21:28:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151725#p151725</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151725#p151725"/>
<title type="html"><![CDATA[Re: STM32 - spi problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151725#p151725"><![CDATA[
Ale w konfiguracji masz ustawione sterowanie SS przez soft[syntax=c]// softwarowy pin NSS<br />        SPI1-&gt;CR1 |= SPI_CR1_SSM;<br />        SPI1-&gt;CR1 |= SPI_CR1_SSI;[/syntax]<br /><br />Nawet jeśli ustawisz sterowanie przez hardware, to w trybie Master SS może być jedynie wyjściem ( nie wiem jak jest w trybie multimaster - nigdy nie używałem tego trybu, ale to w tym przypadku nieistotne ) do sterowania Slave'a. Nie jestem pewien, co chcesz osiągnąć, ale podejrzewam, że musisz to zrobić programowo. <br /><br />Pozdrawiam, QuadMan.<br /><br />Dopisane:<strong> Jeszcze raz przeczytałem Twojego ostatniego posta.</strong> Cały problem polega na tym że:<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />The TXE flag is set when transmission TXFIFO has enough space to store data to send. TXE flag is linked to the TXFIFO level. The flag goes high and stays high until the TXFIFO level is lower or equal to 1/2 of the FIFO depth. An interrupt can be generated if the TXEIE bit in the SPIx_CR2 register is set. The bit is cleared automatically when the TXFIFO level becomes greater than 1/2. ( RM0091)<br /></div><br /><br />Nie możesz użyć tej flagi jako &quot;znacznika&quot; końca transmisji, wobec tego co powyżej. ( No chyba, że ustawisz TXFIFO level na 1/4 - ale w sumie w przypadku nadawania nie warto tego robić. )  Musisz sprawdzać flagę BSY:<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />The BSY flag is set and cleared by hardware (writing to this flag has no effect).<br />When BSY is set, it indicates that a data transfer is in progress on the SPI (the SPI bus is busy).<br />The BSY flag can be used in certain modes to detect the end of a transfer so that the software can disable the SPI or its peripheral clock before entering a low power mode which does not provide a clock for the peripheral. This avoids corrupting the last transfer.<br /></div> <br /><br />Czyli, jeśli wyślesz bajt po SPI, to musisz czekać na wyzerowanie BSY, wtedy możesz zmienić stan CE itd...<br /><br />Sorry, ale faktycznie muszę się porządnie wyspać...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5291">QuadMan</a> — 25 sty 2016, o 21:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2016-01-25T21:09:08+01:00</updated>
<published>2016-01-25T21:09:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151722#p151722</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151722#p151722"/>
<title type="html"><![CDATA[Re: STM32 - spi problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151722#p151722"><![CDATA[
Sorry, ale ja nie do końca rozumiem. TXE jest ustawiana na 1 po wysłaniu 8 bitów danych przez SPI i tyle. Gdybyś powtórnie wywołał funkcję WriteByte zanim to nastąpi ( przed upływem 8 taktów zegara SPI dla danej 8 bitowej, to wtedy TXE było by na 0. Nie rozumiem też, co to jest CE na screenie z przebiegami z analizatora. Chcesz sprzętowo sterować wysyłaniem danych w trybie Master ?<br /><br />Pozdrawiam, QuadMan.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5291">QuadMan</a> — 25 sty 2016, o 21:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2016-01-25T18:48:39+01:00</updated>
<published>2016-01-25T18:48:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151692#p151692</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151692#p151692"/>
<title type="html"><![CDATA[Re: STM32 - spi problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151692#p151692"><![CDATA[
Witam.<br /><br />Powinno być:<br />[syntax=c]while( ( SPI1-&gt;SR &amp; SPI_SR_BSY ) );[/syntax] Inicjalizacji nie przeglądałem, mam nadzieję, że masz ok. I w sumie to tu nie ma znaczenia, ale po co sprawdzasz 2 razy flagę TXE ?<br />Wystarczy przecież na początku:[syntax=c]void SPI_WriteByte( uint8_t data )<br />    {<br />           // oczekiwanie az poprzednie wysylanie sie zakonczy<br />            while( (! SPI1-&gt;SR &amp; SPI_SR_TXE) ||  SPI1-&gt;SR &amp; SPI_SR_BSY );<br />            *(uint8_t *)&amp;SPI1-&gt;DR = data;<br />          <br />    }[/syntax]<br /><br />I musi działać, ja mam HCLK/4, ta funkcja co powyżej jest u mnie inline i jest ok - nie potrzeba żadnych delay-ów.<br /><br />Pozdrawiam, QuadMan.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5291">QuadMan</a> — 25 sty 2016, o 18:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PJS]]></name></author>
<updated>2016-01-25T16:24:16+01:00</updated>
<published>2016-01-25T16:24:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151679#p151679</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151679#p151679"/>
<title type="html"><![CDATA[Re: STM32 - spi problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151679#p151679"><![CDATA[
Na tej stronie masz dane kontaktowe (patrz pod Poland). Po prostu zadzwoń - może pomogą.<br /><a href="http://www.st.com/stonline/contactus/contacts/index.php?type=2#EUROPE"  class="postlink">http://www.st.com/stonline/contactus/contacts/index.php?type=2#EUROPE</a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1614">PJS</a> — 25 sty 2016, o 16:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2016-01-25T15:39:55+01:00</updated>
<published>2016-01-25T15:39:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151671#p151671</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151671#p151671"/>
<title type="html"><![CDATA[Re: STM32 - spi problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151671#p151671"><![CDATA[
w przypadku KL25Z mogłbym ci odpowiedzieć prosto ... na początku były błędy w krzemie i stąd kłopot <br /> co mnie dopadło w trakcie prac z SPI  pod FRDM  z wczesnego przed sprzedażowego rzutu, ale 030F nie jest aż tak młody<br />i tesowe wersje już im chyba wyszły ... wiec nasuwa się tylko wniosek o kłopocie w bibliotece SPL  STMa <br />warto spróbować sprawdzić z Najnowszym CMSIS  ew napisać własną obsługę SPI<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 25 sty 2016, o 15:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2016-01-25T15:00:32+01:00</updated>
<published>2016-01-25T15:00:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151665#p151665</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151665#p151665"/>
<title type="html"><![CDATA[Re: STM32 - spi problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14299&amp;p=151665#p151665"><![CDATA[
<!-- m --><a class="postlink" href="http://www.ba0sh1.com/howto-use-stm32-spi-half-duplex-mode/" >http://www.ba0sh1.com/howto-use-stm32-s ... plex-mode/</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 25 sty 2016, o 15:00</p><hr />
]]></content>
</entry>
</feed>