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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-03-15T14:35:37+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=6323&amp;mode</id>
<entry>
<author><name><![CDATA[Rafael86]]></name></author>
<updated>2014-03-15T14:35:37+01:00</updated>
<published>2014-03-15T14:35:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6323&amp;p=74389#p74389</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6323&amp;p=74389#p74389"/>
<title type="html"><![CDATA[Re: HY-Mini STM32V- kłopot z device ID z TFT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6323&amp;p=74389#p74389"><![CDATA[
Dziękuję za odpowiedź <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> muszę się zapoznać z tematyką FSMC. Jak tylko się z tym uporam to dam znać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1392">Rafael86</a> — 15 mar 2014, o 14:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ElektronikKr]]></name></author>
<updated>2014-03-12T20:31:25+01:00</updated>
<published>2014-03-12T20:31:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6323&amp;p=74042#p74042</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6323&amp;p=74042#p74042"/>
<title type="html"><![CDATA[Re: HY-Mini STM32V- kłopot z device ID z TFT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6323&amp;p=74042#p74042"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Magistarala danych wyświetlacza (D0...D15) jest podłączona w nieuporządkowany sposób, czyli D0 jest podpięty do PD14, D2 do E0 itd. podczas gdy wszystkie przykładowe kody działają tak, że piny danych są podpinane w uporządkowany sposób czyli D0 do PE0 , D1 do PE1 itd.<br /></div><br /><br />Bo jest podłączony pod FSMC. Też się na to nabrałem na samym początku.<br />Myślę, że obrazek rozwieje wątpliwości.<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/569/dd2ccadffe597b211840d7a98af4c7b1.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/569/dd2ccadffe597b211840d7a98af4c7b1.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=569">ElektronikKr</a> — 12 mar 2014, o 20:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xbary]]></name></author>
<updated>2014-03-12T01:59:16+01:00</updated>
<published>2014-03-12T01:59:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6323&amp;p=73949#p73949</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6323&amp;p=73949#p73949"/>
<title type="html"><![CDATA[Re: HY-Mini STM32V- kłopot z device ID z TFT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6323&amp;p=73949#p73949"><![CDATA[
Proponuje Ci żebyś połączył to jeszcze raz , ale z pominięciem wszystkich pinów od programatora , czyli tych od JTAG i SWD (PA13, PA14, PA15, PB3, PB4 ...). Oczywiście można je włączyć w tryb IO ale to jak już naprawdę zabraknie pinów wolnych <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=447">xbary</a> — 12 mar 2014, o 01:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafael86]]></name></author>
<updated>2014-03-11T23:34:15+01:00</updated>
<published>2014-03-11T23:34:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6323&amp;p=73935#p73935</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6323&amp;p=73935#p73935"/>
<title type="html"><![CDATA[HY-Mini STM32V- kłopot z device ID z TFT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6323&amp;p=73935#p73935"><![CDATA[
Witam serdecznie<br /><br />od pewnego czasu stałem się posiadaczem zestawu HY-Mini STM32V i napotkałem na problem przy obsłudze wyświetlacza TFT. <br />Problem tyczy się ustalenia jaki kontroler wyświetlacza TFT siedzi w moim zestawie. Wraz z płytką dostałem folder, w którym przykładowy kod posiada wiele inicjalizacji dla różnych kontrolerów i wykonuje się w zależności od tego jaki device kod wysyła wyświetlacz. Magistarala danych wyświetlacza (D0...D15) jest podłączona w nieuporządkowany sposób, czyli D0 jest podpięty do PD14, D2 do E0 itd. podczas gdy wszystkie przykładowe kody działają tak, że piny danych są podpinane w uporządkowany sposób czyli D0 do PE0 , D1 do PE1 itd. <br />Myślałem, że nie będzie z tym problemu i napisałem kod badając na który pin został wysłany bit poprzez instrukcje if i przypisując go do zmiennej value, poniżej umieszczam kod:<br /><br />[syntax=c]#define D0 (1 &lt;&lt; 14)  //D<br />#define D1 (1 &lt;&lt; 15)  //D<br />#define D2 (1 &lt;&lt; 0)//D<br />#define D3 (1 &lt;&lt; 1)//D<br />#define D4 (1 &lt;&lt; 7) //E<br />#define D5 (1 &lt;&lt; 8) //E<br />#define D6 (1 &lt;&lt; 9) //E<br />#define D7 (1 &lt;&lt; 10) //E<br />#define D8 (1 &lt;&lt; 11)//E<br />#define D9 (1 &lt;&lt; 12)//E<br />#define D10 (1 &lt;&lt; 13)//E<br />#define D11 (1 &lt;&lt; 14)//E<br />#define D12 (1 &lt;&lt; 15) //E<br />#define D13 (1 &lt;&lt; 8)//D<br />#define D14 (1 &lt;&lt; 9)//D<br />#define D15 (1 &lt;&lt; 10)//D<br /><br />//linia sterująca<br />#defineCS (1 &lt;&lt; 7)//D<br />#define RS (1 &lt;&lt; 11)//D<br />#define WR (1 &lt;&lt; 5)//D<br />#define RD (1 &lt;&lt; 4)//D<br /><br /><br />unsigned short LCD_ReadData(void)<br />{<br />unsigned short value = 0;<br /><br />SET_RS;<br />SET_WR;<br />CLR_RD;<br /><br />//piny jako wejscia<br /><br />GPIO_InitTypeDef GPIO_InitStruct;<br />GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_All; <br />GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;<br />GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPD;<br />GPIO_Init(GPIOD, &amp;GPIO_InitStruct);<br />GPIO_WriteBit(GPIOD,GPIO_Pin_All, Bit_RESET); <br /><br />GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;<br />GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;          // czestotliwosc 50 Mhz<br />GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPD;// piny jako wejscia floating<br />GPIO_Init(GPIOE, &amp;GPIO_InitStruct);// przekazanie parametrów do funkcji inicjalizującej<br />GPIO_WriteBit(GPIOE ,GPIO_Pin_All, Bit_RESET);<br /><br /><br />//read data - wartosc wysłanych danych przez wyswietlacz jest zapisywana do zmiennej value<br />if (GPIOD-&gt;IDR &amp; (1&lt;&lt;14)) value|=0x0001; //sygnał z D0<br />if (GPIOD-&gt;IDR &amp; (1&lt;&lt;15))  value|=0x0002; //sygnał z D1<br />if (GPIOD-&gt;IDR &amp; (1&lt;&lt;0))  value|=0x0004; //sygnał z D2<br />if (GPIOD-&gt;IDR &amp; (1&lt;&lt;1))  value|=0x0008; //sygnał z D3<br />if (GPIOE-&gt;IDR &amp; (1&lt;&lt;7))  value|=0x0010; //sygnał z D4<br />if (GPIOE-&gt;IDR &amp; (1&lt;&lt;8))  value|=0x0020; //sygnał z D5<br />if (GPIOE-&gt;IDR &amp; (1&lt;&lt;9))  value|=0x0040; //sygnał z D6<br />if (GPIOE-&gt;IDR &amp; (1&lt;&lt;10))  value|=0x0080; //sygnał z D7<br />if (GPIOE-&gt;IDR &amp; (1&lt;&lt;11))  value|=0x0100; //sygnał z D8<br />if (GPIOE-&gt;IDR &amp; (1&lt;&lt;12))  value|=0x0200; //sygnał z D9<br />if (GPIOE-&gt;IDR &amp; (1&lt;&lt;13))  value|=0x0400; //sygnał z D10<br />if (GPIOE-&gt;IDR &amp; (1&lt;&lt;14))  value|=0x0800; //sygnał z D11<br />if (GPIOE-&gt;IDR &amp; (1&lt;&lt;15))  value|=0x1000; //sygnał z D12<br />if (GPIOD-&gt;IDR &amp; (1&lt;&lt;8))   value|=0x2000; //sygnał z D13<br />if (GPIOD-&gt;IDR &amp; (1&lt;&lt;9))  value|=0x4000; //sygnał z D14<br />if (GPIOD-&gt;IDR &amp; (1&lt;&lt;10))  value|=0x8000; //sygnał z D15<br /><br />//read data ok<br /><br />//ustawienie pinów z powrotem na wyjscia<br />GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_All; <br />GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;// piny jako wyjscia PP<br />GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;          // czestotliwosc 50 Mhz<br />GPIO_Init(GPIOD, &amp;GPIO_InitStruct);// przekazanie parametrów do funkcji inicjalizującej<br /><br />GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_All;<br />GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;// piny jako wyjscia PP<br />GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;          // czestotliwosc 50 Mhz<br />GPIO_Init(GPIOE, &amp;GPIO_InitStruct);// przekazanie parametrów do funkcji inicjalizującej<br /><br />SET_RD;<br /><br />return value; //return data<br /><br />}<br />//************************************************************************************************<br />//LCD_ReadReg - czyta wybrany rejestr danych w LCD<br />//input: LCD_Reg: adres wybranego rejestru<br />//output: none<br />//return: return register data<br />//*************************************************************************************************<br />unsigned short LCD_ReadReg(unsigned short LCD_Reg)<br />{<br />unsigned short LCD_RAM;<br />CLR_CS;<br />//selected LCD register<br />write_Cmd(LCD_Reg);<br />//write register data<br />LCD_RAM = LCD_ReadData();<br />delay_ms(10);<br />LCD_RAM = LCD_ReadData();<br /><br />SET_CS;<br /><br />//return read data<br />return LCD_RAM;<br />}[/syntax]<br /><br />Następnie wartosc wysłaną z rejestru 0x00 (przechowującą device kod) przypisałem do rejestru ODR GPIOA , aby miernikiem posprawdzać które piny ustawiły się na stan wysoki, a które są w stanie niskim aby w ten sposób odczytać ID.<br /><br />[syntax=c]unsigned short LCD_ID;<br /><br />GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_All;<br />GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;<br />GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;          <br />GPIO_Init(GPIOB, &amp;GPIO_InitStruct);<br />GPIO_WriteBit(GPIOB,GPIO_Pin_All, Bit_RESET);<br /><br /><br />LCD_ID = LCD_ReadReg(0x0000);<br /><br /><br />GPIOA-&gt;ODR |= LCD_ID;[/syntax]<br /><br />Niestety ustawiły się tylko PA13 i PA15.<br />Postanowiłem odkręcić wyświetlacz i podłączyć go osobno kabelkami w uporządkowany sposób i wykorzystać funkcję które są załączone w przykładach. Tym razem udało mi się z czytać następującą wartość:1010 0100 0000 1000 czyli w hex A408. Przypomina to device kod sterownika SPFD5408B, z tą jednak różnicą, że tam device kod jest 5408. <br />Zainicjalizowałem wyświetlacz kodem dotyczącym SPFD5408 (czyli 5408) i wszystko działa dobrze.<br />Jednak nie dają mi spokoju dwie kwestie; pierwsza to dotycząca funkcji przeze mnie napisanych, które miały z czytywać device id warunkami if, dlaczego to nie działało i z czytywane były tylko PA14 i PA15. Druga kwestia dotyczy tej różnicy między A408 a 5408, czyli tak jakby te końcowe cztery bity zostały przesunięte o jeden w prawo (1010 a powinno być 0101).<br />Bardzo był bym wdzięczny jeśli ktoś rozwieje moje wątpliwości, może ktoś się spotkał z podobnym problemem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1392">Rafael86</a> — 11 mar 2014, o 23:34</p><hr />
]]></content>
</entry>
</feed>