<?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=8580&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-09-24T20:10:30+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=8580&amp;mode</id>
<entry>
<author><name><![CDATA[azorp12]]></name></author>
<updated>2014-09-24T20:10:30+01:00</updated>
<published>2014-09-24T20:10:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96607#p96607</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96607#p96607"/>
<title type="html"><![CDATA[Re: STM32F4 - Discovery i wbudowany akcelerometr]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96607#p96607"><![CDATA[
Nie jest to konieczne ze względu na to iż jeszcze nie zaimplementowałem obsługi przerwań z akcelerometru. Ale z czystej ciekawości sprawdziłem i nie dało to żadnych efektów. W międzyczasie kod przeszedł wiele zmian, w przebiegu uzyskanym z analizatora logicznego widać już że master wysyła dane jednak slave nic nie wysyła (samo 0xFF na miso):<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/1743/d0ffa6bcd91c63780dfddd9664b6bc32.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1743/d0ffa6bcd91c63780dfddd9664b6bc32.JPG" alt="Obrazek" /></a><br /><br />A oto program:<br /><br />[syntax=c]uint16_t SendByte(uint16_t byte)<br />{<br />uint16_t data;<br />SS_RST;//Pin SS = 0<br />while(!(SPI1 -&gt; SR &amp; SPI_SR_TXE));<br />SPI1 -&gt; DR = byte;<br />while(!(SPI1 -&gt; SR &amp; SPI_SR_RXNE));<br />data = SPI1 -&gt; DR;<br />while((SPI1 -&gt; SR &amp; SPI_SR_BSY));<br /><br />SS_SET;//Pin SS = 1<br />return data;<br />}<br /><br /><br /><br /><br /><br /><br />int main(void) {<br /><br />uint8_t test = 0;<br />RCC -&gt; APB2ENR |= RCC_APB2ENR_SPI1EN;<br />RCC -&gt; AHB1ENR |= RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOEEN | RCC_AHB1ENR_GPIODEN;<br />GPIOA -&gt; MODER |= GPIO_MODER_MODER7_1 | GPIO_MODER_MODER5_1 | GPIO_MODER_MODER6_1;<br />GPIOA-&gt;AFR&#91;0&#93; |= 0x50000000;<br />GPIOA-&gt;AFR&#91;0&#93; |= 0x05000000;<br />GPIOA-&gt;AFR&#91;0&#93; |= 0x00500000;<br />GPIOA -&gt; OSPEEDR |= GPIO_OSPEEDER_OSPEEDR7_1 | GPIO_OSPEEDER_OSPEEDR6_1 | GPIO_OSPEEDER_OSPEEDR5_1;<br />GPIOE -&gt; OSPEEDR |= GPIO_OSPEEDER_OSPEEDR3_1;<br />SS_SET;<br />GPIOE -&gt; MODER |= GPIO_MODER_MODER3_0 | GPIO_MODER_MODER0_1 | GPIO_MODER_MODER1_1;<br />GPIOE -&gt; PUPDR |= GPIO_PUPDR_PUPDR3_1;<br />        GPIOA -&gt; PUPDR |= GPIO_PUPDR_PUPDR5_1;<br />GPIOA -&gt; PUPDR |= GPIO_PUPDR_PUPDR6_1;<br />GPIOD -&gt; MODER |= GPIO_MODER_MODER15_0;<br /><br /><br />       <br />SPI1 -&gt; CR1 |=  SPI_CR1_MSTR;<br />//SPI1 -&gt; CR1 |= SPI_CR1_DFF;<br />SPI1 -&gt; CR1 |= SPI_CR1_BR_0 | SPI_CR1_BR_2;<br />SPI1 -&gt; CR1 |= SPI_CR1_SSM | SPI_CR1_CPOL | SPI_CR1_CPHA;<br />SPI1 -&gt; CR1 |= SPI_CR1_SSI;<br /><br /><br /><br />SPI1 -&gt; CR1 |= SPI_CR1_SPE;<br /><br /><br /><br />while (1) {<br /><br />SendByte(0x0F);<br /><br />}<br />}[/syntax]<br /><br />//EDIT: Dziękuję bardzo za pomoc, komunikacja działa - zapomniałem o tym że ramka jest 16 - bitowa, wysyłałem zatem złe rzeczy na magistralę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1743">azorp12</a> — 24 wrz 2014, o 20:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PJS]]></name></author>
<updated>2014-09-24T16:19:58+01:00</updated>
<published>2014-09-24T16:19:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96584#p96584</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96584#p96584"/>
<title type="html"><![CDATA[Re: STM32F4 - Discovery i wbudowany akcelerometr]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96584#p96584"><![CDATA[
Czy zamiast<br />[syntax=c]GPIOE -&gt; MODER |= GPIO_MODER_MODER3_0;[/syntax]<br /><br />nie powinno być<br />[syntax=c]GPIOE-&gt;MODER|= GPIO_MODER_MODER3_0 | GPIO_MODER_MODER0_1 | GPIO_MODER_MODER1_1;[/syntax]<br />?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1614">PJS</a> — 24 wrz 2014, o 16:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[azorp12]]></name></author>
<updated>2014-09-23T19:20:19+01:00</updated>
<published>2014-09-23T19:20:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96491#p96491</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96491#p96491"/>
<title type="html"><![CDATA[Re: STM32F4 - Discovery i wbudowany akcelerometr]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96491#p96491"><![CDATA[
Pozwolę sobie zamieścić zrzut z okna programu analizatora logicznego (miałem dzisiaj do niego dostęp):<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/1743/c3eeb3dc4035a8e58dc8b0c1c0537157.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1743/c3eeb3dc4035a8e58dc8b0c1c0537157.JPG" alt="Obrazek" /></a><br /><br />Jak można zauważyć linia zegarowa jak i linia CS pracują, natomiast master nic nie chce wysyłać przez co slave nie odpowiada. Próbowałem innych opcji konfiguracji w tym konfiguracja kolegi powyżej. Akcelerometr działa - sprawdzałem w programie z przykładów od ST. Mi chodzi natomiast o samodzielne oprogramowanie akcelerometru.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1743">azorp12</a> — 23 wrz 2014, o 19:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[makarpi]]></name></author>
<updated>2014-09-23T09:02:00+01:00</updated>
<published>2014-09-23T09:02:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96436#p96436</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96436#p96436"/>
<title type="html"><![CDATA[Re: STM32F4 - Discovery i wbudowany akcelerometr]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96436#p96436"><![CDATA[
Dwa lata temu oprogramowałem go, na podstawie przykładów od ST.<br /><br />Moja funkcja inicjalizacyjna: <br />[syntax=c]void SPI_init(void)<br />{<br />RCC-&gt;APB2ENR|=RCC_APB2ENR_SPI1EN;<br /><br />GPIOA-&gt;MODER|= GPIO_MODER_MODER5_1 | GPIO_MODER_MODER6_1 | GPIO_MODER_MODER7_1;<br />GPIOE-&gt;MODER|= GPIO_MODER_MODER3_0 | GPIO_MODER_MODER0_1 | GPIO_MODER_MODER1_1;<br />GPIOA-&gt;AFR&#91;0&#93;|=0x55500000;<br /><br />RCC-&gt;APB2RSTR|=RCC_APB2RSTR_SPI1RST;<br /><br />RCC-&gt;APB2RSTR&amp;=~(RCC_APB2RSTR_SPI1RST);<br /><br />SPI1-&gt;CR1|=SPI_CR1_BR_2 | SPI_CR1_SSM | SPI_CR1_SSI | SPI_CR1_MSTR;//f_clk/32 (168/32=5,25) //software slave managment //internal slave select //master selection<br /><br />SPI1-&gt;CR1|=SPI_CR1_SPE;//SPI enable<br /><br />GPIO_setbits(GPIOE,GPIO_Pin_3);<br />}[/syntax]<br /><br />Spróbuj jej, nie obiecuję że działa, wygrzebałem go z czeluści dysku <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=507">makarpi</a> — 23 wrz 2014, o 09:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[azorp12]]></name></author>
<updated>2014-09-20T20:04:56+01:00</updated>
<published>2014-09-20T20:04:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96181#p96181</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96181#p96181"/>
<title type="html"><![CDATA[Re: STM32F4 - Discovery i wbudowany akcelerometr]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96181#p96181"><![CDATA[
Niestety, wcześniej próbowałem i te bity ustawiać (z SSOE i bez) i bezskutecznie. Odpowiedź nadal taka sama.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1743">azorp12</a> — 20 wrz 2014, o 20:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PROTON]]></name></author>
<updated>2014-09-20T19:54:40+01:00</updated>
<published>2014-09-20T19:54:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96180#p96180</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96180#p96180"/>
<title type="html"><![CDATA[Re: STM32F4 - Discovery i wbudowany akcelerometr]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96180#p96180"><![CDATA[
No to musisz jeszcze dopisać:<br /><br />[syntax=c]SPI1-&gt;CR1 |= SPI_CR1_SSM;<br />SPI1-&gt;CR1 |= SPI_CR1_SSI;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1315">PROTON</a> — 20 wrz 2014, o 19:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[azorp12]]></name></author>
<updated>2014-09-20T19:53:23+01:00</updated>
<published>2014-09-20T19:53:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96179#p96179</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96179#p96179"/>
<title type="html"><![CDATA[Re: STM32F4 - Discovery i wbudowany akcelerometr]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96179#p96179"><![CDATA[
<div class="quotetitle">PROTON napisał(a):</div><div class="quotecontent"><br />Jak na mój gust to zapomniałeś o CS (PE3) w rejestrze AFR.<br /></div><br /><br />Dla PE3 nie ma przewidzianej funkcji alternatywnej związanej z SPI, PE3 jest sterowane programowo, nie przez SPI.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1743">azorp12</a> — 20 wrz 2014, o 19:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PROTON]]></name></author>
<updated>2014-09-20T19:43:28+01:00</updated>
<published>2014-09-20T19:43:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96176#p96176</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96176#p96176"/>
<title type="html"><![CDATA[Re: STM32F4 - Discovery i wbudowany akcelerometr]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96176#p96176"><![CDATA[
Jak na mój gust to zapomniałeś o CS (PE3) w rejestrze AFR.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1315">PROTON</a> — 20 wrz 2014, o 19:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[azorp12]]></name></author>
<updated>2014-09-20T18:57:16+01:00</updated>
<published>2014-09-20T18:57:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96170#p96170</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96170#p96170"/>
<title type="html"><![CDATA[STM32F4 - Discovery i wbudowany akcelerometr]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8580&amp;p=96170#p96170"><![CDATA[
Witam,<br /><br />Mam problem z akcelerometrem LIS3DSH wbudowanym w płytkę STM32F4 - Discovery. Próbuję uzyskać odpowiedź akcelerometru na komendę WHO_AM_I. Niestety akcelerometr ciągle wywala 0xFFFF pomimo wielu zmian w kodzie. Komunikuję się przy pomocy SPI. Oto kod:<br /><br />Istotne makra:<br />[syntax=c]#define WHO_AM_I 0x3F<br />#define SS_SET GPIOE -&gt; BSRRL = 0x0008;//PE3 = 1<br />#define SS_RST GPIOE -&gt; BSRRH = 0x0008;//PE3 = 0[/syntax]<br /><br />Funkcja jednocześnie wysyłająca i odbierająca:<br /><br />[syntax=c]uint8_t SendByte(uint8_t byte)<br />{//Pin SS = 0<br />uint8_t data;<br />SS_RST;<br />while(!(SPI1 -&gt; SR &amp; SPI_SR_TXE));<br />SPI1 -&gt; DR = byte;<br />while(!(SPI1 -&gt; SR &amp; SPI_SR_RXNE));<br />data = SPI1 -&gt; DR;<br />while(SPI1 -&gt; SR &amp; SPI_SR_BSY);<br />SS_SET;<br />return data;//Pin SS = 1<br />}[/syntax]<br /><br />Funkcja główna:<br /><br />[syntax=c]int main(void) {<br /><br />RCC -&gt; APB2ENR |= RCC_APB2ENR_SPI1EN;<br />RCC -&gt; AHB1ENR |= RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOEEN | RCC_AHB1ENR_GPIODEN;<br />GPIOA -&gt; MODER |= GPIO_MODER_MODER7_1 | GPIO_MODER_MODER5_1 | GPIO_MODER_MODER6_1;<br />GPIOA -&gt; AFR&#91;0&#93; |= 0x5550000;<br />GPIOA -&gt; OSPEEDR |= GPIO_OSPEEDER_OSPEEDR7 | GPIO_OSPEEDER_OSPEEDR6 | GPIO_OSPEEDER_OSPEEDR5;<br />GPIOE -&gt; OSPEEDR |= GPIO_OSPEEDER_OSPEEDR3;<br />GPIOE -&gt; MODER |= GPIO_MODER_MODER3_0;<br />GPIOE -&gt; PUPDR |= GPIO_PUPDR_PUPDR3_1;<br />GPIOA -&gt; PUPDR |= GPIO_PUPDR_PUPDR7_1;<br />GPIOA -&gt; PUPDR |= GPIO_PUPDR_PUPDR6_1;<br />GPIOA -&gt; PUPDR |= GPIO_PUPDR_PUPDR5_1;<br />GPIOD -&gt; MODER |= GPIO_MODER_MODER15_0;<br /><br />SS_SET;<br /><br />SPI1 -&gt; CR1 |= SPI_CR1_CPOL | SPI_CR1_CPHA | SPI_CR1_MSTR;<br />SPI1 -&gt; CR1 |= SPI_CR1_DFF;<br />SPI1 -&gt; CR1 |= SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0;<br /><br />SPI1 -&gt; CR2 |= SPI_CR2_SSOE;<br />SPI1 -&gt; CR1 |= SPI_CR1_SPE;<br /><br /> test = SendByte(WHO_AM_I);<br /><br /><br /><br />while (1) {<br /><br />}<br />}[/syntax]<br /><br />Mógłby ktoś znaleźć błędy w moim programie? Nie mogę zrozumieć czemu ten program nie działa właściwie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1743">azorp12</a> — 20 wrz 2014, o 18:57</p><hr />
]]></content>
</entry>
</feed>