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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-10-01T00:51:25+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=8639&amp;mode</id>
<entry>
<author><name><![CDATA[bartiszosti]]></name></author>
<updated>2014-10-01T00:51:25+01:00</updated>
<published>2014-10-01T00:51:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8639&amp;p=97204#p97204</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8639&amp;p=97204#p97204"/>
<title type="html"><![CDATA[Re: [STM32VL][NAUKA] Problemy z magistralami SPI i I2C.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8639&amp;p=97204#p97204"><![CDATA[
Co do I2C to faktycznie brakowalo rezystorow podciagajacych. Dziekuje, za pomoc. A teraz jest moze ktos kto powie mi co zlego dzieje się z spi ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4976">bartiszosti</a> — 1 paź 2014, o 00:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2014-09-28T09:25:27+01:00</updated>
<published>2014-09-28T09:25:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8639&amp;p=96906#p96906</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8639&amp;p=96906#p96906"/>
<title type="html"><![CDATA[Re: [STM32VL][NAUKA] Problemy z magistralami SPI i I2C.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8639&amp;p=96906#p96906"><![CDATA[
<!-- m --><a class="postlink" href="http://sun.crystalcraft.com.pl/wordpress/arm/stm32/discovery/start-z-stm32-vl-discovery-7-i2c/" >http://sun.crystalcraft.com.pl/wordpres ... ery-7-i2c/</a><!-- m --><br />spróbuj tak<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 28 wrz 2014, o 09:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jado]]></name></author>
<updated>2014-09-26T21:38:08+01:00</updated>
<published>2014-09-26T21:38:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8639&amp;p=96791#p96791</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8639&amp;p=96791#p96791"/>
<title type="html"><![CDATA[Re: [STM32VL][NAUKA] Problemy z magistralami SPI i I2C.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8639&amp;p=96791#p96791"><![CDATA[
A jak z napięciami zasilającymi układy?   <br />PCF8574 -&gt;5V,  STM -&gt; 3,3V ?<br />Rezystory podciągające raczej konieczne - ja zawsze daję 3k3 do +5V - chyba dolutowanie dwóch rezystorków nie jest problemem?  <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /> <br />Oczywiście należy sprawdzić w datasheet czy akurat ten konkretny STM ma porty I2C 5V tolerant <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=852">Jado</a> — 26 wrz 2014, o 21:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mystik]]></name></author>
<updated>2014-09-26T18:50:29+01:00</updated>
<published>2014-09-26T18:50:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8639&amp;p=96767#p96767</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8639&amp;p=96767#p96767"/>
<title type="html"><![CDATA[Re: [STM32VL][NAUKA] Problemy z magistralami SPI i I2C.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8639&amp;p=96767#p96767"><![CDATA[
Normalnie powiedziałbym, ze brakuje rezystorów podciągających lub ich wartość jest za duża.<br /><br />Nie miałem ST32 w ręce, ale z tego co znalazłem w internecie, to rezystory podciągające są. (<!-- m --><a class="postlink" href="http://harinadha.wordpress.com/2012/07/24/i2c_problem-mpu6050/" >http://harinadha.wordpress.com/2012/07/ ... m-mpu6050/</a><!-- m -->)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5385">Mystik</a> — 26 wrz 2014, o 18:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bartiszosti]]></name></author>
<updated>2014-09-26T12:43:20+01:00</updated>
<published>2014-09-26T12:43:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8639&amp;p=96737#p96737</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8639&amp;p=96737#p96737"/>
<title type="html"><![CDATA[[STM32VL][NAUKA] Problemy z magistralami SPI i I2C.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8639&amp;p=96737#p96737"><![CDATA[
Witam,<br />muszę to napisać i poprosić o radę, ponieważ już wysiadają moje nerwy przy konfiguracji tych magistral.<br /><br />Odnośnie I2C:<br />Skonfigurowałem I2C1 i I2C2 tak jak jest to w książce &quot;STM32 w praktyce&quot;:<br />[syntax=c]void I2C_Conf(void){<br />GPIO_InitTypeDef GPIO_InitStructure;<br />I2C_InitTypeDef I2C_InitStructure;<br /><br />I2C_DeInit(I2C1);<br />I2C_DeInit(I2C2);<br /><br />RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);<br />RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2, ENABLE);<br />RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);<br /><br />/* Konfiguracja Pinów I2C1: SCL i SDA */<br />GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;<br />GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br />GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;<br />GPIO_Init(GPIOB, &amp;GPIO_InitStructure);<br /><br />/* Konfiguracja Pinów I2C2: SCL i SDA */<br />GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;<br />GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br />GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;<br />GPIO_Init(GPIOB, &amp;GPIO_InitStructure);<br /><br />/* Konfiguracja I2C */<br />I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;<br />I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;<br />I2C_InitStructure.I2C_OwnAddress1 = 0x03;<br />I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;<br />I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;<br />I2C_InitStructure.I2C_ClockSpeed = 50000;<br /><br />/* Potwierdzamy konfigurację przed włączeniem I2C1 */<br />I2C_Init(I2C1, &amp;I2C_InitStructure);<br /><br />/* Konfiguracja I2C */<br />I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;<br />I2C_InitStructure.I2C_OwnAddress1 = 0x05;<br /><br />/* Potwierdzamy konfigurację przed włączeniem I2C2 */<br />I2C_Init(I2C2, &amp;I2C_InitStructure);<br /><br />/* Włączenie I2C */<br />I2C_Cmd(I2C1, ENABLE);<br />I2C_Cmd(I2C2, ENABLE);<br />}[/syntax]<br />Funkcja do wysyłania wysyła dane z I2C1 do I2C2 i wygląda następująco:<br />[syntax=c]void I2C_Write(void){<br />uint8_t data;<br /><br />I2C_GenerateSTART(I2C1, ENABLE);<br />while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));<br />I2C_Send7bitAddress(I2C1, 0x05, I2C_Direction_Transmitter);<br /><br />while(!I2C_CheckEvent(I2C2, I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED));<br /><br />while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));<br /><br />I2C_SendData(I2C1, 0x0F);<br />while(!I2C_CheckEvent(I2C2, I2C_EVENT_SLAVE_BYTE_RECEIVED));<br />data = I2C_ReceiveData(I2C2);<br /><br />while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_TRANSMITTED));<br /><br />I2C_SendData(I2C1, 0xF0);<br />while(!I2C_CheckEvent(I2C2, I2C_EVENT_SLAVE_BYTE_RECEIVED));<br />data = I2C_ReceiveData(I2C2);<br /><br />while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_TRANSMITTED));<br /><br />I2C_GenerateSTOP(I2C1, ENABLE);<br />while(!I2C_CheckEvent(I2C2, I2C_EVENT_SLAVE_STOP_DETECTED));<br /><br />I2C_GetFlagStatus(I2C2, I2C_FLAG_STOPF);<br />I2C_Cmd(I2C2, ENABLE);<br />}[/syntax]<br />No i wszystko działa jak ma działać oto przebieg z analizatora stanów logicznych przedstawiający wywołanie funkcji I2C_Write() dwa razy:<br /><a href="http://forum.atnel.pl/_obrazki/o/4976/f4f7377b6aeb30a98f5afebddaa93ff0.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4976/f4f7377b6aeb30a98f5afebddaa93ff0.jpg" alt="Obrazek" /></a><br />Natomiast kiedy do linii podpinam układ PCF8574 bądź &quot;Moduł z czujnikiem temperatury TMP102 I2C&quot; i układy nie potwierdzają odbioru adresu i komunikacja zostaje przerwana. Przebieg dla komunikacji z czujnikiem temperatury wygląda wtedy tak:<br /><a href="http://forum.atnel.pl/_obrazki/o/4976/6ffa1952412af8c46fb9019880edfc80.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4976/6ffa1952412af8c46fb9019880edfc80.jpg" alt="Obrazek" /></a><br /><br />Tutaj właśnie jest mój problem do do I2C niby wszystko jest dobrze skonfigurowane, ale nie mogę się porozumieć z innymi układami.<br />Adresy się zgadzają, częstotliwość też się zgadza jednak nikt nie chce potwierdzić ... Może w podłączeniu brakuje jakiś rezystorów podciagających, ponieważ podpinam to do STM32VL &quot;na krótko&quot; ale na przykładach zastosowań też jest to tak podłączone.<br />Więc moje pytanie jest co takiego jest w tym, źle, że to nie działa ?<br /><br />Odnośnie SPI:<br />Bazując na konfiguracji I2C i książce &quot;STM32 w praktyce&quot; funkcja inicjalizująca moje SPI prezentuje się tak:<br />[syntax=c]void SPI_Conf() {<br />GPIO_InitTypeDef GPIO_InitStructure;<br />SPI_InitTypeDef SPI_InitStruct;<br /><br />RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);<br />RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);<br /><br />GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;<br />GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br />GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;<br />GPIO_Init(GPIOA, &amp;GPIO_InitStructure);<br /><br />GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;<br />GPIO_Init(GPIOB, &amp;GPIO_InitStructure);<br /><br />SPI_I2S_DeInit(SPI1);<br />SPI_I2S_DeInit(SPI2);<br /><br />RCC_APB1PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);<br />RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);<br /><br />SPI_Cmd(SPI1, DISABLE);<br />SPI_Cmd(SPI2, DISABLE);<br /><br />SPI_InitStruct.SPI_Direction = SPI_Direction_2Lines_FullDuplex;<br />SPI_InitStruct.SPI_Mode = SPI_Mode_Master;<br />SPI_InitStruct.SPI_DataSize = SPI_DataSize_8b;<br />SPI_InitStruct.SPI_CPOL = SPI_CPOL_Low;<br />SPI_InitStruct.SPI_CPHA = SPI_CPHA_2Edge;<br />SPI_InitStruct.SPI_NSS = SPI_NSS_Soft;<br />SPI_InitStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128;<br />SPI_InitStruct.SPI_FirstBit = SPI_FirstBit_LSB;<br />SPI_InitStruct.SPI_CRCPolynomial =7;<br />SPI_Init(SPI1, &amp;SPI_InitStruct);<br /><br />SPI_InitStruct.SPI_Mode = SPI_Mode_Slave;<br />SPI_Init(SPI2, &amp;SPI_InitStruct);<br /><br />SPI_Cmd(SPI1, ENABLE);<br />SPI_Cmd(SPI2, ENABLE);<br />}[/syntax]<br />SPI1 to master, a SPI2 to slave. Funkcja wysyłającą dane jest również zaczerpnięta z tej ksiązki i wygląda tak:<br />[syntax=c]void SPI_Write(void){<br />uint8_t data1, data2;<br />while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE)==RESET);<br />SPI_I2S_SendData(SPI2, 0xF0);<br />SPI_I2S_SendData(SPI2, 0x0F);<br />while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE)==RESET);<br />data2 = SPI_I2S_ReceiveData(SPI2);<br />while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE)==RESET);<br />data1 = SPI_I2S_ReceiveData(SPI1);<br />}[/syntax]<br />Niestety wywołanie tej funkcji hm.. po prostu nie daje nic, zresztą proszę zobaczyć na przebieg:<br /><a href="http://forum.atnel.pl/_obrazki/o/4976/cf38b641e4dd0113077dd80ff0b222c7.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4976/cf38b641e4dd0113077dd80ff0b222c7.jpg" alt="Obrazek" /></a><br />Każda modyfikacja funkcji wysłania nie daje skutku i nie mam pojęcia dlaczego.<br /><br />Może macie jakieś rady albo pomysły ? Niestety ja już się mecze z tydzień i próbuję różnych sposobów i bibliotek jednak to nie daje skutku <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> Z góry dziekuję za pomoc <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=4976">bartiszosti</a> — 26 wrz 2014, o 12:43</p><hr />
]]></content>
</entry>
</feed>