STM32 с нуля. Интерфейс SPI. | MicroTechnics.htm 114 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214
  1. <!DOCTYPE html>
  2. <!--[if IE 6]>
  3. <html id="ie6" dir="ltr" lang="ru-RU">
  4. <![endif]-->
  5. <!--[if IE 7]>
  6. <html id="ie7" dir="ltr" lang="ru-RU">
  7. <![endif]-->
  8. <!--[if IE 8]>
  9. <html id="ie8" dir="ltr" lang="ru-RU">
  10. <![endif]-->
  11. <!--[if !(IE 6) | !(IE 7) | !(IE 8) ]><!-->
  12. <html dir="ltr" lang="ru-RU"><!--<![endif]--><head>
  13. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  14. <meta charset="UTF-8">
  15. <meta name="viewport" content="width=device-width">
  16. <meta name="cypr-verification" content="028f9168cad39ba92620c2e9f042c19e">
  17. <!-- mgMt7vKM1ZqAxsK5mYmEwULVc9g -->
  18. <title>STM32 с нуля. Интерфейс SPI. | MicroTechnics</title>
  19. <link rel="shortcut icon" type="image/ico" href="http://microtechnics.ru/wp-content/themes/favicon.ico">
  20. <link rel="profile" href="http://gmpg.org/xfn/11">
  21. <link rel="stylesheet" type="text/css" media="all" href="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/style.css">
  22. <link rel="pingback" href="http://microtechnics.ru/xmlrpc.php">
  23. <!--[if lt IE 9]>
  24. <script src="http://microtechnics.ru/wp-content/themes/twentyeleven/js/html5.js" type="text/javascript"></script>
  25. <![endif]-->
  26. <link rel="alternate" type="application/rss+xml" title="MicroTechnics » Лента" href="http://microtechnics.ru/feed/">
  27. <link rel="alternate" type="application/rss+xml" title="MicroTechnics » Лента комментариев" href="http://microtechnics.ru/comments/feed/">
  28. <link rel="alternate" type="application/rss+xml" title="MicroTechnics » Лента комментариев к «STM32 с нуля. Интерфейс SPI.»" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/feed/">
  29. <link rel="stylesheet" id="wp-quicklatex-format-css" href="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/quicklatex-format.css" type="text/css" media="all">
  30. <link rel="stylesheet" id="wp-syntax-css-css" href="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/wp-syntax.css" type="text/css" media="all">
  31. <link rel="stylesheet" id="wp-pagenavi-css" href="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/pagenavi-css.css" type="text/css" media="all">
  32. <script src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/analytics.js" async=""></script><script src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/watch.js" async="" type="text/javascript"></script><script type="text/javascript" src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/comment-reply.js"></script>
  33. <script type="text/javascript" src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/jquery.js"></script>
  34. <script type="text/javascript" src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/wp-quicklatex-frontend.js"></script>
  35. <link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://microtechnics.ru/xmlrpc.php?rsd">
  36. <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://microtechnics.ru/wp-includes/wlwmanifest.xml">
  37. <link rel="prev" title="Основы электроники. Индуктивность и трансформатор." href="http://microtechnics.ru/osnovy-elektroniki-induktivnost-i-transformator/">
  38. <link rel="next" title="Приложения QT. Создание меню верхнего уровня." href="http://microtechnics.ru/prilozheniya-qt-sozdanie-menyu-verxnego-urovnya/">
  39. <meta name="generator" content="WordPress 3.4.2">
  40. <link rel="shortlink" href="http://microtechnics.ru/?p=786">
  41. <!-- All in One SEO Pack 1.6.15.2 by Michael Torbert of Semper Fi Web Design[-1,-1] -->
  42. <meta name="description" content="Описание интерфейса SPI в микроконтроллерах STM32, примеры программ для master и slave.">
  43. <meta name="keywords" content="stm32 spi, spi slave, spi master, интерфейс spi,stm32 с нуля">
  44. <link rel="canonical" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/">
  45. <!-- /all in one seo pack -->
  46. <style type="text/css">.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style>
  47. <style type="text/css">
  48. #site-title,
  49. #site-description {
  50. position: absolute !important;
  51. clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
  52. clip: rect(1px, 1px, 1px, 1px);
  53. }
  54. </style>
  55. <style type="text/css" id="custom-background-css">
  56. body.custom-background { background-color: #ffffff; background-image: url('http://microtechnics.ru/wp-content/uploads/2012/12/Font3.jpg'); background-repeat: repeat; background-position: top center; background-attachment: scroll; }
  57. </style>
  58. <link type="text/css" rel="stylesheet" href="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/shCore.css">
  59. <link type="text/css" rel="stylesheet" href="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/shThemeDefault.css">
  60. <link rel="stylesheet" type="text/css" href="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/pluso.css"><script src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/pluso.js" charset="UTF-8"></script></head>
  61. <body class="single single-post postid-786 single-format-standard custom-background single-author singular two-column right-sidebar">
  62. <div id="page" class="hfeed">
  63. <header id="branding" role="banner">
  64. <hgroup>
  65. <div id="site-title"><span><a href="http://microtechnics.ru/" title="MicroTechnics" rel="home">MicroTechnics</a></span></div>
  66. <div id="site-description">Микроконтроллеры, электроника и программирование</div>
  67. </hgroup>
  68. <a href="http://microtechnics.ru/">
  69. <img src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/cropped-Header2.jpg" alt="" height="288" width="1000">
  70. </a>
  71. <div class="only-search with-image">
  72. <form method="get" id="searchform" action="http://microtechnics.ru/">
  73. <label for="s" class="assistive-text">Поиск</label>
  74. <input class="field" name="s" id="s" placeholder="Поиск" type="text">
  75. <input class="submit" name="submit" id="searchsubmit" value="Поиск" type="submit">
  76. </form>
  77. </div>
  78. <nav id="access" role="navigation">
  79. <h3 class="assistive-text">Главное меню</h3>
  80. <div class="skip-link"><a class="assistive-text" href="#content" title="Перейти к основному содержимому">Перейти к основному содержимому</a></div>
  81. <div class="skip-link"><a class="assistive-text" href="#secondary" title="Перейти к дополнительному содержимому">Перейти к дополнительному содержимому</a></div>
  82. <div class="menu-osnovnoe-menyu-container"><ul id="menu-osnovnoe-menyu" class="menu"><li id="menu-item-2074" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-2074"><a href="http://microtechnics.ru/">Главная</a></li>
  83. <li id="menu-item-2077" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2077"><a title="Разработка электроники на заказ " href="http://microtechnics.ru/razrabotka-elektroniki/">Разработка электроники на заказ</a></li>
  84. <li id="menu-item-74" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-74"><a href="http://microtechnics.ru/kontakty/">Контакты</a></li>
  85. <li id="menu-item-73" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-73"><a href="http://microtechnics.ru/o-sajte/">О сайте</a></li>
  86. </ul></div> </nav><!-- #access -->
  87. </header><!-- #branding -->
  88. <div id="main">
  89. <div id="primary">
  90. <div id="content" role="main">
  91. <div id="breadcrumbs">
  92. <a href="http://microtechnics.ru/">Главная</a> »
  93. <a href="http://microtechnics.ru/category/mikrokontrollery/" title="Просмотреть все записи в рубрике «Микроконтроллеры»">Микроконтроллеры</a> » <a href="http://microtechnics.ru/category/mikrokontrollery/stm32-s-nulya/" title="Просмотреть все записи в рубрике «STM32 с нуля»">STM32 с нуля</a> » STM32 с нуля. Интерфейс SPI.
  94. </div>
  95. <nav id="nav-single">
  96. <h3 class="assistive-text">Навигация по записям</h3>
  97. <span class="nav-previous"><a href="http://microtechnics.ru/osnovy-elektroniki-induktivnost-i-transformator/" rel="prev"><span class="meta-nav">←</span> Предыдущая</a></span>
  98. <span class="nav-next"><a href="http://microtechnics.ru/prilozheniya-qt-sozdanie-menyu-verxnego-urovnya/" rel="next">Следующая <span class="meta-nav">→</span></a></span>
  99. </nav><!-- #nav-single -->
  100. <article id="post-786" class="post-786 post type-post status-publish format-standard hentry category-stm32-s-nulya">
  101. <header class="entry-header">
  102. <h1 class="entry-title">STM32 с нуля. Интерфейс SPI.</h1>
  103. <div class="entry-meta">
  104. <span class="sep">Опубликовано </span><a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/" title="23:45" rel="bookmark"><time class="entry-date" datetime="2013-02-28T23:45:15+00:00" pubdate="">28.02.2013</time></a><span class="by-author"> <span class="sep"> автором </span> <span class="author vcard"><a class="url fn n" href="http://microtechnics.ru/author/aveal/" title="Посмотреть все записи автора Aveal" rel="author">Aveal</a></span></span> </div><!-- .entry-meta -->
  105. </header><!-- .entry-header -->
  106. <div class="entry-content">
  107. <p style="text-align: justify;">Сегодня мы будем помогать двум
  108. микроконтроллерам подружиться с помощью SPI. Для начала обсудим, что же
  109. такое вообще SPI, а потом и программку набросаем <img src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/icon_wink.gif" alt=";)" class="wp-smiley">
  110. Так вот, этот интерфейс позволяет связать между собой два и более
  111. устройств. Большой плюс SPI – большое быстродействие, так что большой
  112. объем данных улетит в легкую ) Но в SPI, в отличие, например от I2C, для
  113. подключения N устройств потребуется большое количество линий (3+N), а
  114. не 2, как в I2C. Да короче, на самом деле, есть и плюсы и минусы, как и
  115. во всем, так что идем дальше.</p>
  116. <p style="text-align: justify;">Существуют несколько типов подключения к
  117. шине, но в общем-то, алгоритм работы при любом подключении практически
  118. один и тот же. Ведущий генерирует тактовый сигнал с вывода SCLK и
  119. синхронно с этим сигналом передает данные по линии MOSI. В то же время
  120. подчиненное устройство передает данные в обратном направлении по линии
  121. MISO. Получается, что все сыты и довольны ) Хотя используется также
  122. подключение, при котором подчиненный только кушает байты данных, а сам
  123. ничего не шлет. А при подключении нескольких устройств возможно два
  124. варианта – независимое и каскадное. При независимом требуется больше
  125. линий, но такое подключение используется чаще.</p>
  126. <p>Что же нам предлагает STM в плане SPI?<br>
  127. <span id="more-786"></span></p>
  128. <ul>
  129. <li style="text-align: justify;">Возможно использование контроллера, как в качестве ведущего, так и в качестве подчиненного (ну это и так понятно)</li>
  130. <li>Формат кадра – 8 или 16 бит</li>
  131. <li>Возможность работы в режиме MultiMaster</li>
  132. <li style="text-align: justify;">Наличие огромного количества разных
  133. флагов – как для индикации окончания приема и передачи, так и для
  134. отлавливания разнообразных ошибок</li>
  135. <li>Соответствующие прерывания</li>
  136. <li>Возможна работа с использованием DMA</li>
  137. <li style="text-align: justify;">Аппаратное управление пином NSS для выбора подчиненного</li>
  138. </ul>
  139. <p>В общем, все на месте )</p>
  140. <p>Список прерываний для SPI:</p>
  141. <p style="text-align: justify;"><a href="http://microtechnics.ru/wp-content/uploads/2013/02/STM32-SPI.bmp"><img class="alignnone size-full wp-image-789" title="STM32 SPI" src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/STM32-SPI.bmp" alt="Прерывания SPI"></a><br>
  142. Давайте посмотрим, как можно настроить SPI в STM32 для работы в нужном
  143. режиме. Как и раньше мы будем использовать Standard Peripheral Library.
  144. Лезем в библиотеку, находим и открываем файл <em>stm32f10x_spi.h.</em> Прямо в начале файла все, что нам понадобится:</p>
  145. <div class="wp_syntax"><table><tbody><tr><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">typedef</span> <span style="color: #993333;">struct</span>
  146. <span style="color: #009900;">{</span>
  147. <span style="color: #993333;">uint16_t</span> SPI_Direction<span style="color: #339933;">;</span>
  148. <span style="color: #993333;">uint16_t</span> SPI_Mode<span style="color: #339933;">;</span>
  149. <span style="color: #993333;">uint16_t</span> SPI_DataSize<span style="color: #339933;">;</span>
  150. <span style="color: #993333;">uint16_t</span> SPI_CPOL<span style="color: #339933;">;</span>
  151. <span style="color: #993333;">uint16_t</span> SPI_CPHA<span style="color: #339933;">;</span>
  152. <span style="color: #993333;">uint16_t</span> SPI_NSS<span style="color: #339933;">;</span>
  153. <span style="color: #993333;">uint16_t</span> SPI_BaudRatePrescaler<span style="color: #339933;">;</span>
  154. <span style="color: #993333;">uint16_t</span> SPI_FirstBit<span style="color: #339933;">;</span>
  155. <span style="color: #993333;">uint16_t</span> SPI_CRCPolynomial<span style="color: #339933;">;</span>
  156. <span style="color: #009900;">}</span>SPI_InitTypeDef<span style="color: #339933;">;</span></pre></td></tr></tbody></table></div>
  157. <p style="text-align: justify;">Назначив всем этим полям структуры <em>SPI_InitTypeDef</em>
  158. определенные значения, мы можем настроить модуль SPI STM32. Тут вроде
  159. бы все понятно, но давайте по традиции разберем для чего нужно каждое
  160. отдельное поле:</p>
  161. <p style="text-align: justify;"><strong><em>uint16_t SPI_Direction</em></strong> – направление передачи данных, возможные значения:</p>
  162. <div class="wp_syntax"><table><tbody><tr><td class="code"><pre class="c" style="font-family:monospace;">SPI_Direction_2Lines_FullDuplex
  163. SPI_Direction_2Lines_RxOnly
  164. SPI_Direction_1Line_Rx
  165. SPI_Direction_1Line_Tx</pre></td></tr></tbody></table></div>
  166. <p>Ну, тут все очевидно <img src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/icon_wink.gif" alt=";)" class="wp-smiley"> </p>
  167. <p style="text-align: justify;"><strong><em>uint16_t SPI_Mode</em></strong> — режим работы, раб или господин – то есть подчиненный или ведущий (master или slave)</p>
  168. <p style="text-align: justify;"><strong><em>uint16_t SPI_DataSize</em></strong> – DataSize и этим все сказано ) размер данных – 8 или 16 бит</p>
  169. <p style="text-align: justify;"><strong><em>uint16_t SPI_CPOL</em></strong><br>
  170. <strong> <em> uint16_t SPI_CPHA</em></strong><br>
  171. А это настройки тактового сигнала</p>
  172. <p><strong><em>uint16_t SPI_NSS</em></strong> – тут мы выбираем, как будет управляться сигнал NSS – аппаратно или программно. Соответственно возможные значения поля:</p>
  173. <div class="wp_syntax"><table><tbody><tr><td class="code"><pre class="c" style="font-family:monospace;">SPI_NSS_Soft
  174. SPI_NSS_Hard</pre></td></tr></tbody></table></div>
  175. <p><strong><em>uint16_t SPI_BaudRatePrescaler</em> </strong>– предделитель</p>
  176. <p><strong><em>uint16_t SPI_FirstBit</em> </strong>– здесь выбираем с какого бита начнется передача (младшего или старшего)</p>
  177. <p><strong><em>uint16_t SPI_CRCPolynomial</em> </strong>– контрольная сумма</p>
  178. <p style="text-align: justify;">Все возможные значения для всех полей написаны все в том же файле <em>stm32f10x_spi.h</em> чуть ниже определения структуры.</p>
  179. <p style="text-align: justify;">В другом файле из SPL — <em>stm32f10x_spi.c</em> – функции для работы с SPI, их мы рассмотрим по мере того как они нам понадобятся.</p>
  180. <p style="text-align: justify;">Итак, предлагаю написать небольшую
  181. программку для обмена данными между двумя контроллерами по SPI. Будем
  182. писать программу и для ведущего и для подчиненного.</p>
  183. <p style="text-align: justify;">Что бы такое замутить, чтобы не просто гонять бесполезные данные….</p>
  184. <p style="text-align: justify;">Хм, давайте так: одному контроллеру на
  185. вход дается аналоговое напряжение. Он запускает АЦП и в зависимости от
  186. полученного значения выдает на шину SPI значение. Значения могут быть
  187. такими:</p>
  188. <p><strong>Напряжение&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong> <strong>Отсылаемое значение</strong><br>
  189. 0 &lt; U &lt; 1В &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0х00<br>
  190. 1В &lt; U &lt; 2В &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; 0х01<br>
  191. 2В &lt; U &lt; 3В&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0х02<br>
  192. 3В &lt; U &lt; 3.3В&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0х03<br>
  193. 3.3В &lt; U&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0х04</p>
  194. <p style="text-align: justify;">Второй контроллер в зависимости от
  195. принятых данных зажигает светодиоды. Если принимает 0х01 – зажигает один
  196. диод, если принимает 0х02 – зажигает два, ну дальше вы поняли;)</p>
  197. <p style="text-align: justify;">Небольшое лирическое отступление — тут мы будем пользоваться тем, что изучали ранее — <a title="Создание проекта" href="http://microtechnics.ru/stm32-uchebnyj-kurs-keil-sozdanie-proekta/">вот тут про создание проекта</a>, <a title="Использование АЦП" href="http://microtechnics.ru/stm32-uchebnyj-kurs-adc-acp/">а здесь про использование АЦП</a></p>
  198. <p style="text-align: justify;">Задача поставлена, начинаем
  199. реализовывать. Сначала напишем программу для ведущего (SPI Master).
  200. Создаем проект, не забыв добавить файлы из SPL для работы с SPI, и пишем
  201. следующий код:</p>
  202. <div class="wp_syntax"><table><tbody><tr><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/****************************spi master.c****************************/</span>
  203. <span style="color: #339933;">#include "stm32f10x.h" </span>
  204. <span style="color: #339933;">#include "stm32f10x_rcc.h"</span>
  205. <span style="color: #339933;">#include "stm32f10x_gpio.h"</span>
  206. <span style="color: #339933;">#include "stm32f10x_spi.h"</span>
  207. <span style="color: #339933;">#include "stm32f10x_adc.h"</span>
  208. &nbsp;
  209. &nbsp;
  210. &nbsp;
  211. <span style="color: #808080; font-style: italic;">/*******************************************************************/</span>
  212. <span style="color: #666666; font-style: italic;">//Объявляем переменные</span>
  213. GPIO_InitTypeDef port<span style="color: #339933;">;</span>
  214. SPI_InitTypeDef spi<span style="color: #339933;">;</span>
  215. ADC_InitTypeDef adc<span style="color: #339933;">;</span>
  216. <span style="color: #993333;">uint8_t</span> sendData<span style="color: #339933;">;</span>
  217. <span style="color: #993333;">uint16_t</span> counter<span style="color: #339933;">;</span>
  218. <span style="color: #993333;">uint16_t</span> data<span style="color: #339933;">;</span>
  219. &nbsp;
  220. &nbsp;
  221. &nbsp;
  222. <span style="color: #808080; font-style: italic;">/*******************************************************************/</span>
  223. <span style="color: #993333;">void</span> initAll<span style="color: #009900;">(</span><span style="color: #009900;">)</span>
  224. <span style="color: #009900;">{</span>
  225. <span style="color: #666666; font-style: italic;">//Тут абсолютно вся инициализация</span>
  226. RCC_APB2PeriphClockCmd<span style="color: #009900;">(</span>RCC_APB2Periph_GPIOA<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  227. RCC_APB2PeriphClockCmd<span style="color: #009900;">(</span>RCC_APB2Periph_SPI1<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  228. RCC_APB2PeriphClockCmd<span style="color: #009900;">(</span>RCC_APB2Periph_ADC1<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  229. &nbsp;
  230. port.<span style="color: #202020;">GPIO_Mode</span> <span style="color: #339933;">=</span> GPIO_Mode_AF_PP<span style="color: #339933;">;</span>
  231. port.<span style="color: #202020;">GPIO_Pin</span> <span style="color: #339933;">=</span> GPIO_Pin_0 <span style="color: #339933;">|</span> GPIO_Pin_4 <span style="color: #339933;">|</span> GPIO_Pin_5 <span style="color: #339933;">|</span> GPIO_Pin_6 <span style="color: #339933;">|</span> GPIO_Pin_7<span style="color: #339933;">;</span>
  232. port.<span style="color: #202020;">GPIO_Speed</span> <span style="color: #339933;">=</span> GPIO_Speed_50MHz<span style="color: #339933;">;</span>
  233. GPIO_Init<span style="color: #009900;">(</span>GPIOA<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>port<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  234. &nbsp;
  235. ADC_StructInit<span style="color: #009900;">(</span><span style="color: #339933;">&amp;</span>adc<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  236. adc.<span style="color: #202020;">ADC_ContinuousConvMode</span> <span style="color: #339933;">=</span> ENABLE<span style="color: #339933;">;</span>
  237. adc.<span style="color: #202020;">ADC_ExternalTrigConv</span> <span style="color: #339933;">=</span> ADC_ExternalTrigConv_None<span style="color: #339933;">;</span>
  238. ADC_Init<span style="color: #009900;">(</span>ADC1<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>adc<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  239. &nbsp;
  240. SPI_StructInit<span style="color: #009900;">(</span><span style="color: #339933;">&amp;</span>spi<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  241. spi.<span style="color: #202020;">SPI_Direction</span> <span style="color: #339933;">=</span> SPI_Direction_2Lines_FullDuplex<span style="color: #339933;">;</span>
  242. spi.<span style="color: #202020;">SPI_Mode</span> <span style="color: #339933;">=</span> SPI_Mode_Master<span style="color: #339933;">;</span>
  243. spi.<span style="color: #202020;">SPI_DataSize</span> <span style="color: #339933;">=</span> SPI_DataSize_8b<span style="color: #339933;">;</span>
  244. spi.<span style="color: #202020;">SPI_CPOL</span> <span style="color: #339933;">=</span> SPI_CPOL_Low<span style="color: #339933;">;</span>
  245. spi.<span style="color: #202020;">SPI_CPHA</span> <span style="color: #339933;">=</span> SPI_CPHA_2Edge<span style="color: #339933;">;</span>
  246. spi.<span style="color: #202020;">SPI_NSS</span> <span style="color: #339933;">=</span> SPI_NSS_Soft<span style="color: #339933;">;</span>
  247. spi.<span style="color: #202020;">SPI_BaudRatePrescaler</span> <span style="color: #339933;">=</span> SPI_BaudRatePrescaler_4<span style="color: #339933;">;</span>
  248. spi.<span style="color: #202020;">SPI_FirstBit</span> <span style="color: #339933;">=</span> SPI_FirstBit_MSB<span style="color: #339933;">;</span>
  249. spi.<span style="color: #202020;">SPI_CRCPolynomial</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">7</span><span style="color: #339933;">;</span>
  250. SPI_Init<span style="color: #009900;">(</span>SPI1<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>spi<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  251. &nbsp;
  252. GPIO_StructInit<span style="color: #009900;">(</span><span style="color: #339933;">&amp;</span>port<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  253. port.<span style="color: #202020;">GPIO_Mode</span> <span style="color: #339933;">=</span> GPIO_Mode_IPD<span style="color: #339933;">;</span>
  254. port.<span style="color: #202020;">GPIO_Pin</span> <span style="color: #339933;">=</span> GPIO_Pin_0<span style="color: #339933;">;</span>
  255. port.<span style="color: #202020;">GPIO_Speed</span> <span style="color: #339933;">=</span> GPIO_Speed_2MHz<span style="color: #339933;">;</span>
  256. GPIO_Init<span style="color: #009900;">(</span>GPIOA<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>port<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  257. <span style="color: #009900;">}</span>
  258. &nbsp;
  259. &nbsp;
  260. &nbsp;
  261. <span style="color: #808080; font-style: italic;">/*******************************************************************/</span>
  262. <span style="color: #993333;">int</span> main<span style="color: #009900;">(</span><span style="color: #009900;">)</span>
  263. <span style="color: #009900;">{</span>
  264. __enable_irq<span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  265. initAll<span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  266. <span style="color: #666666; font-style: italic;">//Включаем АЦП</span>
  267. ADC_Cmd<span style="color: #009900;">(</span>ADC1<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  268. ADC_SoftwareStartConvCmd<span style="color: #009900;">(</span>ADC1<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  269. <span style="color: #666666; font-style: italic;">//И конечно же включаем SPI</span>
  270. SPI_Cmd<span style="color: #009900;">(</span>SPI1<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  271. <span style="color: #b1b100;">while</span><span style="color: #009900;">(</span><span style="color: #0000dd;">1</span><span style="color: #009900;">)</span>
  272. <span style="color: #009900;">{</span>
  273. <span style="color: #666666; font-style: italic;">//Это просто счетчик, чтобы отсылать на шину данные только когда счетчик </span>
  274. <span style="color: #666666; font-style: italic;">//досчитает до 15000, число взято абсолютно "от балды" ))</span>
  275. counter<span style="color: #339933;">++;</span>
  276. data <span style="color: #339933;">=</span> ADC_GetConversionValue<span style="color: #009900;">(</span>ADC1<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  277. <span style="color: #666666; font-style: italic;">//Сделали АЦП, анализируем данные</span>
  278. <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span>data <span style="color: #339933;">==</span> <span style="color: #208080;">0xFFF</span><span style="color: #009900;">)</span>
  279. <span style="color: #009900;">{</span>
  280. sendData <span style="color: #339933;">=</span> <span style="color: #208080;">0x04</span><span style="color: #339933;">;</span>
  281. <span style="color: #009900;">}</span>
  282. <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span>data <span style="color: #339933;">&gt;</span> <span style="color: #208080;">0xE8B</span><span style="color: #009900;">)</span>
  283. <span style="color: #009900;">{</span>
  284. sendData <span style="color: #339933;">=</span> <span style="color: #208080;">0x03</span><span style="color: #339933;">;</span>
  285. <span style="color: #009900;">}</span>
  286. <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span>data <span style="color: #339933;">&gt;</span> <span style="color: #208080;">0x9B2</span><span style="color: #009900;">)</span>
  287. <span style="color: #009900;">{</span>
  288. sendData <span style="color: #339933;">=</span> <span style="color: #208080;">0x02</span><span style="color: #339933;">;</span>
  289. <span style="color: #009900;">}</span>
  290. <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span>data <span style="color: #339933;">&gt;</span> <span style="color: #208080;">0x4D9</span><span style="color: #009900;">)</span>
  291. <span style="color: #009900;">{</span>
  292. sendData <span style="color: #339933;">=</span> <span style="color: #208080;">0x01</span><span style="color: #339933;">;</span>
  293. <span style="color: #009900;">}</span>
  294. <span style="color: #b1b100;">else</span>
  295. <span style="color: #009900;">{</span>
  296. sendData <span style="color: #339933;">=</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">;</span>
  297. <span style="color: #009900;">}</span>
  298. <span style="color: #b1b100;">if</span><span style="color: #009900;">(</span>counter <span style="color: #339933;">==</span> <span style="color: #0000dd;">15000</span><span style="color: #009900;">)</span>
  299. <span style="color: #009900;">{</span>
  300. <span style="color: #666666; font-style: italic;">//Отсылаем, ради этого все и затеивалось</span>
  301. SPI_I2S_SendData<span style="color: #009900;">(</span>SPI1<span style="color: #339933;">,</span> sendData<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  302. <span style="color: #009900;">}</span>
  303. <span style="color: #009900;">}</span>
  304. <span style="color: #009900;">}</span>
  305. &nbsp;
  306. &nbsp;
  307. &nbsp;
  308. <span style="color: #808080; font-style: italic;">/****************************End of file****************************/</span></pre></td></tr></tbody></table></div>
  309. <p>Master готов, пишем программу для SPI Slave.</p>
  310. <div class="wp_syntax"><table><tbody><tr><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/****************************spi slave.c****************************/</span>
  311. <span style="color: #339933;">#include "stm32f10x.h" </span>
  312. <span style="color: #339933;">#include "stm32f10x_rcc.h"</span>
  313. <span style="color: #339933;">#include "stm32f10x_gpio.h"</span>
  314. <span style="color: #339933;">#include "stm32f10x_spi.h"</span>
  315. &nbsp;
  316. &nbsp;
  317. &nbsp;
  318. <span style="color: #808080; font-style: italic;">/*******************************************************************/</span>
  319. GPIO_InitTypeDef port<span style="color: #339933;">;</span>
  320. SPI_InitTypeDef spi<span style="color: #339933;">;</span>
  321. <span style="color: #993333;">uint8_t</span> data<span style="color: #339933;">;</span>
  322. <span style="color: #993333;">uint8_t</span> needUpdate<span style="color: #339933;">;</span>
  323. &nbsp;
  324. &nbsp;
  325. &nbsp;
  326. <span style="color: #808080; font-style: italic;">/*******************************************************************/</span>
  327. <span style="color: #993333;">void</span> initAll<span style="color: #009900;">(</span><span style="color: #009900;">)</span>
  328. <span style="color: #009900;">{</span>
  329. RCC_APB2PeriphClockCmd<span style="color: #009900;">(</span>RCC_APB2Periph_GPIOB<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  330. RCC_APB1PeriphClockCmd<span style="color: #009900;">(</span>RCC_APB1Periph_SPI2<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  331. RCC_APB2PeriphClockCmd<span style="color: #009900;">(</span>RCC_APB2Periph_GPIOA<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  332. &nbsp;
  333. port.<span style="color: #202020;">GPIO_Mode</span> <span style="color: #339933;">=</span> GPIO_Mode_AF_PP<span style="color: #339933;">;</span>
  334. port.<span style="color: #202020;">GPIO_Pin</span> <span style="color: #339933;">=</span> GPIO_Pin_12 <span style="color: #339933;">|</span> GPIO_Pin_13 <span style="color: #339933;">|</span> GPIO_Pin_14 <span style="color: #339933;">|</span> GPIO_Pin_15<span style="color: #339933;">;</span>
  335. port.<span style="color: #202020;">GPIO_Speed</span> <span style="color: #339933;">=</span> GPIO_Speed_50MHz<span style="color: #339933;">;</span>
  336. GPIO_Init<span style="color: #009900;">(</span>GPIOB<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>port<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  337. &nbsp;
  338. port.<span style="color: #202020;">GPIO_Mode</span> <span style="color: #339933;">=</span> GPIO_Mode_Out_PP<span style="color: #339933;">;</span>
  339. port.<span style="color: #202020;">GPIO_Pin</span> <span style="color: #339933;">=</span> GPIO_Pin_0 <span style="color: #339933;">|</span> GPIO_Pin_1 <span style="color: #339933;">|</span> GPIO_Pin_2 <span style="color: #339933;">|</span> GPIO_Pin_3<span style="color: #339933;">;</span>
  340. port.<span style="color: #202020;">GPIO_Speed</span> <span style="color: #339933;">=</span> GPIO_Speed_50MHz<span style="color: #339933;">;</span>
  341. GPIO_Init<span style="color: #009900;">(</span>GPIOA<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>port<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  342. &nbsp;
  343. SPI_StructInit<span style="color: #009900;">(</span><span style="color: #339933;">&amp;</span>spi<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  344. spi.<span style="color: #202020;">SPI_Direction</span> <span style="color: #339933;">=</span> SPI_Direction_2Lines_FullDuplex<span style="color: #339933;">;</span>
  345. spi.<span style="color: #202020;">SPI_Mode</span> <span style="color: #339933;">=</span> SPI_Mode_Slave<span style="color: #339933;">;</span>
  346. spi.<span style="color: #202020;">SPI_DataSize</span> <span style="color: #339933;">=</span> SPI_DataSize_8b<span style="color: #339933;">;</span>
  347. spi.<span style="color: #202020;">SPI_CPOL</span> <span style="color: #339933;">=</span> SPI_CPOL_Low<span style="color: #339933;">;</span>
  348. spi.<span style="color: #202020;">SPI_CPHA</span> <span style="color: #339933;">=</span> SPI_CPHA_2Edge<span style="color: #339933;">;</span>
  349. spi.<span style="color: #202020;">SPI_NSS</span> <span style="color: #339933;">=</span> SPI_NSS_Soft<span style="color: #339933;">;</span>
  350. spi.<span style="color: #202020;">SPI_BaudRatePrescaler</span> <span style="color: #339933;">=</span> SPI_BaudRatePrescaler_4<span style="color: #339933;">;</span>
  351. spi.<span style="color: #202020;">SPI_FirstBit</span> <span style="color: #339933;">=</span> SPI_FirstBit_MSB<span style="color: #339933;">;</span>
  352. spi.<span style="color: #202020;">SPI_CRCPolynomial</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">7</span><span style="color: #339933;">;</span>
  353. SPI_Init<span style="color: #009900;">(</span>SPI2<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>spi<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  354. <span style="color: #009900;">}</span>
  355. &nbsp;
  356. &nbsp;
  357. &nbsp;
  358. <span style="color: #808080; font-style: italic;">/*******************************************************************/</span>
  359. <span style="color: #993333;">int</span> main<span style="color: #009900;">(</span><span style="color: #009900;">)</span>
  360. <span style="color: #009900;">{</span>
  361. __enable_irq<span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  362. initAll<span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  363. SPI_Cmd<span style="color: #009900;">(</span>SPI2<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  364. NVIC_EnableIRQ<span style="color: #009900;">(</span>SPI2_IRQn<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  365. <span style="color: #666666; font-style: italic;">//Тут мы разрешаем прерывание по приему</span>
  366. SPI_I2S_ITConfig<span style="color: #009900;">(</span>SPI2<span style="color: #339933;">,</span> SPI_I2S_IT_RXNE<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  367. <span style="color: #666666; font-style: italic;">//Ну вот приняли, теперь просто зажигаем диоды</span>
  368. <span style="color: #b1b100;">while</span><span style="color: #009900;">(</span><span style="color: #0000dd;">1</span><span style="color: #009900;">)</span>
  369. <span style="color: #009900;">{</span>
  370. <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span>needUpdate <span style="color: #339933;">==</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">)</span>
  371. <span style="color: #009900;">{</span>
  372. GPIO_ResetBits<span style="color: #009900;">(</span>GPIOA<span style="color: #339933;">,</span> GPIO_Pin_0 <span style="color: #339933;">|</span> GPIO_Pin_1 <span style="color: #339933;">|</span> GPIO_Pin_2 <span style="color: #339933;">|</span> GPIO_Pin_3<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  373. <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span>data <span style="color: #339933;">==</span> <span style="color: #208080;">0x01</span><span style="color: #009900;">)</span>
  374. <span style="color: #009900;">{</span>
  375. GPIO_SetBits<span style="color: #009900;">(</span>GPIOA<span style="color: #339933;">,</span> GPIO_Pin_0<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  376. <span style="color: #009900;">}</span>
  377. <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span>data <span style="color: #339933;">==</span> <span style="color: #208080;">0x02</span><span style="color: #009900;">)</span>
  378. <span style="color: #009900;">{</span>
  379. GPIO_SetBits<span style="color: #009900;">(</span>GPIOA<span style="color: #339933;">,</span> GPIO_Pin_0 <span style="color: #339933;">|</span> GPIO_Pin_1<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  380. <span style="color: #009900;">}</span>
  381. <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span>data <span style="color: #339933;">==</span> <span style="color: #208080;">0x03</span><span style="color: #009900;">)</span>
  382. <span style="color: #009900;">{</span>
  383. GPIO_SetBits<span style="color: #009900;">(</span>GPIOA<span style="color: #339933;">,</span> GPIO_Pin_0 <span style="color: #339933;">|</span> GPIO_Pin_1 <span style="color: #339933;">|</span> GPIO_Pin_2<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  384. <span style="color: #009900;">}</span>
  385. <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span>data <span style="color: #339933;">==</span> <span style="color: #208080;">0x04</span><span style="color: #009900;">)</span>
  386. <span style="color: #009900;">{</span>
  387. GPIO_SetBits<span style="color: #009900;">(</span>GPIOA<span style="color: #339933;">,</span> GPIO_Pin_0 <span style="color: #339933;">|</span> GPIO_Pin_1 <span style="color: #339933;">|</span> GPIO_Pin_2 <span style="color: #339933;">|</span> GPIO_Pin_3<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  388. <span style="color: #009900;">}</span>
  389. needUpdate <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
  390. <span style="color: #009900;">}</span>
  391. <span style="color: #009900;">}</span>
  392. <span style="color: #009900;">}</span>
  393. &nbsp;
  394. &nbsp;
  395. &nbsp;
  396. <span style="color: #808080; font-style: italic;">/*******************************************************************/</span>
  397. <span style="color: #993333;">void</span> SPI2_IRQHandler<span style="color: #009900;">(</span><span style="color: #009900;">)</span>
  398. <span style="color: #009900;">{</span>
  399. data <span style="color: #339933;">=</span> SPI_I2S_ReceiveData<span style="color: #009900;">(</span>SPI2<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
  400. needUpdate <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
  401. <span style="color: #009900;">}</span>
  402. &nbsp;
  403. &nbsp;
  404. &nbsp;
  405. <span style="color: #808080; font-style: italic;">/****************************End of file****************************/</span></pre></td></tr></tbody></table></div>
  406. <p style="text-align: justify;">Здесь вся работа с SPI в прерывании.
  407. Когда взлетает флаг, сигнализирующий о принятии байта, бежим в
  408. прерывание и читаем данные. Приняли данные – надо обновить состояние
  409. светодиодов – выставляем переменную needUpdate в единицу. В главном
  410. цикле после этого зажигаются нужные светодиоды. Вот как то так =)</p>
  411. <p style="text-align: justify;">Собственно, вроде бы вот и все, две программки написали, достаточно на сегодня <img src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/icon_wink.gif" alt=";)" class="wp-smiley">
  412. Конечно, это тестовые программы, просто для знакомства с интерфейсом,
  413. поэтому все так «в лоб» сделано =) Наверное, в ближайшее время
  414. поковыряем еще и I2C, заодно сравним интерфейс с уже известным нам
  415. интерфейсом SPI, так что до скорых встреч!</p>
  416. </div><!-- .entry-content -->
  417. <footer class="entry-meta">
  418. Запись опубликована автором <a href="http://microtechnics.ru/author/aveal/">Aveal</a> в рубрике <a href="http://microtechnics.ru/category/mikrokontrollery/stm32-s-nulya/" title="Просмотреть все записи в рубрике «STM32 с нуля»" rel="category tag">STM32 с нуля</a>. Добавьте в закладки <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/" title="Постоянная ссылка: STM32 с нуля. Интерфейс SPI." rel="bookmark">постоянную ссылку</a>.
  419. </footer><!-- .entry-meta -->
  420. </article><!-- #post-786 -->
  421. <div class="sample-posts">
  422. <h3>Похожие статьи:</h3>
  423. <ul> <li><a href="http://microtechnics.ru/stm32-i-usb-mass-storage-device/" rel="bookmark" title="STM32 и USB. Mass storage device.">STM32 и USB. Mass storage device.</a></li>
  424. <li><a href="http://microtechnics.ru/stm32-uchebnyj-kurs-usart/" rel="bookmark" title="STM32 с нуля. USART. Пример программы.">STM32 с нуля. USART. Пример программы.</a></li>
  425. <li><a href="http://microtechnics.ru/rabota-s-displeem-na-baze-hd44780/" rel="bookmark" title="Работа с дисплеем на базе HD44780">Работа с дисплеем на базе HD44780</a></li>
  426. <li><a href="http://microtechnics.ru/stm32-uchebnyj-kurs-tajmery/" rel="bookmark" title="STM32 с нуля. Таймеры.">STM32 с нуля. Таймеры.</a></li>
  427. <li><a href="http://microtechnics.ru/stm32-uchebnyj-kurs-freertos-chast-3/" rel="bookmark" title="STM32 с нуля. FreeRTOS. Кооперативная многозадачность.">STM32 с нуля. FreeRTOS. Кооперативная многозадачность.</a></li>
  428. </ul></div>
  429. <h4 style="text-align: left;"><span style="color: #CD0000; font-size: 14pt;">Понравилась статья? Поделись с друзьями!</span></h4>
  430. <div class="pluso pluso-theme-bewel"><div class="pluso-more-container"><a class="pluso-more" href=""></a><ul class="pluso-counter-container"><li></li><li class="pluso-counter"></li><li></li></ul></div><a class="pluso-vkontakte"></a><a class="pluso-facebook"></a><a class="pluso-twitter"></a><a class="pluso-google"></a><a class="pluso-moimir"></a><a class="pluso-odnoklassniki"></a><a class="pluso-livejournal"></a><a class="pluso-liveinternet"></a><a class="pluso-bookmark"></a></div>
  431. <script type="text/javascript">if(!window.pluso){pluso={version:'0.9.2',url:'http://share.pluso.ru/'};h=document.getElementsByTagName('head')[0];l=document.createElement('link');l.href=pluso.url+'pluso.css';l.type='text/css';l.rel='stylesheet';s=document.createElement('script');s.charset='UTF-8';s.src=pluso.url+'pluso.js';h.appendChild(l);h.appendChild(s)}</script>
  432. <div id="comments">
  433. <div id="comments-title">
  434. <span>STM32 с нуля. Интерфейс SPI.</span>: 20 комментариев </div>
  435. <ol class="commentlist">
  436. <li class="comment even thread-even depth-1" id="li-comment-336">
  437. <article id="comment-336" class="comment">
  438. <footer class="comment-meta">
  439. <div class="comment-author vcard">
  440. <img title="[1.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9gMFRANL5LXnioAAAJWSURBVDjLnZI/ixtXFMV/972ZNzPSrmTtalexlsWBGMfEYOzaVciXyKdIkW/hFKnS22WafIDUxk0g2AQSgm0csIPWK42ktaSRNPP+pRBK5SLOqS7cew7ccw4xxrPJ+8XdHx4+7AE8e3Cj++zLm71fvrqT8x+QAK35dJr2n/x89urTa+eDm/cS+eI2y3eT+Lx/bt8u1vNqfDH++teXdk/6ThAfUUBIgL9ku75z/8WL7LOlhXIGJ0Pyw75wMcnGv//xSQ2DH4ddu9k01dXWsWzcofhYaiiViLjiWi9UWQa1gzcjWF7hgfzzW5ydnXB62JLjg0PTLfJertNepnQSIA+gE4Cs03UuNYYQYP4e5jPogmSG9vA6rrjC+0AxN2i5Qk0DpXVJhCQB0EVRrzqdFgB1DZfvCDHixiV2NqO6LHHKIKnQMoaWbFBgIrQVgIXaDc+JCHgP5QRZr4jzGWFbo6yncRYviiiQKUhBRch3Lyix4bgPWsAkcDkmZAV2OiE0DaI1WoEShRKF3sWnmt01pFBnJydEpZDEwHSGt47lYsls43AIXjTWV9R1Qx0DGahqLyAhbqrj0/ib0nRzXNoyCo0Kkor2llV0eKOwdUMg4pSQA7JPQXvnJv1B+GlwOvrGlaXB6fV2lb5t6qOtike56DSJgYDGBQcOAsQAfueBMeHR48fhadb1j/58HWARdt6yBv7+/vpBe2o5OogxlcaKdt5aKCNsk309W0WxKQjmQ33/9mJVAdWHdmo/tNvtRZIkfCz+ZQwGg6rT6Zj/LTAajTbD4bD5WIF/AAseEisPFO8uAAAAAElFTkSuQmCC&quot;);" alt="" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="avatar avatar-68 photo" height="68" width="68"><span class="fn"><noindex><a target="_blank" rel="nofollow" href="http://microtechnics.ru/goto/http://silent-violet.ru" class="url">фиалка молчаливая</a></noindex></span> <span class="says">говорит</span> <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#comment-336"><time pubdate="" datetime="2013-03-01T08:25:54+00:00">01.03.2013 в 08:25</time></a>:
  441. </div><!-- .comment-author .vcard -->
  442. </footer>
  443. <div class="comment-content"><p>я честно пыталась прочитать и понять,
  444. но увы. Комментировать женщинам тут нечего. Тогда просто поздравляю вас
  445. с первым днем весны!!!!</p>
  446. </div>
  447. <div class="reply">
  448. <a class="comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?replytocom=336#respond" onclick='return addComment.moveForm("comment-336", "336", "respond", "786")'>Ответить <span>↓</span></a> </div><!-- .reply -->
  449. </article><!-- #comment-## -->
  450. <ul class="children">
  451. <li class="comment byuser comment-author-aveal bypostauthor odd alt depth-2" id="li-comment-343">
  452. <article id="comment-343" class="comment">
  453. <footer class="comment-meta">
  454. <div class="comment-author vcard">
  455. <img alt="Aveal" src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/Aveal_avatar-39x39.jpg" class="avatar avatar-39 photo" height="39" width="39"><span class="fn"><a href="http://microtechnics.ru/" rel="external nofollow" class="url">Aveal</a></span> <span class="says">говорит</span> <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#comment-343"><time pubdate="" datetime="2013-03-01T20:10:26+00:00">01.03.2013 в 20:10</time></a>:
  456. </div><!-- .comment-author .vcard -->
  457. </footer>
  458. <div class="comment-content"><p>Благодарю) И Вас тоже с первым днем!)</p>
  459. </div>
  460. <div class="reply">
  461. <a class="comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?replytocom=343#respond" onclick='return addComment.moveForm("comment-343", "343", "respond", "786")'>Ответить <span>↓</span></a> </div><!-- .reply -->
  462. </article><!-- #comment-## -->
  463. </li>
  464. </ul>
  465. </li>
  466. <li class="comment even thread-odd thread-alt depth-1" id="li-comment-353">
  467. <article id="comment-353" class="comment">
  468. <footer class="comment-meta">
  469. <div class="comment-author vcard">
  470. <img title="[0.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9gMFRANL5LXnioAAAJWSURBVDjLnZI/ixtXFMV/972ZNzPSrmTtalexlsWBGMfEYOzaVciXyKdIkW/hFKnS22WafIDUxk0g2AQSgm0csIPWK42ktaSRNPP+pRBK5SLOqS7cew7ccw4xxrPJ+8XdHx4+7AE8e3Cj++zLm71fvrqT8x+QAK35dJr2n/x89urTa+eDm/cS+eI2y3eT+Lx/bt8u1vNqfDH++teXdk/6ThAfUUBIgL9ku75z/8WL7LOlhXIGJ0Pyw75wMcnGv//xSQ2DH4ddu9k01dXWsWzcofhYaiiViLjiWi9UWQa1gzcjWF7hgfzzW5ydnXB62JLjg0PTLfJertNepnQSIA+gE4Cs03UuNYYQYP4e5jPogmSG9vA6rrjC+0AxN2i5Qk0DpXVJhCQB0EVRrzqdFgB1DZfvCDHixiV2NqO6LHHKIKnQMoaWbFBgIrQVgIXaDc+JCHgP5QRZr4jzGWFbo6yncRYviiiQKUhBRch3Lyix4bgPWsAkcDkmZAV2OiE0DaI1WoEShRKF3sWnmt01pFBnJydEpZDEwHSGt47lYsls43AIXjTWV9R1Qx0DGahqLyAhbqrj0/ib0nRzXNoyCo0Kkor2llV0eKOwdUMg4pSQA7JPQXvnJv1B+GlwOvrGlaXB6fV2lb5t6qOtike56DSJgYDGBQcOAsQAfueBMeHR48fhadb1j/58HWARdt6yBv7+/vpBe2o5OogxlcaKdt5aKCNsk309W0WxKQjmQ33/9mJVAdWHdmo/tNvtRZIkfCz+ZQwGg6rT6Zj/LTAajTbD4bD5WIF/AAseEisPFO8uAAAAAElFTkSuQmCC&quot;);" alt="" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="avatar avatar-68 photo" height="68" width="68"><span class="fn">Денис</span> <span class="says">говорит</span> <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#comment-353"><time pubdate="" datetime="2013-03-03T11:26:48+00:00">03.03.2013 в 11:26</time></a>:
  471. </div><!-- .comment-author .vcard -->
  472. </footer>
  473. <div class="comment-content"><p>Надо будет попробовать, было бы не плохо ещё с КАН протоколом разобраться))</p>
  474. </div>
  475. <div class="reply">
  476. <a class="comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?replytocom=353#respond" onclick='return addComment.moveForm("comment-353", "353", "respond", "786")'>Ответить <span>↓</span></a> </div><!-- .reply -->
  477. </article><!-- #comment-## -->
  478. <ul class="children">
  479. <li class="comment byuser comment-author-aveal bypostauthor odd alt depth-2" id="li-comment-354">
  480. <article id="comment-354" class="comment">
  481. <footer class="comment-meta">
  482. <div class="comment-author vcard">
  483. <img alt="Aveal" src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/Aveal_avatar-39x39.jpg" class="avatar avatar-39 photo" height="39" width="39"><span class="fn"><a href="http://microtechnics.ru/" rel="external nofollow" class="url">Aveal</a></span> <span class="says">говорит</span> <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#comment-354"><time pubdate="" datetime="2013-03-03T11:38:20+00:00">03.03.2013 в 11:38</time></a>:
  484. </div><!-- .comment-author .vcard -->
  485. </footer>
  486. <div class="comment-content"><p>Я CAN на работе часто использую, правда не с STM32, так что можно в будущем что-нибудь попробовать )</p>
  487. </div>
  488. <div class="reply">
  489. <a class="comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?replytocom=354#respond" onclick='return addComment.moveForm("comment-354", "354", "respond", "786")'>Ответить <span>↓</span></a> </div><!-- .reply -->
  490. </article><!-- #comment-## -->
  491. </li>
  492. </ul>
  493. </li>
  494. <li class="comment even thread-even depth-1" id="li-comment-2783">
  495. <article id="comment-2783" class="comment">
  496. <footer class="comment-meta">
  497. <div class="comment-author vcard">
  498. <img title="[1.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9gMFRANL5LXnioAAAJWSURBVDjLnZI/ixtXFMV/972ZNzPSrmTtalexlsWBGMfEYOzaVciXyKdIkW/hFKnS22WafIDUxk0g2AQSgm0csIPWK42ktaSRNPP+pRBK5SLOqS7cew7ccw4xxrPJ+8XdHx4+7AE8e3Cj++zLm71fvrqT8x+QAK35dJr2n/x89urTa+eDm/cS+eI2y3eT+Lx/bt8u1vNqfDH++teXdk/6ThAfUUBIgL9ku75z/8WL7LOlhXIGJ0Pyw75wMcnGv//xSQ2DH4ddu9k01dXWsWzcofhYaiiViLjiWi9UWQa1gzcjWF7hgfzzW5ydnXB62JLjg0PTLfJertNepnQSIA+gE4Cs03UuNYYQYP4e5jPogmSG9vA6rrjC+0AxN2i5Qk0DpXVJhCQB0EVRrzqdFgB1DZfvCDHixiV2NqO6LHHKIKnQMoaWbFBgIrQVgIXaDc+JCHgP5QRZr4jzGWFbo6yncRYviiiQKUhBRch3Lyix4bgPWsAkcDkmZAV2OiE0DaI1WoEShRKF3sWnmt01pFBnJydEpZDEwHSGt47lYsls43AIXjTWV9R1Qx0DGahqLyAhbqrj0/ib0nRzXNoyCo0Kkor2llV0eKOwdUMg4pSQA7JPQXvnJv1B+GlwOvrGlaXB6fV2lb5t6qOtike56DSJgYDGBQcOAsQAfueBMeHR48fhadb1j/58HWARdt6yBv7+/vpBe2o5OogxlcaKdt5aKCNsk309W0WxKQjmQ33/9mJVAdWHdmo/tNvtRZIkfCz+ZQwGg6rT6Zj/LTAajTbD4bD5WIF/AAseEisPFO8uAAAAAElFTkSuQmCC&quot;);" alt="" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="avatar avatar-68 photo" height="68" width="68"><span class="fn">Денис</span> <span class="says">говорит</span> <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#comment-2783"><time pubdate="" datetime="2013-07-05T19:28:38+00:00">05.07.2013 в 19:28</time></a>:
  499. </div><!-- .comment-author .vcard -->
  500. </footer>
  501. <div class="comment-content"><p>Ждём I2C и примеры где это можно было бы применить )))</p>
  502. </div>
  503. <div class="reply">
  504. <a class="comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?replytocom=2783#respond" onclick='return addComment.moveForm("comment-2783", "2783", "respond", "786")'>Ответить <span>↓</span></a> </div><!-- .reply -->
  505. </article><!-- #comment-## -->
  506. <ul class="children">
  507. <li class="comment byuser comment-author-aveal bypostauthor odd alt depth-2" id="li-comment-2788">
  508. <article id="comment-2788" class="comment">
  509. <footer class="comment-meta">
  510. <div class="comment-author vcard">
  511. <img alt="Aveal" src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/Aveal_avatar-39x39.jpg" class="avatar avatar-39 photo" height="39" width="39"><span class="fn"><a href="http://microtechnics.ru/" rel="external nofollow" class="url">Aveal</a></span> <span class="says">говорит</span> <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#comment-2788"><time pubdate="" datetime="2013-07-05T21:05:53+00:00">05.07.2013 в 21:05</time></a>:
  512. </div><!-- .comment-author .vcard -->
  513. </footer>
  514. <div class="comment-content"><p>Надо бы намутить примеров, но все руки не доходят )</p>
  515. </div>
  516. <div class="reply">
  517. <a class="comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?replytocom=2788#respond" onclick='return addComment.moveForm("comment-2788", "2788", "respond", "786")'>Ответить <span>↓</span></a> </div><!-- .reply -->
  518. </article><!-- #comment-## -->
  519. </li>
  520. </ul>
  521. </li>
  522. <li class="comment even thread-odd thread-alt depth-1" id="li-comment-6172">
  523. <article id="comment-6172" class="comment">
  524. <footer class="comment-meta">
  525. <div class="comment-author vcard">
  526. <img title="[0.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9gMFRANL5LXnioAAAJWSURBVDjLnZI/ixtXFMV/972ZNzPSrmTtalexlsWBGMfEYOzaVciXyKdIkW/hFKnS22WafIDUxk0g2AQSgm0csIPWK42ktaSRNPP+pRBK5SLOqS7cew7ccw4xxrPJ+8XdHx4+7AE8e3Cj++zLm71fvrqT8x+QAK35dJr2n/x89urTa+eDm/cS+eI2y3eT+Lx/bt8u1vNqfDH++teXdk/6ThAfUUBIgL9ku75z/8WL7LOlhXIGJ0Pyw75wMcnGv//xSQ2DH4ddu9k01dXWsWzcofhYaiiViLjiWi9UWQa1gzcjWF7hgfzzW5ydnXB62JLjg0PTLfJertNepnQSIA+gE4Cs03UuNYYQYP4e5jPogmSG9vA6rrjC+0AxN2i5Qk0DpXVJhCQB0EVRrzqdFgB1DZfvCDHixiV2NqO6LHHKIKnQMoaWbFBgIrQVgIXaDc+JCHgP5QRZr4jzGWFbo6yncRYviiiQKUhBRch3Lyix4bgPWsAkcDkmZAV2OiE0DaI1WoEShRKF3sWnmt01pFBnJydEpZDEwHSGt47lYsls43AIXjTWV9R1Qx0DGahqLyAhbqrj0/ib0nRzXNoyCo0Kkor2llV0eKOwdUMg4pSQA7JPQXvnJv1B+GlwOvrGlaXB6fV2lb5t6qOtike56DSJgYDGBQcOAsQAfueBMeHR48fhadb1j/58HWARdt6yBv7+/vpBe2o5OogxlcaKdt5aKCNsk309W0WxKQjmQ33/9mJVAdWHdmo/tNvtRZIkfCz+ZQwGg6rT6Zj/LTAajTbD4bD5WIF/AAseEisPFO8uAAAAAElFTkSuQmCC&quot;);" alt="" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="avatar avatar-68 photo" height="68" width="68"><span class="fn">Kyle</span> <span class="says">говорит</span> <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#comment-6172"><time pubdate="" datetime="2013-09-22T19:59:55+00:00">22.09.2013 в 19:59</time></a>:
  527. </div><!-- .comment-author .vcard -->
  528. </footer>
  529. <div class="comment-content"><p>Спс за пост. Один вопрос: зачем у вас в слейве строчка spi.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4; Тут <noindex><a target="_blank" rel="nofollow" href="http://microtechnics.ru/goto/http://tablock.org.ua/post/99/STM32+SPI+Slave+%D0%B8+%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81+SPI+%D0%B2+Versaloon+%28USB_TO_SPI%29">http://tablock.org.ua/post/99/STM32+SPI+Slave+%D0%B8+%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81+SPI+%D0%B2+Versaloon+%28USB_TO_SPI%29</a></noindex>
  530. написано что она не нужна вообще в режиме слейва, но там автор не юзал
  531. СтруктИнит, по этому я так понял оно фейлилось на праверке параметров
  532. функции, а у вас СтруктИнит есть, а вы тоже делаете эту настройку? нужна
  533. ли она? И еще: на какой максимальной частоте вам удалось запустить
  534. передачу?</p>
  535. </div>
  536. <div class="reply">
  537. <a class="comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?replytocom=6172#respond" onclick='return addComment.moveForm("comment-6172", "6172", "respond", "786")'>Ответить <span>↓</span></a> </div><!-- .reply -->
  538. </article><!-- #comment-## -->
  539. <ul class="children">
  540. <li class="comment byuser comment-author-aveal bypostauthor odd alt depth-2" id="li-comment-6276">
  541. <article id="comment-6276" class="comment">
  542. <footer class="comment-meta">
  543. <div class="comment-author vcard">
  544. <img alt="Aveal" src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/Aveal_avatar-39x39.jpg" class="avatar avatar-39 photo" height="39" width="39"><span class="fn"><a href="http://microtechnics.ru/" rel="external nofollow" class="url">Aveal</a></span> <span class="says">говорит</span> <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#comment-6276"><time pubdate="" datetime="2013-09-24T22:29:49+00:00">24.09.2013 в 22:29</time></a>:
  545. </div><!-- .comment-author .vcard -->
  546. </footer>
  547. <div class="comment-content"><p>Можно убрать, если есть StructInit, а по скорости я даже не замерял — не было особо цели разгонять</p>
  548. </div>
  549. <div class="reply">
  550. <a class="comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?replytocom=6276#respond" onclick='return addComment.moveForm("comment-6276", "6276", "respond", "786")'>Ответить <span>↓</span></a> </div><!-- .reply -->
  551. </article><!-- #comment-## -->
  552. </li>
  553. </ul>
  554. </li>
  555. <li class="comment even thread-even depth-1" id="li-comment-7901">
  556. <article id="comment-7901" class="comment">
  557. <footer class="comment-meta">
  558. <div class="comment-author vcard">
  559. <img title="[0.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9gMFRANL5LXnioAAAJWSURBVDjLnZI/ixtXFMV/972ZNzPSrmTtalexlsWBGMfEYOzaVciXyKdIkW/hFKnS22WafIDUxk0g2AQSgm0csIPWK42ktaSRNPP+pRBK5SLOqS7cew7ccw4xxrPJ+8XdHx4+7AE8e3Cj++zLm71fvrqT8x+QAK35dJr2n/x89urTa+eDm/cS+eI2y3eT+Lx/bt8u1vNqfDH++teXdk/6ThAfUUBIgL9ku75z/8WL7LOlhXIGJ0Pyw75wMcnGv//xSQ2DH4ddu9k01dXWsWzcofhYaiiViLjiWi9UWQa1gzcjWF7hgfzzW5ydnXB62JLjg0PTLfJertNepnQSIA+gE4Cs03UuNYYQYP4e5jPogmSG9vA6rrjC+0AxN2i5Qk0DpXVJhCQB0EVRrzqdFgB1DZfvCDHixiV2NqO6LHHKIKnQMoaWbFBgIrQVgIXaDc+JCHgP5QRZr4jzGWFbo6yncRYviiiQKUhBRch3Lyix4bgPWsAkcDkmZAV2OiE0DaI1WoEShRKF3sWnmt01pFBnJydEpZDEwHSGt47lYsls43AIXjTWV9R1Qx0DGahqLyAhbqrj0/ib0nRzXNoyCo0Kkor2llV0eKOwdUMg4pSQA7JPQXvnJv1B+GlwOvrGlaXB6fV2lb5t6qOtike56DSJgYDGBQcOAsQAfueBMeHR48fhadb1j/58HWARdt6yBv7+/vpBe2o5OogxlcaKdt5aKCNsk309W0WxKQjmQ33/9mJVAdWHdmo/tNvtRZIkfCz+ZQwGg6rT6Zj/LTAajTbD4bD5WIF/AAseEisPFO8uAAAAAElFTkSuQmCC&quot;);" alt="" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="avatar avatar-68 photo" height="68" width="68"><span class="fn">Тарас</span> <span class="says">говорит</span> <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#comment-7901"><time pubdate="" datetime="2013-12-31T20:51:29+00:00">31.12.2013 в 20:51</time></a>:
  560. </div><!-- .comment-author .vcard -->
  561. </footer>
  562. <div class="comment-content"><p>Скажите а возможно ли использовать хардварный SPI при работе с форматом данных 32 бита? Пытаюсь получить данные с AD7794</p>
  563. </div>
  564. <div class="reply">
  565. <a class="comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?replytocom=7901#respond" onclick='return addComment.moveForm("comment-7901", "7901", "respond", "786")'>Ответить <span>↓</span></a> </div><!-- .reply -->
  566. </article><!-- #comment-## -->
  567. <ul class="children">
  568. <li class="comment byuser comment-author-aveal bypostauthor odd alt depth-2" id="li-comment-7916">
  569. <article id="comment-7916" class="comment">
  570. <footer class="comment-meta">
  571. <div class="comment-author vcard">
  572. <img alt="Aveal" src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/Aveal_avatar-39x39.jpg" class="avatar avatar-39 photo" height="39" width="39"><span class="fn"><a href="http://microtechnics.ru/" rel="external nofollow" class="url">Aveal</a></span> <span class="says">говорит</span> <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#comment-7916"><time pubdate="" datetime="2014-01-06T18:25:03+00:00">06.01.2014 в 18:25</time></a>:
  573. </div><!-- .comment-author .vcard -->
  574. </footer>
  575. <div class="comment-content"><p>Ну по сути отправка 32 бит это то же самое, что и отправка два раза по 16</p>
  576. </div>
  577. <div class="reply">
  578. <a class="comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?replytocom=7916#respond" onclick='return addComment.moveForm("comment-7916", "7916", "respond", "786")'>Ответить <span>↓</span></a> </div><!-- .reply -->
  579. </article><!-- #comment-## -->
  580. </li>
  581. </ul>
  582. </li>
  583. <li class="comment even thread-odd thread-alt depth-1" id="li-comment-8012">
  584. <article id="comment-8012" class="comment">
  585. <footer class="comment-meta">
  586. <div class="comment-author vcard">
  587. <img title="[0.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9gMFRANL5LXnioAAAJWSURBVDjLnZI/ixtXFMV/972ZNzPSrmTtalexlsWBGMfEYOzaVciXyKdIkW/hFKnS22WafIDUxk0g2AQSgm0csIPWK42ktaSRNPP+pRBK5SLOqS7cew7ccw4xxrPJ+8XdHx4+7AE8e3Cj++zLm71fvrqT8x+QAK35dJr2n/x89urTa+eDm/cS+eI2y3eT+Lx/bt8u1vNqfDH++teXdk/6ThAfUUBIgL9ku75z/8WL7LOlhXIGJ0Pyw75wMcnGv//xSQ2DH4ddu9k01dXWsWzcofhYaiiViLjiWi9UWQa1gzcjWF7hgfzzW5ydnXB62JLjg0PTLfJertNepnQSIA+gE4Cs03UuNYYQYP4e5jPogmSG9vA6rrjC+0AxN2i5Qk0DpXVJhCQB0EVRrzqdFgB1DZfvCDHixiV2NqO6LHHKIKnQMoaWbFBgIrQVgIXaDc+JCHgP5QRZr4jzGWFbo6yncRYviiiQKUhBRch3Lyix4bgPWsAkcDkmZAV2OiE0DaI1WoEShRKF3sWnmt01pFBnJydEpZDEwHSGt47lYsls43AIXjTWV9R1Qx0DGahqLyAhbqrj0/ib0nRzXNoyCo0Kkor2llV0eKOwdUMg4pSQA7JPQXvnJv1B+GlwOvrGlaXB6fV2lb5t6qOtike56DSJgYDGBQcOAsQAfueBMeHR48fhadb1j/58HWARdt6yBv7+/vpBe2o5OogxlcaKdt5aKCNsk309W0WxKQjmQ33/9mJVAdWHdmo/tNvtRZIkfCz+ZQwGg6rT6Zj/LTAajTbD4bD5WIF/AAseEisPFO8uAAAAAElFTkSuQmCC&quot;);" alt="" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="avatar avatar-68 photo" height="68" width="68"><span class="fn">AlexRoman</span> <span class="says">говорит</span> <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#comment-8012"><time pubdate="" datetime="2014-02-11T22:19:15+00:00">11.02.2014 в 22:19</time></a>:
  588. </div><!-- .comment-author .vcard -->
  589. </footer>
  590. <div class="comment-content"><p>Никак не могу добиться нормальной
  591. работы SPI флеш памяти (mx 25l8005). Данные успешно читаются(точность
  592. данных проверена программатором). НО никак не могу заставить ее
  593. выставить бит записи и записать что нибудь. Хотя чтение данных и ID
  594. (разные команды) она принимает и отвечает. Может кто подскажет. email <a href="mailto:alexroman5000@gmail.com">alexroman5000@gmail.com</a><br>
  595. P.S. Про ножку WriteProtect в курсе, дело видимо не в ней….</p>
  596. </div>
  597. <div class="reply">
  598. <a class="comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?replytocom=8012#respond" onclick='return addComment.moveForm("comment-8012", "8012", "respond", "786")'>Ответить <span>↓</span></a> </div><!-- .reply -->
  599. </article><!-- #comment-## -->
  600. </li>
  601. <li class="comment odd alt thread-even depth-1" id="li-comment-8358">
  602. <article id="comment-8358" class="comment">
  603. <footer class="comment-meta">
  604. <div class="comment-author vcard">
  605. <img title="[1.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9gMFRANL5LXnioAAAJWSURBVDjLnZI/ixtXFMV/972ZNzPSrmTtalexlsWBGMfEYOzaVciXyKdIkW/hFKnS22WafIDUxk0g2AQSgm0csIPWK42ktaSRNPP+pRBK5SLOqS7cew7ccw4xxrPJ+8XdHx4+7AE8e3Cj++zLm71fvrqT8x+QAK35dJr2n/x89urTa+eDm/cS+eI2y3eT+Lx/bt8u1vNqfDH++teXdk/6ThAfUUBIgL9ku75z/8WL7LOlhXIGJ0Pyw75wMcnGv//xSQ2DH4ddu9k01dXWsWzcofhYaiiViLjiWi9UWQa1gzcjWF7hgfzzW5ydnXB62JLjg0PTLfJertNepnQSIA+gE4Cs03UuNYYQYP4e5jPogmSG9vA6rrjC+0AxN2i5Qk0DpXVJhCQB0EVRrzqdFgB1DZfvCDHixiV2NqO6LHHKIKnQMoaWbFBgIrQVgIXaDc+JCHgP5QRZr4jzGWFbo6yncRYviiiQKUhBRch3Lyix4bgPWsAkcDkmZAV2OiE0DaI1WoEShRKF3sWnmt01pFBnJydEpZDEwHSGt47lYsls43AIXjTWV9R1Qx0DGahqLyAhbqrj0/ib0nRzXNoyCo0Kkor2llV0eKOwdUMg4pSQA7JPQXvnJv1B+GlwOvrGlaXB6fV2lb5t6qOtike56DSJgYDGBQcOAsQAfueBMeHR48fhadb1j/58HWARdt6yBv7+/vpBe2o5OogxlcaKdt5aKCNsk309W0WxKQjmQ33/9mJVAdWHdmo/tNvtRZIkfCz+ZQwGg6rT6Zj/LTAajTbD4bD5WIF/AAseEisPFO8uAAAAAElFTkSuQmCC&quot;);" alt="" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="avatar avatar-68 photo" height="68" width="68"><span class="fn">Альфис</span> <span class="says">говорит</span> <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#comment-8358"><time pubdate="" datetime="2014-07-16T18:58:03+00:00">16.07.2014 в 18:58</time></a>:
  606. </div><!-- .comment-author .vcard -->
  607. </footer>
  608. <div class="comment-content"><p>Хочу спросить как правильно
  609. организовать «GPIO_Mode_*» для вывода NSS в Slave устройствах? В одной
  610. статье пишут Альтернативная функция с подтягиванием к питанию
  611. «GPIO_Mode_AF_PP», в другой пишут Вход с Pull-up «GPIO_Mode_IPU»!<br>
  612. Вроде и то и это работает, но хотелось узнать поточнее?</p>
  613. </div>
  614. <div class="reply">
  615. <a class="comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?replytocom=8358#respond" onclick='return addComment.moveForm("comment-8358", "8358", "respond", "786")'>Ответить <span>↓</span></a> </div><!-- .reply -->
  616. </article><!-- #comment-## -->
  617. <ul class="children">
  618. <li class="comment byuser comment-author-aveal bypostauthor even depth-2" id="li-comment-8361">
  619. <article id="comment-8361" class="comment">
  620. <footer class="comment-meta">
  621. <div class="comment-author vcard">
  622. <img alt="Aveal" src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/Aveal_avatar-39x39.jpg" class="avatar avatar-39 photo" height="39" width="39"><span class="fn"><a href="http://microtechnics.ru/" rel="external nofollow" class="url">Aveal</a></span> <span class="says">говорит</span> <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#comment-8361"><time pubdate="" datetime="2014-07-19T10:49:00+00:00">19.07.2014 в 10:49</time></a>:
  623. </div><!-- .comment-author .vcard -->
  624. </footer>
  625. <div class="comment-content"><p>Ну если в общем, то использование в режиме альтернативной функции является более логичным</p>
  626. </div>
  627. <div class="reply">
  628. <a class="comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?replytocom=8361#respond" onclick='return addComment.moveForm("comment-8361", "8361", "respond", "786")'>Ответить <span>↓</span></a> </div><!-- .reply -->
  629. </article><!-- #comment-## -->
  630. </li>
  631. </ul>
  632. </li>
  633. <li class="comment odd alt thread-odd thread-alt depth-1" id="li-comment-8479">
  634. <article id="comment-8479" class="comment">
  635. <footer class="comment-meta">
  636. <div class="comment-author vcard">
  637. <img title="[1.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9gMFRANL5LXnioAAAJWSURBVDjLnZI/ixtXFMV/972ZNzPSrmTtalexlsWBGMfEYOzaVciXyKdIkW/hFKnS22WafIDUxk0g2AQSgm0csIPWK42ktaSRNPP+pRBK5SLOqS7cew7ccw4xxrPJ+8XdHx4+7AE8e3Cj++zLm71fvrqT8x+QAK35dJr2n/x89urTa+eDm/cS+eI2y3eT+Lx/bt8u1vNqfDH++teXdk/6ThAfUUBIgL9ku75z/8WL7LOlhXIGJ0Pyw75wMcnGv//xSQ2DH4ddu9k01dXWsWzcofhYaiiViLjiWi9UWQa1gzcjWF7hgfzzW5ydnXB62JLjg0PTLfJertNepnQSIA+gE4Cs03UuNYYQYP4e5jPogmSG9vA6rrjC+0AxN2i5Qk0DpXVJhCQB0EVRrzqdFgB1DZfvCDHixiV2NqO6LHHKIKnQMoaWbFBgIrQVgIXaDc+JCHgP5QRZr4jzGWFbo6yncRYviiiQKUhBRch3Lyix4bgPWsAkcDkmZAV2OiE0DaI1WoEShRKF3sWnmt01pFBnJydEpZDEwHSGt47lYsls43AIXjTWV9R1Qx0DGahqLyAhbqrj0/ib0nRzXNoyCo0Kkor2llV0eKOwdUMg4pSQA7JPQXvnJv1B+GlwOvrGlaXB6fV2lb5t6qOtike56DSJgYDGBQcOAsQAfueBMeHR48fhadb1j/58HWARdt6yBv7+/vpBe2o5OogxlcaKdt5aKCNsk309W0WxKQjmQ33/9mJVAdWHdmo/tNvtRZIkfCz+ZQwGg6rT6Zj/LTAajTbD4bD5WIF/AAseEisPFO8uAAAAAElFTkSuQmCC&quot;);" alt="" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="avatar avatar-68 photo" height="68" width="68"><span class="fn">Паша</span> <span class="says">говорит</span> <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#comment-8479"><time pubdate="" datetime="2014-10-03T13:29:44+00:00">03.10.2014 в 13:29</time></a>:
  638. </div><!-- .comment-author .vcard -->
  639. </footer>
  640. <div class="comment-content"><p>Мне бы тоже были интересны примеры с шинами CAN и I2C на этих микроконтроллерах</p>
  641. </div>
  642. <div class="reply">
  643. <a class="comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?replytocom=8479#respond" onclick='return addComment.moveForm("comment-8479", "8479", "respond", "786")'>Ответить <span>↓</span></a> </div><!-- .reply -->
  644. </article><!-- #comment-## -->
  645. </li>
  646. <li class="comment even thread-even depth-1" id="li-comment-8500">
  647. <article id="comment-8500" class="comment">
  648. <footer class="comment-meta">
  649. <div class="comment-author vcard">
  650. <img title="[0.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9gMFRANL5LXnioAAAJWSURBVDjLnZI/ixtXFMV/972ZNzPSrmTtalexlsWBGMfEYOzaVciXyKdIkW/hFKnS22WafIDUxk0g2AQSgm0csIPWK42ktaSRNPP+pRBK5SLOqS7cew7ccw4xxrPJ+8XdHx4+7AE8e3Cj++zLm71fvrqT8x+QAK35dJr2n/x89urTa+eDm/cS+eI2y3eT+Lx/bt8u1vNqfDH++teXdk/6ThAfUUBIgL9ku75z/8WL7LOlhXIGJ0Pyw75wMcnGv//xSQ2DH4ddu9k01dXWsWzcofhYaiiViLjiWi9UWQa1gzcjWF7hgfzzW5ydnXB62JLjg0PTLfJertNepnQSIA+gE4Cs03UuNYYQYP4e5jPogmSG9vA6rrjC+0AxN2i5Qk0DpXVJhCQB0EVRrzqdFgB1DZfvCDHixiV2NqO6LHHKIKnQMoaWbFBgIrQVgIXaDc+JCHgP5QRZr4jzGWFbo6yncRYviiiQKUhBRch3Lyix4bgPWsAkcDkmZAV2OiE0DaI1WoEShRKF3sWnmt01pFBnJydEpZDEwHSGt47lYsls43AIXjTWV9R1Qx0DGahqLyAhbqrj0/ib0nRzXNoyCo0Kkor2llV0eKOwdUMg4pSQA7JPQXvnJv1B+GlwOvrGlaXB6fV2lb5t6qOtike56DSJgYDGBQcOAsQAfueBMeHR48fhadb1j/58HWARdt6yBv7+/vpBe2o5OogxlcaKdt5aKCNsk309W0WxKQjmQ33/9mJVAdWHdmo/tNvtRZIkfCz+ZQwGg6rT6Zj/LTAajTbD4bD5WIF/AAseEisPFO8uAAAAAElFTkSuQmCC&quot;);" alt="" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="avatar avatar-68 photo" height="68" width="68"><span class="fn">Chip115</span> <span class="says">говорит</span> <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#comment-8500"><time pubdate="" datetime="2014-10-26T08:24:31+00:00">26.10.2014 в 08:24</time></a>:
  651. </div><!-- .comment-author .vcard -->
  652. </footer>
  653. <div class="comment-content"><p>Привет! Мучаюсь тут с SPI. Без
  654. отмашки мастера, слейв данные слать не будет. Это понятно. Вот в чем
  655. проблема. Мастер посылает байт слейву и ждет от слейва ответа, но если
  656. на MISO всегда находится 0×00, то мастер этот 0×00 И прочтет? По факту,
  657. слейв передачу не вел и держал линию на земле, но мастер принял это за
  658. передачу и выдал прерывание RXNE. Можно ли как-нибудь сделать так, что
  659. бы землю на линии MISO мастер не воспринемал как полезные данные?</p>
  660. </div>
  661. <div class="reply">
  662. <a class="comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?replytocom=8500#respond" onclick='return addComment.moveForm("comment-8500", "8500", "respond", "786")'>Ответить <span>↓</span></a> </div><!-- .reply -->
  663. </article><!-- #comment-## -->
  664. <ul class="children">
  665. <li class="comment byuser comment-author-aveal bypostauthor odd alt depth-2" id="li-comment-8503">
  666. <article id="comment-8503" class="comment">
  667. <footer class="comment-meta">
  668. <div class="comment-author vcard">
  669. <img alt="Aveal" src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/Aveal_avatar-39x39.jpg" class="avatar avatar-39 photo" height="39" width="39"><span class="fn"><a href="http://microtechnics.ru/" rel="external nofollow" class="url">Aveal</a></span> <span class="says">говорит</span> <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#comment-8503"><time pubdate="" datetime="2014-10-26T10:26:11+00:00">26.10.2014 в 10:26</time></a>:
  670. </div><!-- .comment-author .vcard -->
  671. </footer>
  672. <div class="comment-content"><p>Сделай программный фильтр в прерывании</p>
  673. </div>
  674. <div class="reply">
  675. <a class="comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?replytocom=8503#respond" onclick='return addComment.moveForm("comment-8503", "8503", "respond", "786")'>Ответить <span>↓</span></a> </div><!-- .reply -->
  676. </article><!-- #comment-## -->
  677. </li>
  678. </ul>
  679. </li>
  680. <li class="comment even thread-odd thread-alt depth-1" id="li-comment-8574">
  681. <article id="comment-8574" class="comment">
  682. <footer class="comment-meta">
  683. <div class="comment-author vcard">
  684. <img title="[0.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9gMFRANL5LXnioAAAJWSURBVDjLnZI/ixtXFMV/972ZNzPSrmTtalexlsWBGMfEYOzaVciXyKdIkW/hFKnS22WafIDUxk0g2AQSgm0csIPWK42ktaSRNPP+pRBK5SLOqS7cew7ccw4xxrPJ+8XdHx4+7AE8e3Cj++zLm71fvrqT8x+QAK35dJr2n/x89urTa+eDm/cS+eI2y3eT+Lx/bt8u1vNqfDH++teXdk/6ThAfUUBIgL9ku75z/8WL7LOlhXIGJ0Pyw75wMcnGv//xSQ2DH4ddu9k01dXWsWzcofhYaiiViLjiWi9UWQa1gzcjWF7hgfzzW5ydnXB62JLjg0PTLfJertNepnQSIA+gE4Cs03UuNYYQYP4e5jPogmSG9vA6rrjC+0AxN2i5Qk0DpXVJhCQB0EVRrzqdFgB1DZfvCDHixiV2NqO6LHHKIKnQMoaWbFBgIrQVgIXaDc+JCHgP5QRZr4jzGWFbo6yncRYviiiQKUhBRch3Lyix4bgPWsAkcDkmZAV2OiE0DaI1WoEShRKF3sWnmt01pFBnJydEpZDEwHSGt47lYsls43AIXjTWV9R1Qx0DGahqLyAhbqrj0/ib0nRzXNoyCo0Kkor2llV0eKOwdUMg4pSQA7JPQXvnJv1B+GlwOvrGlaXB6fV2lb5t6qOtike56DSJgYDGBQcOAsQAfueBMeHR48fhadb1j/58HWARdt6yBv7+/vpBe2o5OogxlcaKdt5aKCNsk309W0WxKQjmQ33/9mJVAdWHdmo/tNvtRZIkfCz+ZQwGg6rT6Zj/LTAajTbD4bD5WIF/AAseEisPFO8uAAAAAElFTkSuQmCC&quot;);" alt="" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="avatar avatar-68 photo" height="68" width="68"><span class="fn">Виталий</span> <span class="says">говорит</span> <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#comment-8574"><time pubdate="" datetime="2014-11-29T21:21:42+00:00">29.11.2014 в 21:21</time></a>:
  685. </div><!-- .comment-author .vcard -->
  686. </footer>
  687. <div class="comment-content"><p>написал небольшую программу для того, чтобы вникнуть в работу SPI, но, где-то что-то не доглядел.</p>
  688. <p>#include «stm32f10x.h»<br>
  689. #include «stm32f10x_rcc.h»<br>
  690. #include «stm32f10x_gpio.h»<br>
  691. #include «stm32f10x_spi.h»</p>
  692. <p> GPIO_InitTypeDef port;<br>
  693. SPI_InitTypeDef spi;<br>
  694. int value;</p>
  695. <p> void Delay(void)<br>
  696. {<br>
  697. unsigned long i;<br>
  698. for (i=0; i&lt;2000000; i++);<br>
  699. }</p>
  700. <p> void initAll()<br>
  701. {</p>
  702. <p> RCC_APB2PeriphClockCmd(RCC_APB2ENR_AFIOEN, ENABLE);<br>
  703. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);<br>
  704. RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE); </p>
  705. <p> GPIO_StructInit(&amp;port);<br>
  706. port.GPIO_Mode = GPIO_Mode_AF_PP;<br>
  707. port.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;<br>
  708. port.GPIO_Speed = GPIO_Speed_50MHz;<br>
  709. GPIO_Init(GPIOA, &amp;port);</p>
  710. <p> SPI_StructInit(&amp;spi);<br>
  711. spi.SPI_Direction=SPI_Direction_2Lines_FullDuplex;<br>
  712. spi.SPI_Mode=SPI_Mode_Master;<br>
  713. spi.SPI_DataSize=SPI_DataSize_8b;<br>
  714. spi.SPI_CPOL=SPI_CPOL_Low;<br>
  715. spi.SPI_CPHA=SPI_CPHA_2Edge;<br>
  716. spi.SPI_NSS=SPI_NSS_Hard;<br>
  717. spi.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_4;<br>
  718. spi.SPI_FirstBit=SPI_FirstBit_MSB;<br>
  719. spi.SPI_CRCPolynomial=0;<br>
  720. SPI_Init(SPI1, &amp;spi);<br>
  721. SPI_Cmd(SPI1, ENABLE);<br>
  722. } </p>
  723. <p> int main()<br>
  724. {</p>
  725. <p> initAll();</p>
  726. <p> value=0×93;</p>
  727. <p> while(1)<br>
  728. {<br>
  729. SPI_I2S_SendData(SPI1, value);</p>
  730. <p> Delay();</p>
  731. <p> }<br>
  732. }<br>
  733. Смотрел осциллографом на выводах МК никаких сигналов нет, а если взять пример отсюда: <noindex><a target="_blank" rel="nofollow" href="http://microtechnics.ru/goto/http://electronix.ru/forum/lofiversion/index.php/t98806.html">http://electronix.ru/forum/lofiversion/index.php/t98806.html</a></noindex>
  734. (пост от Jan 24 2012, 04:26), все действительно работает, может у меня
  735. есть какая-то грубая ошибка? И еще если симулировать в Keil пример
  736. работающий в железе, то почему-то на выводах контроллера при подключении
  737. логического анализатора тишина, почему так может быть?</p>
  738. </div>
  739. <div class="reply">
  740. <a class="comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?replytocom=8574#respond" onclick='return addComment.moveForm("comment-8574", "8574", "respond", "786")'>Ответить <span>↓</span></a> </div><!-- .reply -->
  741. </article><!-- #comment-## -->
  742. <ul class="children">
  743. <li class="comment byuser comment-author-aveal bypostauthor odd alt depth-2" id="li-comment-8575">
  744. <article id="comment-8575" class="comment">
  745. <footer class="comment-meta">
  746. <div class="comment-author vcard">
  747. <img alt="Aveal" src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/Aveal_avatar-39x39.jpg" class="avatar avatar-39 photo" height="39" width="39"><span class="fn"><a href="http://microtechnics.ru/" rel="external nofollow" class="url">Aveal</a></span> <span class="says">говорит</span> <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#comment-8575"><time pubdate="" datetime="2014-11-30T14:29:22+00:00">30.11.2014 в 14:29</time></a>:
  748. </div><!-- .comment-author .vcard -->
  749. </footer>
  750. <div class="comment-content"><p>По коду все вроде нормально. А по
  751. поводу симулятора в Keil’е, он не особо хорошо в принципе работает,
  752. лучше в железе отлаживать, а на симулятор не обращать внимания.</p>
  753. </div>
  754. <div class="reply">
  755. <a class="comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?replytocom=8575#respond" onclick='return addComment.moveForm("comment-8575", "8575", "respond", "786")'>Ответить <span>↓</span></a> </div><!-- .reply -->
  756. </article><!-- #comment-## -->
  757. </li>
  758. </ul>
  759. </li>
  760. <li class="comment even thread-even depth-1" id="li-comment-8727">
  761. <article id="comment-8727" class="comment">
  762. <footer class="comment-meta">
  763. <div class="comment-author vcard">
  764. <img title="[0.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9gMFRANL5LXnioAAAJWSURBVDjLnZI/ixtXFMV/972ZNzPSrmTtalexlsWBGMfEYOzaVciXyKdIkW/hFKnS22WafIDUxk0g2AQSgm0csIPWK42ktaSRNPP+pRBK5SLOqS7cew7ccw4xxrPJ+8XdHx4+7AE8e3Cj++zLm71fvrqT8x+QAK35dJr2n/x89urTa+eDm/cS+eI2y3eT+Lx/bt8u1vNqfDH++teXdk/6ThAfUUBIgL9ku75z/8WL7LOlhXIGJ0Pyw75wMcnGv//xSQ2DH4ddu9k01dXWsWzcofhYaiiViLjiWi9UWQa1gzcjWF7hgfzzW5ydnXB62JLjg0PTLfJertNepnQSIA+gE4Cs03UuNYYQYP4e5jPogmSG9vA6rrjC+0AxN2i5Qk0DpXVJhCQB0EVRrzqdFgB1DZfvCDHixiV2NqO6LHHKIKnQMoaWbFBgIrQVgIXaDc+JCHgP5QRZr4jzGWFbo6yncRYviiiQKUhBRch3Lyix4bgPWsAkcDkmZAV2OiE0DaI1WoEShRKF3sWnmt01pFBnJydEpZDEwHSGt47lYsls43AIXjTWV9R1Qx0DGahqLyAhbqrj0/ib0nRzXNoyCo0Kkor2llV0eKOwdUMg4pSQA7JPQXvnJv1B+GlwOvrGlaXB6fV2lb5t6qOtike56DSJgYDGBQcOAsQAfueBMeHR48fhadb1j/58HWARdt6yBv7+/vpBe2o5OogxlcaKdt5aKCNsk309W0WxKQjmQ33/9mJVAdWHdmo/tNvtRZIkfCz+ZQwGg6rT6Zj/LTAajTbD4bD5WIF/AAseEisPFO8uAAAAAElFTkSuQmCC&quot;);" alt="" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="avatar avatar-68 photo" height="68" width="68"><span class="fn">Роман</span> <span class="says">говорит</span> <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#comment-8727"><time pubdate="" datetime="2015-03-14T14:43:00+00:00">14.03.2015 в 14:43</time></a>:
  765. </div><!-- .comment-author .vcard -->
  766. </footer>
  767. <div class="comment-content"><p>В STM32l-Discovery инициализацию SPI2
  768. провожу так же, как Виталий и, собственно, автор поста. На осцилле не
  769. было передачи до тех пор, пока не добавил такой вот отрывок кода,
  770. который высмотрел на просторах:</p>
  771. <p>GPIO_PinAFConfig(GPIOB, GPIO_PinSource12, GPIO_AF_SPI2);<br>
  772. GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI2);<br>
  773. GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_SPI2);</p>
  774. </div>
  775. <div class="reply">
  776. <a class="comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?replytocom=8727#respond" onclick='return addComment.moveForm("comment-8727", "8727", "respond", "786")'>Ответить <span>↓</span></a> </div><!-- .reply -->
  777. </article><!-- #comment-## -->
  778. <ul class="children">
  779. <li class="comment byuser comment-author-aveal bypostauthor odd alt depth-2" id="li-comment-8728">
  780. <article id="comment-8728" class="comment">
  781. <footer class="comment-meta">
  782. <div class="comment-author vcard">
  783. <img alt="Aveal" src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/Aveal_avatar-39x39.jpg" class="avatar avatar-39 photo" height="39" width="39"><span class="fn"><a href="http://microtechnics.ru/" rel="external nofollow" class="url">Aveal</a></span> <span class="says">говорит</span> <a href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#comment-8728"><time pubdate="" datetime="2015-03-14T14:49:36+00:00">14.03.2015 в 14:49</time></a>:
  784. </div><!-- .comment-author .vcard -->
  785. </footer>
  786. <div class="comment-content"><p>Я вообще с серией STM32L не работал,
  787. но если в общем, то эти функции просто не нужны при работе с STM32F10x
  788. (как в статье). А если использовать STM32F3 или STM32F4, то там уже эти
  789. функции нужно вызывать. Видимо для L1 аналогичная ситуация)</p>
  790. </div>
  791. <div class="reply">
  792. <a class="comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?replytocom=8728#respond" onclick='return addComment.moveForm("comment-8728", "8728", "respond", "786")'>Ответить <span>↓</span></a> </div><!-- .reply -->
  793. </article><!-- #comment-## -->
  794. </li>
  795. </ul>
  796. </li>
  797. </ol>
  798. <div style="display:none;">
  799. <br>
  800. <br>
  801. <br>
  802. <form action="http://microtechnics.ru/wp-comments-post.php" method="post" id="commentform1" style="display:none;">
  803. <p><input name="author" id="author" size="22" aria-required="true" type="text">
  804. <label for="author"><small>Name (required)</small></label></p>
  805. <p><input name="email" id="email" size="22" aria-required="true" type="text">
  806. <label for="email"><small>Mail (will not be published) (required)</small></label></p>
  807. <p><input name="url" id="url" size="22" type="text">
  808. <label for="url"><small>Website</small></label></p>
  809. <p><textarea name="comment" id="comment" cols="58" rows="10"></textarea></p>
  810. <p><input name="submit" id="submit" value="Submit Comment" type="submit">
  811. <input name="comment_post_ID" value="786" id="comment_post_ID" type="hidden">
  812. <input name="comment_parent" id="comment_parent" value="0" type="hidden">
  813. </p>
  814. <p style="display: none;"><input id="akismet_comment_nonce" name="akismet_comment_nonce" value="9bb801936b" type="hidden"></p>
  815. </form>
  816. </div>
  817. <div id="respond">
  818. <h3 id="reply-title">Добавить комментарий <small><a rel="nofollow" id="cancel-comment-reply-link" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/#respond" style="display:none;">Отменить ответ</a></small></h3>
  819. <form action="http://microtechnics.ru/wp-comments-post.php" method="post" id="commentform">
  820. <p class="comment-notes">Ваш e-mail не будет опубликован. Обязательные поля помечены <span class="required">*</span></p> <p class="comment-form-author"><label for="author">Имя</label> <span class="required">*</span><input id="author" name="author" size="30" aria-required="true" type="text"></p>
  821. <p class="comment-form-email"><label for="email">E-mail</label> <span class="required">*</span><input id="email" name="email" size="30" aria-required="true" type="text"></p>
  822. <p class="comment-form-url"><label for="url">Сайт</label><input id="url" name="url" size="30" type="text"></p>
  823. <p class="comment-form-comment"><label for="comment">Комментарий</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p> <p class="form-allowed-tags">Можно использовать следующие <abbr title="HyperText Markup Language">HTML</abbr>-теги и атрибуты: <code>&lt;a
  824. href="" title=""&gt; &lt;abbr title=""&gt; &lt;acronym title=""&gt;
  825. &lt;b&gt; &lt;blockquote cite=""&gt; &lt;cite&gt; &lt;code&gt; &lt;del
  826. datetime=""&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=""&gt; &lt;strike&gt;
  827. &lt;strong&gt; </code></p> <p class="form-submit">
  828. <input name="submit" id="submit" value="Отправить комментарий" type="submit">
  829. <input name="comment_post_ID" value="786" id="comment_post_ID" type="hidden">
  830. <input name="comment_parent" id="comment_parent" value="0" type="hidden">
  831. </p>
  832. <p style="display: none;"><input id="akismet_comment_nonce" name="akismet_comment_nonce" value="40b15da9ee" type="hidden"></p> </form>
  833. </div><!-- #respond -->
  834. </div><!-- #comments -->
  835. </div><!-- #content -->
  836. </div><!-- #primary -->
  837. <div id="secondary" class="widget-area" role="complementary">
  838. <aside id="text-5" class="widget widget_text"> <div class="textwidget"><p align="center"><font style="color:#1E90FF;font-family:Arial;letter-spacing:-1px;font-size:11pt;"><strong>MicroTechnics в соц. сетях, присоединяйтесь!</strong></font></p>
  839. <noindex><a href="http://vk.com/microtechnics" rel="nofollow"><img src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/vkontakte.png" style="margin-left:15px"></a></noindex>
  840. <noindex><a href="https://twitter.com/MicroTechnics" rel="nofollow"><img src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/twitter.png"></a></noindex>
  841. <noindex><a href="http://feeds.feedburner.com/Microtechnics" rel="nofollow"><img src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/feed.png"></a></noindex></div>
  842. </aside><aside id="categories-2" class="widget widget_categories"><div class="widget-title">Рубрики</div> <ul>
  843. <li class="cat-item cat-item-37"><a href="http://microtechnics.ru/category/3d-pechat/" title="Просмотреть все записи в рубрике «3D-печать»">3D-печать</a>
  844. </li>
  845. <li class="cat-item cat-item-36"><a href="http://microtechnics.ru/category/mikrokontrollery/" title="Просмотреть все записи в рубрике «Микроконтроллеры»">Микроконтроллеры</a>
  846. <ul class="children">
  847. <li class="cat-item cat-item-22"><a href="http://microtechnics.ru/category/mikrokontrollery/avr/" title="Просмотреть все записи в рубрике «AVR»">AVR</a>
  848. </li>
  849. <li class="cat-item cat-item-19"><a href="http://microtechnics.ru/category/mikrokontrollery/msp430/" title="Просмотреть все записи в рубрике «MSP430»">MSP430</a>
  850. </li>
  851. <li class="cat-item cat-item-11"><a href="http://microtechnics.ru/category/mikrokontrollery/stm32-s-nulya/" title="Просмотреть все записи в рубрике «STM32 с нуля»">STM32 с нуля</a>
  852. </li>
  853. <li class="cat-item cat-item-40"><a href="http://microtechnics.ru/category/mikrokontrollery/stm32cube/" title="Просмотреть все записи в рубрике «STM32Cube»">STM32Cube</a>
  854. </li>
  855. <li class="cat-item cat-item-28"><a href="http://microtechnics.ru/category/mikrokontrollery/stm23f3/" title="Просмотреть все записи в рубрике «STM32F3»">STM32F3</a>
  856. </li>
  857. <li class="cat-item cat-item-18"><a href="http://microtechnics.ru/category/mikrokontrollery/programmirovanie-stm32f4/" title="Просмотреть все записи в рубрике «Программирование STM32F4»">Программирование STM32F4</a>
  858. </li>
  859. </ul>
  860. </li>
  861. <li class="cat-item cat-item-39"><a href="http://microtechnics.ru/category/nejronnye-seti/" title="Просмотреть все записи в рубрике «Нейронные сети»">Нейронные сети</a>
  862. </li>
  863. <li class="cat-item cat-item-17"><a href="http://microtechnics.ru/category/osnovy-elektroniki/" title="Просмотреть все записи в рубрике «Основы электроники»">Основы электроники</a>
  864. <ul class="children">
  865. <li class="cat-item cat-item-30"><a href="http://microtechnics.ru/category/osnovy-elektroniki/bipolyarnyj-tranzistor/" title="Просмотреть все записи в рубрике «Биполярный транзистор»">Биполярный транзистор</a>
  866. </li>
  867. <li class="cat-item cat-item-34"><a href="http://microtechnics.ru/category/osnovy-elektroniki/zapominayushhie-ustrojstva/" title="Просмотреть все записи в рубрике «Запоминающие устройства»">Запоминающие устройства</a>
  868. </li>
  869. <li class="cat-item cat-item-33"><a href="http://microtechnics.ru/category/osnovy-elektroniki/operacionnyj-usilitel/" title="Просмотреть все записи в рубрике «Операционный усилитель»">Операционный усилитель</a>
  870. </li>
  871. <li class="cat-item cat-item-31"><a href="http://microtechnics.ru/category/osnovy-elektroniki/polevoj-tranzistor/" title="Просмотреть все записи в рубрике «Полевой транзистор»">Полевой транзистор</a>
  872. </li>
  873. <li class="cat-item cat-item-32"><a href="http://microtechnics.ru/category/osnovy-elektroniki/prochee/" title="Просмотреть все записи в рубрике «Прочее»">Прочее</a>
  874. </li>
  875. </ul>
  876. </li>
  877. <li class="cat-item cat-item-13"><a href="http://microtechnics.ru/category/otladochnye-platy/" title="Просмотреть все записи в рубрике «Отладочные платы»">Отладочные платы</a>
  878. <ul class="children">
  879. <li class="cat-item cat-item-16"><a href="http://microtechnics.ru/category/otladochnye-platy/mini-stm32/" title="Просмотреть все записи в рубрике «Mini STM32»">Mini STM32</a>
  880. </li>
  881. <li class="cat-item cat-item-27"><a href="http://microtechnics.ru/category/otladochnye-platy/msp430-launchpad/" title="Просмотреть все записи в рубрике «MSP430 LaunchPad»">MSP430 LaunchPad</a>
  882. </li>
  883. <li class="cat-item cat-item-15"><a href="http://microtechnics.ru/category/otladochnye-platy/stm32-discovery/" title="Просмотреть все записи в рубрике «STM32 Discovery»">STM32 Discovery</a>
  884. </li>
  885. <li class="cat-item cat-item-26"><a href="http://microtechnics.ru/category/otladochnye-platy/stm32f3-discovery/" title="Просмотреть все записи в рубрике «STM32F3 Discovery»">STM32F3 Discovery</a>
  886. </li>
  887. <li class="cat-item cat-item-24"><a href="http://microtechnics.ru/category/otladochnye-platy/stm32f4-discovery/" title="Просмотреть все записи в рубрике «STM32F4 Discovery»">STM32F4 Discovery</a>
  888. </li>
  889. </ul>
  890. </li>
  891. <li class="cat-item cat-item-38"><a href="http://microtechnics.ru/category/programmirovanie/" title="Просмотреть все записи в рубрике «Программирование»">Программирование</a>
  892. <ul class="children">
  893. <li class="cat-item cat-item-35"><a href="http://microtechnics.ru/category/programmirovanie/opengl/" title="Просмотреть все записи в рубрике «OpenGL»">OpenGL</a>
  894. </li>
  895. <li class="cat-item cat-item-12"><a href="http://microtechnics.ru/category/programmirovanie/prilozheniya-qt/" title="Просмотреть все записи в рубрике «Приложения QT»">Приложения QT</a>
  896. </li>
  897. </ul>
  898. </li>
  899. <li class="cat-item cat-item-20"><a href="http://microtechnics.ru/category/razrabotka-elektroniki/" title="Просмотреть все записи в рубрике «Разработка электроники»">Разработка электроники</a>
  900. <ul class="children">
  901. <li class="cat-item cat-item-21"><a href="http://microtechnics.ru/category/razrabotka-elektroniki/altium-designer/" title="Просмотреть все записи в рубрике «Altium Designer»">Altium Designer</a>
  902. </li>
  903. <li class="cat-item cat-item-25"><a href="http://microtechnics.ru/category/razrabotka-elektroniki/poleznye-algoritmy/" title="Просмотреть все записи в рубрике «Полезные алгоритмы»">Полезные алгоритмы</a>
  904. </li>
  905. </ul>
  906. </li>
  907. </ul>
  908. </aside> <aside id="recent-posts-2" class="widget widget_recent_entries"> <div class="widget-title">Свежие записи</div> <ul>
  909. <li><a href="http://microtechnics.ru/samoorganizuyushhiesya-karty-koxonena-chast-2/" title="Самоорганизующиеся карты Кохонена. Часть 2.">Самоорганизующиеся карты Кохонена. Часть 2.</a></li>
  910. <li><a href="http://microtechnics.ru/samoorganizuyushhiesya-karty-koxonena-chast-1/" title="Самоорганизующиеся карты Кохонена. Часть 1.">Самоорганизующиеся карты Кохонена. Часть 1.</a></li>
  911. <li><a href="http://microtechnics.ru/sozdanie-gerber-fajlov-v-altium-designer/" title="Создание Gerber файлов в Altium Designer.">Создание Gerber файлов в Altium Designer.</a></li>
  912. <li><a href="http://microtechnics.ru/stm32cube-priem-i-peredacha-dannyx-po-usart/" title="STM32Cube. Прием и передача данных по USART.">STM32Cube. Прием и передача данных по USART.</a></li>
  913. <li><a href="http://microtechnics.ru/stm32-i-usb-audio-device-class/" title="STM32 и USB. Audio device class.">STM32 и USB. Audio device class.</a></li>
  914. </ul>
  915. </aside><aside id="calendar-2" class="widget widget_calendar"><div class="widget-title">&nbsp;</div><div id="calendar_wrap"><table id="wp-calendar">
  916. <caption>Июль 2015</caption>
  917. <thead>
  918. <tr>
  919. <th scope="col" title="Понедельник">Пн</th>
  920. <th scope="col" title="Вторник">Вт</th>
  921. <th scope="col" title="Среда">Ср</th>
  922. <th scope="col" title="Четверг">Чт</th>
  923. <th scope="col" title="Пятница">Пт</th>
  924. <th scope="col" title="Суббота">Сб</th>
  925. <th scope="col" title="Воскресенье">Вс</th>
  926. </tr>
  927. </thead>
  928. <tfoot>
  929. <tr>
  930. <td colspan="3" id="prev"><a href="http://microtechnics.ru/2015/04/" title="Посмотреть записи за Апрель 2015">« Апр</a></td>
  931. <td class="pad">&nbsp;</td>
  932. <td colspan="3" id="next" class="pad">&nbsp;</td>
  933. </tr>
  934. </tfoot>
  935. <tbody>
  936. <tr>
  937. <td colspan="2" class="pad">&nbsp;</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td>
  938. </tr>
  939. <tr>
  940. <td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td>11</td><td>12</td>
  941. </tr>
  942. <tr>
  943. <td>13</td><td>14</td><td>15</td><td>16</td><td>17</td><td>18</td><td>19</td>
  944. </tr>
  945. <tr>
  946. <td id="today">20</td><td>21</td><td>22</td><td>23</td><td>24</td><td>25</td><td>26</td>
  947. </tr>
  948. <tr>
  949. <td>27</td><td>28</td><td>29</td><td>30</td><td>31</td>
  950. <td class="pad" colspan="2">&nbsp;</td>
  951. </tr>
  952. </tbody>
  953. </table></div></aside><aside id="archives-2" class="widget widget_archive"><div class="widget-title">Архивы</div> <ul>
  954. <li><a href="http://microtechnics.ru/2015/04/" title="Апрель 2015">Апрель 2015</a></li>
  955. <li><a href="http://microtechnics.ru/2015/03/" title="Март 2015">Март 2015</a></li>
  956. <li><a href="http://microtechnics.ru/2015/02/" title="Февраль 2015">Февраль 2015</a></li>
  957. <li><a href="http://microtechnics.ru/2015/01/" title="Январь 2015">Январь 2015</a></li>
  958. <li><a href="http://microtechnics.ru/2014/12/" title="Декабрь 2014">Декабрь 2014</a></li>
  959. <li><a href="http://microtechnics.ru/2014/11/" title="Ноябрь 2014">Ноябрь 2014</a></li>
  960. <li><a href="http://microtechnics.ru/2014/10/" title="Октябрь 2014">Октябрь 2014</a></li>
  961. <li><a href="http://microtechnics.ru/2014/08/" title="Август 2014">Август 2014</a></li>
  962. <li><a href="http://microtechnics.ru/2014/02/" title="Февраль 2014">Февраль 2014</a></li>
  963. <li><a href="http://microtechnics.ru/2013/12/" title="Декабрь 2013">Декабрь 2013</a></li>
  964. <li><a href="http://microtechnics.ru/2013/11/" title="Ноябрь 2013">Ноябрь 2013</a></li>
  965. <li><a href="http://microtechnics.ru/2013/10/" title="Октябрь 2013">Октябрь 2013</a></li>
  966. <li><a href="http://microtechnics.ru/2013/09/" title="Сентябрь 2013">Сентябрь 2013</a></li>
  967. <li><a href="http://microtechnics.ru/2013/08/" title="Август 2013">Август 2013</a></li>
  968. <li><a href="http://microtechnics.ru/2013/07/" title="Июль 2013">Июль 2013</a></li>
  969. <li><a href="http://microtechnics.ru/2013/06/" title="Июнь 2013">Июнь 2013</a></li>
  970. <li><a href="http://microtechnics.ru/2013/05/" title="Май 2013">Май 2013</a></li>
  971. <li><a href="http://microtechnics.ru/2013/04/" title="Апрель 2013">Апрель 2013</a></li>
  972. <li><a href="http://microtechnics.ru/2013/03/" title="Март 2013">Март 2013</a></li>
  973. <li><a href="http://microtechnics.ru/2013/02/" title="Февраль 2013">Февраль 2013</a></li>
  974. <li><a href="http://microtechnics.ru/2013/01/" title="Январь 2013">Январь 2013</a></li>
  975. </ul>
  976. </aside><aside id="recent-comments-2" class="widget widget_recent_comments"><div class="widget-title">Свежие комментарии</div><ul id="recentcomments"><li class="recentcomments"><a href="http://microtechnics.ru/" rel="external nofollow" class="url">Aveal</a> к записи <a href="http://microtechnics.ru/stm32cube-sozdanie-proekta/#comment-9042">STM32Cube. Создание проекта.</a></li><li class="recentcomments">Андрей к записи <a href="http://microtechnics.ru/stm32cube-sozdanie-proekta/#comment-9041">STM32Cube. Создание проекта.</a></li><li class="recentcomments"><a href="http://microtechnics.ru/" rel="external nofollow" class="url">Aveal</a> к записи <a href="http://microtechnics.ru/stm32-ispolzovanie-i2c/#comment-9040">STM32. Использование I2C.</a></li><li class="recentcomments"><a href="http://microtechnics.ru/" rel="external nofollow" class="url">Aveal</a> к записи <a href="http://microtechnics.ru/qt-postroenie-grafika-v-realnom-vremeni/#comment-9039">Приложения QT. Построение графика в реальном времени.</a></li><li class="recentcomments"><a href="http://microtechnics.ru/" rel="external nofollow" class="url">Aveal</a> к записи <a href="http://microtechnics.ru/programmirovanie-stm32f4-sozdanie-novogo-proekta-v-keil/#comment-9038">Программирование STM32F4. Создание нового проекта в Keil.</a></li></ul></aside><aside id="meta-2" class="widget widget_meta"><div class="widget-title">Мета</div> <ul>
  977. <li><a href="http://microtechnics.ru/wp-login.php?action=register">Регистрация</a></li> <li><a href="http://microtechnics.ru/wp-login.php">Войти</a></li>
  978. <li><a href="http://microtechnics.ru/feed/" title="Подпишитесь на RSS-ленту этого сайта"><abbr title="Really Simple Syndication">RSS</abbr> записей</a></li>
  979. <li><a href="http://microtechnics.ru/comments/feed/" title="Последние комментарии ко всем записям в RSS"><abbr title="Really Simple Syndication">RSS</abbr> комментариев</a></li>
  980. </ul>
  981. </aside><aside id="text-2" class="widget widget_text"> <div class="textwidget"><!-- begin of Top100 code -->
  982. <noindex>
  983. <script id="top100Counter" type="text/javascript" src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/top100.js"></script>
  984. <noscript>
  985. <a href="http://top100.rambler.ru/navi/2836010/" rel="nofollow">
  986. <img src="http://counter.rambler.ru/top100.cnt?2836010" alt="Rambler's Top100" border="0" />
  987. </a>
  988. </noscript>
  989. </noindex>
  990. <!-- end of Top100 code --></div>
  991. </aside><aside id="text-3" class="widget widget_text"> <div class="textwidget"><!-- Rating@Mail.ru counter -->
  992. <noindex>
  993. <script type="text/javascript">//<![CDATA[
  994. (function(w,n,d,r,s){d.write('<p><a href="http://top.mail.ru/jump?from=2295139" rel="nofollow">'+
  995. '<img src="http://d5.c0.b3.a2.top.mail.ru/counter?id=2295139;t=210;js=13'+
  996. ((r=d.referrer)?';r='+escape(r):'')+((s=w.screen)?';s='+s.width+'*'+s.height:'')+';_='+Math.random()+
  997. '" style="border:0;" height="31" width="88" alt="Рейтинг@Mail.ru" /><\/a><\/p>');})(window,navigator,document);//]]>
  998. </script><p><a href="http://top.mail.ru/jump?from=2295139" rel="nofollow"><img title="[d5.c0.b3.a2.top.mail.ru] Рейтинг@Mail.ru" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" style="border: 1px solid rgb(255, 204, 204); display: none ! important; background-repeat: no-repeat; background-position: center center; background-image: url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9gMFRANL5LXnioAAAJWSURBVDjLnZI/ixtXFMV/972ZNzPSrmTtalexlsWBGMfEYOzaVciXyKdIkW/hFKnS22WafIDUxk0g2AQSgm0csIPWK42ktaSRNPP+pRBK5SLOqS7cew7ccw4xxrPJ+8XdHx4+7AE8e3Cj++zLm71fvrqT8x+QAK35dJr2n/x89urTa+eDm/cS+eI2y3eT+Lx/bt8u1vNqfDH++teXdk/6ThAfUUBIgL9ku75z/8WL7LOlhXIGJ0Pyw75wMcnGv//xSQ2DH4ddu9k01dXWsWzcofhYaiiViLjiWi9UWQa1gzcjWF7hgfzzW5ydnXB62JLjg0PTLfJertNepnQSIA+gE4Cs03UuNYYQYP4e5jPogmSG9vA6rrjC+0AxN2i5Qk0DpXVJhCQB0EVRrzqdFgB1DZfvCDHixiV2NqO6LHHKIKnQMoaWbFBgIrQVgIXaDc+JCHgP5QRZr4jzGWFbo6yncRYviiiQKUhBRch3Lyix4bgPWsAkcDkmZAV2OiE0DaI1WoEShRKF3sWnmt01pFBnJydEpZDEwHSGt47lYsls43AIXjTWV9R1Qx0DGahqLyAhbqrj0/ib0nRzXNoyCo0Kkor2llV0eKOwdUMg4pSQA7JPQXvnJv1B+GlwOvrGlaXB6fV2lb5t6qOtike56DSJgYDGBQcOAsQAfueBMeHR48fhadb1j/58HWARdt6yBv7+/vpBe2o5OogxlcaKdt5aKCNsk309W0WxKQjmQ33/9mJVAdWHdmo/tNvtRZIkfCz+ZQwGg6rT6Zj/LTAajTbD4bD5WIF/AAseEisPFO8uAAAAAElFTkSuQmCC&quot;);" alt="Рейтинг@Mail.ru" height="31" width="88"></a></p><noscript><p><a href="http://top.mail.ru/jump?from=2295139" rel="nofollow">
  999. <img src="http://d5.c0.b3.a2.top.mail.ru/counter?id=2295139;t=210;js=na"
  1000. style="border:0;" height="31" width="88" alt="Рейтинг@Mail.ru" /></a></p></noscript>
  1001. </noindex>
  1002. <!-- //Rating@Mail.ru counter --></div>
  1003. </aside><aside id="text-6" class="widget widget_text"> <div class="textwidget"><a href="http://www.alexa.com/siteinfo/www.microtechnics.ru"><script type="text/javascript" src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/a.js"></script></a></div>
  1004. </aside><aside id="text-7" class="widget widget_text"> <div class="textwidget"><!-- Yandex.Metrika counter -->
  1005. <script type="text/javascript">
  1006. (function (d, w, c) {
  1007. (w[c] = w[c] || []).push(function() {
  1008. try {
  1009. w.yaCounter26964546 = new Ya.Metrika({id:26964546,
  1010. webvisor:true,
  1011. clickmap:true,
  1012. trackLinks:true,
  1013. accurateTrackBounce:true});
  1014. } catch(e) { }
  1015. });
  1016. var n = d.getElementsByTagName("script")[0],
  1017. s = d.createElement("script"),
  1018. f = function () { n.parentNode.insertBefore(s, n); };
  1019. s.type = "text/javascript";
  1020. s.async = true;
  1021. s.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//mc.yandex.ru/metrika/watch.js";
  1022. if (w.opera == "[object Opera]") {
  1023. d.addEventListener("DOMContentLoaded", f, false);
  1024. } else { f(); }
  1025. })(document, window, "yandex_metrika_callbacks");
  1026. </script>
  1027. <noscript><div><img src="//mc.yandex.ru/watch/26964546" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
  1028. <!-- /Yandex.Metrika counter --></div>
  1029. </aside><aside id="text-8" class="widget widget_text"> <div class="textwidget"><script>
  1030. (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  1031. (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  1032. m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  1033. })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  1034. ga('create', 'UA-56536578-1', 'auto');
  1035. ga('send', 'pageview');
  1036. </script></div>
  1037. </aside> </div><!-- #secondary .widget-area -->
  1038. </div><!-- #main -->
  1039. <footer id="colophon" role="contentinfo">
  1040. <div id="site-generator">
  1041. </div>
  1042. </footer><!-- #colophon -->
  1043. </div><!-- #page -->
  1044. <div style="text-align: center;clear: both"><a onclick='document.cookie="fdx_switcher=mobile;path=/;expires=";' href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/?fdx_switcher=mobile" title="Switch to Mobile Version" rel="nofollow"><img src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/switch.png" alt="" height="20" width="50"></a></div>
  1045. <!-- SyntaxHighlighter Stuff -->
  1046. <script type="text/javascript" src="STM32%20%D1%81%20%D0%BD%D1%83%D0%BB%D1%8F.%20%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20SPI.%20%7C%20MicroTechnics_files/shCore.js"></script>
  1047. <script type="text/javascript">
  1048. SyntaxHighlighter.all();
  1049. </script>
  1050. <style>#content > #center > .dose > .dosesingle,
  1051. #content > #right > .dose > .dosesingle
  1052. {display:none !important;}</style></body></html>