12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214 |
- <!DOCTYPE html>
- <!--[if IE 6]>
- <html id="ie6" dir="ltr" lang="ru-RU">
- <![endif]-->
- <!--[if IE 7]>
- <html id="ie7" dir="ltr" lang="ru-RU">
- <![endif]-->
- <!--[if IE 8]>
- <html id="ie8" dir="ltr" lang="ru-RU">
- <![endif]-->
- <!--[if !(IE 6) | !(IE 7) | !(IE 8) ]><!-->
- <html dir="ltr" lang="ru-RU"><!--<![endif]--><head>
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width">
- <meta name="cypr-verification" content="028f9168cad39ba92620c2e9f042c19e">
- <!-- mgMt7vKM1ZqAxsK5mYmEwULVc9g -->
- <title>STM32 с нуля. Интерфейс SPI. | MicroTechnics</title>
- <link rel="shortcut icon" type="image/ico" href="http://microtechnics.ru/wp-content/themes/favicon.ico">
- <link rel="profile" href="http://gmpg.org/xfn/11">
- <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">
- <link rel="pingback" href="http://microtechnics.ru/xmlrpc.php">
- <!--[if lt IE 9]>
- <script src="http://microtechnics.ru/wp-content/themes/twentyeleven/js/html5.js" type="text/javascript"></script>
- <![endif]-->
- <link rel="alternate" type="application/rss+xml" title="MicroTechnics » Лента" href="http://microtechnics.ru/feed/">
- <link rel="alternate" type="application/rss+xml" title="MicroTechnics » Лента комментариев" href="http://microtechnics.ru/comments/feed/">
- <link rel="alternate" type="application/rss+xml" title="MicroTechnics » Лента комментариев к «STM32 с нуля. Интерфейс SPI.»" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/feed/">
- <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">
- <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">
- <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">
- <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>
- <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>
- <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>
- <link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://microtechnics.ru/xmlrpc.php?rsd">
- <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://microtechnics.ru/wp-includes/wlwmanifest.xml">
- <link rel="prev" title="Основы электроники. Индуктивность и трансформатор." href="http://microtechnics.ru/osnovy-elektroniki-induktivnost-i-transformator/">
- <link rel="next" title="Приложения QT. Создание меню верхнего уровня." href="http://microtechnics.ru/prilozheniya-qt-sozdanie-menyu-verxnego-urovnya/">
- <meta name="generator" content="WordPress 3.4.2">
- <link rel="shortlink" href="http://microtechnics.ru/?p=786">
- <!-- All in One SEO Pack 1.6.15.2 by Michael Torbert of Semper Fi Web Design[-1,-1] -->
- <meta name="description" content="Описание интерфейса SPI в микроконтроллерах STM32, примеры программ для master и slave.">
- <meta name="keywords" content="stm32 spi, spi slave, spi master, интерфейс spi,stm32 с нуля">
- <link rel="canonical" href="http://microtechnics.ru/stm32-s-nulya-interfejs-spi/">
- <!-- /all in one seo pack -->
- <style type="text/css">.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style>
- <style type="text/css">
- #site-title,
- #site-description {
- position: absolute !important;
- clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
- clip: rect(1px, 1px, 1px, 1px);
- }
- </style>
- <style type="text/css" id="custom-background-css">
- 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; }
- </style>
- <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">
- <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">
- <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>
- <body class="single single-post postid-786 single-format-standard custom-background single-author singular two-column right-sidebar">
- <div id="page" class="hfeed">
- <header id="branding" role="banner">
- <hgroup>
- <div id="site-title"><span><a href="http://microtechnics.ru/" title="MicroTechnics" rel="home">MicroTechnics</a></span></div>
- <div id="site-description">Микроконтроллеры, электроника и программирование</div>
- </hgroup>
- <a href="http://microtechnics.ru/">
- <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">
- </a>
-
- <div class="only-search with-image">
- <form method="get" id="searchform" action="http://microtechnics.ru/">
- <label for="s" class="assistive-text">Поиск</label>
- <input class="field" name="s" id="s" placeholder="Поиск" type="text">
- <input class="submit" name="submit" id="searchsubmit" value="Поиск" type="submit">
- </form>
- </div>
-
- <nav id="access" role="navigation">
- <h3 class="assistive-text">Главное меню</h3>
- <div class="skip-link"><a class="assistive-text" href="#content" title="Перейти к основному содержимому">Перейти к основному содержимому</a></div>
- <div class="skip-link"><a class="assistive-text" href="#secondary" title="Перейти к дополнительному содержимому">Перейти к дополнительному содержимому</a></div>
- <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>
- <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>
- <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>
- <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>
- </ul></div> </nav><!-- #access -->
- </header><!-- #branding -->
- <div id="main">
- <div id="primary">
- <div id="content" role="main">
-
- <div id="breadcrumbs">
- <a href="http://microtechnics.ru/">Главная</a> »
- <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.
- </div>
-
- <nav id="nav-single">
- <h3 class="assistive-text">Навигация по записям</h3>
- <span class="nav-previous"><a href="http://microtechnics.ru/osnovy-elektroniki-induktivnost-i-transformator/" rel="prev"><span class="meta-nav">←</span> Предыдущая</a></span>
- <span class="nav-next"><a href="http://microtechnics.ru/prilozheniya-qt-sozdanie-menyu-verxnego-urovnya/" rel="next">Следующая <span class="meta-nav">→</span></a></span>
- </nav><!-- #nav-single -->
-
- <article id="post-786" class="post-786 post type-post status-publish format-standard hentry category-stm32-s-nulya">
- <header class="entry-header">
- <h1 class="entry-title">STM32 с нуля. Интерфейс SPI.</h1>
- <div class="entry-meta">
- <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 -->
- </header><!-- .entry-header -->
- <div class="entry-content">
- <p style="text-align: justify;">Сегодня мы будем помогать двум
- микроконтроллерам подружиться с помощью SPI. Для начала обсудим, что же
- такое вообще 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">
- Так вот, этот интерфейс позволяет связать между собой два и более
- устройств. Большой плюс SPI – большое быстродействие, так что большой
- объем данных улетит в легкую ) Но в SPI, в отличие, например от I2C, для
- подключения N устройств потребуется большое количество линий (3+N), а
- не 2, как в I2C. Да короче, на самом деле, есть и плюсы и минусы, как и
- во всем, так что идем дальше.</p>
- <p style="text-align: justify;">Существуют несколько типов подключения к
- шине, но в общем-то, алгоритм работы при любом подключении практически
- один и тот же. Ведущий генерирует тактовый сигнал с вывода SCLK и
- синхронно с этим сигналом передает данные по линии MOSI. В то же время
- подчиненное устройство передает данные в обратном направлении по линии
- MISO. Получается, что все сыты и довольны ) Хотя используется также
- подключение, при котором подчиненный только кушает байты данных, а сам
- ничего не шлет. А при подключении нескольких устройств возможно два
- варианта – независимое и каскадное. При независимом требуется больше
- линий, но такое подключение используется чаще.</p>
- <p>Что же нам предлагает STM в плане SPI?<br>
- <span id="more-786"></span></p>
- <ul>
- <li style="text-align: justify;">Возможно использование контроллера, как в качестве ведущего, так и в качестве подчиненного (ну это и так понятно)</li>
- <li>Формат кадра – 8 или 16 бит</li>
- <li>Возможность работы в режиме MultiMaster</li>
- <li style="text-align: justify;">Наличие огромного количества разных
- флагов – как для индикации окончания приема и передачи, так и для
- отлавливания разнообразных ошибок</li>
- <li>Соответствующие прерывания</li>
- <li>Возможна работа с использованием DMA</li>
- <li style="text-align: justify;">Аппаратное управление пином NSS для выбора подчиненного</li>
- </ul>
- <p>В общем, все на месте )</p>
- <p>Список прерываний для SPI:</p>
- <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>
- Давайте посмотрим, как можно настроить SPI в STM32 для работы в нужном
- режиме. Как и раньше мы будем использовать Standard Peripheral Library.
- Лезем в библиотеку, находим и открываем файл <em>stm32f10x_spi.h.</em> Прямо в начале файла все, что нам понадобится:</p>
- <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>
- <span style="color: #009900;">{</span>
- <span style="color: #993333;">uint16_t</span> SPI_Direction<span style="color: #339933;">;</span>
- <span style="color: #993333;">uint16_t</span> SPI_Mode<span style="color: #339933;">;</span>
- <span style="color: #993333;">uint16_t</span> SPI_DataSize<span style="color: #339933;">;</span>
- <span style="color: #993333;">uint16_t</span> SPI_CPOL<span style="color: #339933;">;</span>
- <span style="color: #993333;">uint16_t</span> SPI_CPHA<span style="color: #339933;">;</span>
- <span style="color: #993333;">uint16_t</span> SPI_NSS<span style="color: #339933;">;</span>
- <span style="color: #993333;">uint16_t</span> SPI_BaudRatePrescaler<span style="color: #339933;">;</span>
- <span style="color: #993333;">uint16_t</span> SPI_FirstBit<span style="color: #339933;">;</span>
- <span style="color: #993333;">uint16_t</span> SPI_CRCPolynomial<span style="color: #339933;">;</span>
- <span style="color: #009900;">}</span>SPI_InitTypeDef<span style="color: #339933;">;</span></pre></td></tr></tbody></table></div>
- <p style="text-align: justify;">Назначив всем этим полям структуры <em>SPI_InitTypeDef</em>
- определенные значения, мы можем настроить модуль SPI STM32. Тут вроде
- бы все понятно, но давайте по традиции разберем для чего нужно каждое
- отдельное поле:</p>
- <p style="text-align: justify;"><strong><em>uint16_t SPI_Direction</em></strong> – направление передачи данных, возможные значения:</p>
- <div class="wp_syntax"><table><tbody><tr><td class="code"><pre class="c" style="font-family:monospace;">SPI_Direction_2Lines_FullDuplex
- SPI_Direction_2Lines_RxOnly
- SPI_Direction_1Line_Rx
- SPI_Direction_1Line_Tx</pre></td></tr></tbody></table></div>
- <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>
- <p style="text-align: justify;"><strong><em>uint16_t SPI_Mode</em></strong> — режим работы, раб или господин – то есть подчиненный или ведущий (master или slave)</p>
- <p style="text-align: justify;"><strong><em>uint16_t SPI_DataSize</em></strong> – DataSize и этим все сказано ) размер данных – 8 или 16 бит</p>
- <p style="text-align: justify;"><strong><em>uint16_t SPI_CPOL</em></strong><br>
- <strong> <em> uint16_t SPI_CPHA</em></strong><br>
- А это настройки тактового сигнала</p>
- <p><strong><em>uint16_t SPI_NSS</em></strong> – тут мы выбираем, как будет управляться сигнал NSS – аппаратно или программно. Соответственно возможные значения поля:</p>
- <div class="wp_syntax"><table><tbody><tr><td class="code"><pre class="c" style="font-family:monospace;">SPI_NSS_Soft
- SPI_NSS_Hard</pre></td></tr></tbody></table></div>
- <p><strong><em>uint16_t SPI_BaudRatePrescaler</em> </strong>– предделитель</p>
- <p><strong><em>uint16_t SPI_FirstBit</em> </strong>– здесь выбираем с какого бита начнется передача (младшего или старшего)</p>
- <p><strong><em>uint16_t SPI_CRCPolynomial</em> </strong>– контрольная сумма</p>
- <p style="text-align: justify;">Все возможные значения для всех полей написаны все в том же файле <em>stm32f10x_spi.h</em> чуть ниже определения структуры.</p>
- <p style="text-align: justify;">В другом файле из SPL — <em>stm32f10x_spi.c</em> – функции для работы с SPI, их мы рассмотрим по мере того как они нам понадобятся.</p>
- <p style="text-align: justify;">Итак, предлагаю написать небольшую
- программку для обмена данными между двумя контроллерами по SPI. Будем
- писать программу и для ведущего и для подчиненного.</p>
- <p style="text-align: justify;">Что бы такое замутить, чтобы не просто гонять бесполезные данные….</p>
- <p style="text-align: justify;">Хм, давайте так: одному контроллеру на
- вход дается аналоговое напряжение. Он запускает АЦП и в зависимости от
- полученного значения выдает на шину SPI значение. Значения могут быть
- такими:</p>
- <p><strong>Напряжение </strong> <strong>Отсылаемое значение</strong><br>
- 0 < U < 1В 0х00<br>
- 1В < U < 2В 0х01<br>
- 2В < U < 3В 0х02<br>
- 3В < U < 3.3В 0х03<br>
- 3.3В < U 0х04</p>
- <p style="text-align: justify;">Второй контроллер в зависимости от
- принятых данных зажигает светодиоды. Если принимает 0х01 – зажигает один
- диод, если принимает 0х02 – зажигает два, ну дальше вы поняли;)</p>
- <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>
- <p style="text-align: justify;">Задача поставлена, начинаем
- реализовывать. Сначала напишем программу для ведущего (SPI Master).
- Создаем проект, не забыв добавить файлы из SPL для работы с SPI, и пишем
- следующий код:</p>
- <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>
- <span style="color: #339933;">#include "stm32f10x.h" </span>
- <span style="color: #339933;">#include "stm32f10x_rcc.h"</span>
- <span style="color: #339933;">#include "stm32f10x_gpio.h"</span>
- <span style="color: #339933;">#include "stm32f10x_spi.h"</span>
- <span style="color: #339933;">#include "stm32f10x_adc.h"</span>
-
-
-
- <span style="color: #808080; font-style: italic;">/*******************************************************************/</span>
- <span style="color: #666666; font-style: italic;">//Объявляем переменные</span>
- GPIO_InitTypeDef port<span style="color: #339933;">;</span>
- SPI_InitTypeDef spi<span style="color: #339933;">;</span>
- ADC_InitTypeDef adc<span style="color: #339933;">;</span>
- <span style="color: #993333;">uint8_t</span> sendData<span style="color: #339933;">;</span>
- <span style="color: #993333;">uint16_t</span> counter<span style="color: #339933;">;</span>
- <span style="color: #993333;">uint16_t</span> data<span style="color: #339933;">;</span>
-
-
-
- <span style="color: #808080; font-style: italic;">/*******************************************************************/</span>
- <span style="color: #993333;">void</span> initAll<span style="color: #009900;">(</span><span style="color: #009900;">)</span>
- <span style="color: #009900;">{</span>
- <span style="color: #666666; font-style: italic;">//Тут абсолютно вся инициализация</span>
- 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>
- 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>
- 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>
-
- port.<span style="color: #202020;">GPIO_Mode</span> <span style="color: #339933;">=</span> GPIO_Mode_AF_PP<span style="color: #339933;">;</span>
- 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>
- port.<span style="color: #202020;">GPIO_Speed</span> <span style="color: #339933;">=</span> GPIO_Speed_50MHz<span style="color: #339933;">;</span>
- GPIO_Init<span style="color: #009900;">(</span>GPIOA<span style="color: #339933;">,</span> <span style="color: #339933;">&</span>port<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
-
- ADC_StructInit<span style="color: #009900;">(</span><span style="color: #339933;">&</span>adc<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
- adc.<span style="color: #202020;">ADC_ContinuousConvMode</span> <span style="color: #339933;">=</span> ENABLE<span style="color: #339933;">;</span>
- adc.<span style="color: #202020;">ADC_ExternalTrigConv</span> <span style="color: #339933;">=</span> ADC_ExternalTrigConv_None<span style="color: #339933;">;</span>
- ADC_Init<span style="color: #009900;">(</span>ADC1<span style="color: #339933;">,</span> <span style="color: #339933;">&</span>adc<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
-
- SPI_StructInit<span style="color: #009900;">(</span><span style="color: #339933;">&</span>spi<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
- spi.<span style="color: #202020;">SPI_Direction</span> <span style="color: #339933;">=</span> SPI_Direction_2Lines_FullDuplex<span style="color: #339933;">;</span>
- spi.<span style="color: #202020;">SPI_Mode</span> <span style="color: #339933;">=</span> SPI_Mode_Master<span style="color: #339933;">;</span>
- spi.<span style="color: #202020;">SPI_DataSize</span> <span style="color: #339933;">=</span> SPI_DataSize_8b<span style="color: #339933;">;</span>
- spi.<span style="color: #202020;">SPI_CPOL</span> <span style="color: #339933;">=</span> SPI_CPOL_Low<span style="color: #339933;">;</span>
- spi.<span style="color: #202020;">SPI_CPHA</span> <span style="color: #339933;">=</span> SPI_CPHA_2Edge<span style="color: #339933;">;</span>
- spi.<span style="color: #202020;">SPI_NSS</span> <span style="color: #339933;">=</span> SPI_NSS_Soft<span style="color: #339933;">;</span>
- spi.<span style="color: #202020;">SPI_BaudRatePrescaler</span> <span style="color: #339933;">=</span> SPI_BaudRatePrescaler_4<span style="color: #339933;">;</span>
- spi.<span style="color: #202020;">SPI_FirstBit</span> <span style="color: #339933;">=</span> SPI_FirstBit_MSB<span style="color: #339933;">;</span>
- spi.<span style="color: #202020;">SPI_CRCPolynomial</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">7</span><span style="color: #339933;">;</span>
- SPI_Init<span style="color: #009900;">(</span>SPI1<span style="color: #339933;">,</span> <span style="color: #339933;">&</span>spi<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
-
- GPIO_StructInit<span style="color: #009900;">(</span><span style="color: #339933;">&</span>port<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
- port.<span style="color: #202020;">GPIO_Mode</span> <span style="color: #339933;">=</span> GPIO_Mode_IPD<span style="color: #339933;">;</span>
- port.<span style="color: #202020;">GPIO_Pin</span> <span style="color: #339933;">=</span> GPIO_Pin_0<span style="color: #339933;">;</span>
- port.<span style="color: #202020;">GPIO_Speed</span> <span style="color: #339933;">=</span> GPIO_Speed_2MHz<span style="color: #339933;">;</span>
- GPIO_Init<span style="color: #009900;">(</span>GPIOA<span style="color: #339933;">,</span> <span style="color: #339933;">&</span>port<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
- <span style="color: #009900;">}</span>
-
-
-
- <span style="color: #808080; font-style: italic;">/*******************************************************************/</span>
- <span style="color: #993333;">int</span> main<span style="color: #009900;">(</span><span style="color: #009900;">)</span>
- <span style="color: #009900;">{</span>
- __enable_irq<span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
- initAll<span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
- <span style="color: #666666; font-style: italic;">//Включаем АЦП</span>
- ADC_Cmd<span style="color: #009900;">(</span>ADC1<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
- ADC_SoftwareStartConvCmd<span style="color: #009900;">(</span>ADC1<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
- <span style="color: #666666; font-style: italic;">//И конечно же включаем SPI</span>
- SPI_Cmd<span style="color: #009900;">(</span>SPI1<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
- <span style="color: #b1b100;">while</span><span style="color: #009900;">(</span><span style="color: #0000dd;">1</span><span style="color: #009900;">)</span>
- <span style="color: #009900;">{</span>
- <span style="color: #666666; font-style: italic;">//Это просто счетчик, чтобы отсылать на шину данные только когда счетчик </span>
- <span style="color: #666666; font-style: italic;">//досчитает до 15000, число взято абсолютно "от балды" ))</span>
- counter<span style="color: #339933;">++;</span>
- data <span style="color: #339933;">=</span> ADC_GetConversionValue<span style="color: #009900;">(</span>ADC1<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
- <span style="color: #666666; font-style: italic;">//Сделали АЦП, анализируем данные</span>
- <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>
- <span style="color: #009900;">{</span>
- sendData <span style="color: #339933;">=</span> <span style="color: #208080;">0x04</span><span style="color: #339933;">;</span>
- <span style="color: #009900;">}</span>
- <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span>data <span style="color: #339933;">></span> <span style="color: #208080;">0xE8B</span><span style="color: #009900;">)</span>
- <span style="color: #009900;">{</span>
- sendData <span style="color: #339933;">=</span> <span style="color: #208080;">0x03</span><span style="color: #339933;">;</span>
- <span style="color: #009900;">}</span>
- <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span>data <span style="color: #339933;">></span> <span style="color: #208080;">0x9B2</span><span style="color: #009900;">)</span>
- <span style="color: #009900;">{</span>
- sendData <span style="color: #339933;">=</span> <span style="color: #208080;">0x02</span><span style="color: #339933;">;</span>
- <span style="color: #009900;">}</span>
- <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span>data <span style="color: #339933;">></span> <span style="color: #208080;">0x4D9</span><span style="color: #009900;">)</span>
- <span style="color: #009900;">{</span>
- sendData <span style="color: #339933;">=</span> <span style="color: #208080;">0x01</span><span style="color: #339933;">;</span>
- <span style="color: #009900;">}</span>
- <span style="color: #b1b100;">else</span>
- <span style="color: #009900;">{</span>
- sendData <span style="color: #339933;">=</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">;</span>
- <span style="color: #009900;">}</span>
- <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>
- <span style="color: #009900;">{</span>
- <span style="color: #666666; font-style: italic;">//Отсылаем, ради этого все и затеивалось</span>
- 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>
- <span style="color: #009900;">}</span>
- <span style="color: #009900;">}</span>
- <span style="color: #009900;">}</span>
-
-
-
- <span style="color: #808080; font-style: italic;">/****************************End of file****************************/</span></pre></td></tr></tbody></table></div>
- <p>Master готов, пишем программу для SPI Slave.</p>
- <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>
- <span style="color: #339933;">#include "stm32f10x.h" </span>
- <span style="color: #339933;">#include "stm32f10x_rcc.h"</span>
- <span style="color: #339933;">#include "stm32f10x_gpio.h"</span>
- <span style="color: #339933;">#include "stm32f10x_spi.h"</span>
-
-
-
- <span style="color: #808080; font-style: italic;">/*******************************************************************/</span>
- GPIO_InitTypeDef port<span style="color: #339933;">;</span>
- SPI_InitTypeDef spi<span style="color: #339933;">;</span>
- <span style="color: #993333;">uint8_t</span> data<span style="color: #339933;">;</span>
- <span style="color: #993333;">uint8_t</span> needUpdate<span style="color: #339933;">;</span>
-
-
-
- <span style="color: #808080; font-style: italic;">/*******************************************************************/</span>
- <span style="color: #993333;">void</span> initAll<span style="color: #009900;">(</span><span style="color: #009900;">)</span>
- <span style="color: #009900;">{</span>
- 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>
- 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>
- 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>
-
- port.<span style="color: #202020;">GPIO_Mode</span> <span style="color: #339933;">=</span> GPIO_Mode_AF_PP<span style="color: #339933;">;</span>
- 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>
- port.<span style="color: #202020;">GPIO_Speed</span> <span style="color: #339933;">=</span> GPIO_Speed_50MHz<span style="color: #339933;">;</span>
- GPIO_Init<span style="color: #009900;">(</span>GPIOB<span style="color: #339933;">,</span> <span style="color: #339933;">&</span>port<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
-
- port.<span style="color: #202020;">GPIO_Mode</span> <span style="color: #339933;">=</span> GPIO_Mode_Out_PP<span style="color: #339933;">;</span>
- 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>
- port.<span style="color: #202020;">GPIO_Speed</span> <span style="color: #339933;">=</span> GPIO_Speed_50MHz<span style="color: #339933;">;</span>
- GPIO_Init<span style="color: #009900;">(</span>GPIOA<span style="color: #339933;">,</span> <span style="color: #339933;">&</span>port<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
-
- SPI_StructInit<span style="color: #009900;">(</span><span style="color: #339933;">&</span>spi<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
- spi.<span style="color: #202020;">SPI_Direction</span> <span style="color: #339933;">=</span> SPI_Direction_2Lines_FullDuplex<span style="color: #339933;">;</span>
- spi.<span style="color: #202020;">SPI_Mode</span> <span style="color: #339933;">=</span> SPI_Mode_Slave<span style="color: #339933;">;</span>
- spi.<span style="color: #202020;">SPI_DataSize</span> <span style="color: #339933;">=</span> SPI_DataSize_8b<span style="color: #339933;">;</span>
- spi.<span style="color: #202020;">SPI_CPOL</span> <span style="color: #339933;">=</span> SPI_CPOL_Low<span style="color: #339933;">;</span>
- spi.<span style="color: #202020;">SPI_CPHA</span> <span style="color: #339933;">=</span> SPI_CPHA_2Edge<span style="color: #339933;">;</span>
- spi.<span style="color: #202020;">SPI_NSS</span> <span style="color: #339933;">=</span> SPI_NSS_Soft<span style="color: #339933;">;</span>
- spi.<span style="color: #202020;">SPI_BaudRatePrescaler</span> <span style="color: #339933;">=</span> SPI_BaudRatePrescaler_4<span style="color: #339933;">;</span>
- spi.<span style="color: #202020;">SPI_FirstBit</span> <span style="color: #339933;">=</span> SPI_FirstBit_MSB<span style="color: #339933;">;</span>
- spi.<span style="color: #202020;">SPI_CRCPolynomial</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">7</span><span style="color: #339933;">;</span>
- SPI_Init<span style="color: #009900;">(</span>SPI2<span style="color: #339933;">,</span> <span style="color: #339933;">&</span>spi<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
- <span style="color: #009900;">}</span>
-
-
-
- <span style="color: #808080; font-style: italic;">/*******************************************************************/</span>
- <span style="color: #993333;">int</span> main<span style="color: #009900;">(</span><span style="color: #009900;">)</span>
- <span style="color: #009900;">{</span>
- __enable_irq<span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
- initAll<span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
- SPI_Cmd<span style="color: #009900;">(</span>SPI2<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
- NVIC_EnableIRQ<span style="color: #009900;">(</span>SPI2_IRQn<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
- <span style="color: #666666; font-style: italic;">//Тут мы разрешаем прерывание по приему</span>
- 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>
- <span style="color: #666666; font-style: italic;">//Ну вот приняли, теперь просто зажигаем диоды</span>
- <span style="color: #b1b100;">while</span><span style="color: #009900;">(</span><span style="color: #0000dd;">1</span><span style="color: #009900;">)</span>
- <span style="color: #009900;">{</span>
- <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>
- <span style="color: #009900;">{</span>
- 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>
- <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>
- <span style="color: #009900;">{</span>
- 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>
- <span style="color: #009900;">}</span>
- <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>
- <span style="color: #009900;">{</span>
- 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>
- <span style="color: #009900;">}</span>
- <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>
- <span style="color: #009900;">{</span>
- 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>
- <span style="color: #009900;">}</span>
- <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>
- <span style="color: #009900;">{</span>
- 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>
- <span style="color: #009900;">}</span>
- needUpdate <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
- <span style="color: #009900;">}</span>
- <span style="color: #009900;">}</span>
- <span style="color: #009900;">}</span>
-
-
-
- <span style="color: #808080; font-style: italic;">/*******************************************************************/</span>
- <span style="color: #993333;">void</span> SPI2_IRQHandler<span style="color: #009900;">(</span><span style="color: #009900;">)</span>
- <span style="color: #009900;">{</span>
- 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>
- needUpdate <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
- <span style="color: #009900;">}</span>
-
-
-
- <span style="color: #808080; font-style: italic;">/****************************End of file****************************/</span></pre></td></tr></tbody></table></div>
- <p style="text-align: justify;">Здесь вся работа с SPI в прерывании.
- Когда взлетает флаг, сигнализирующий о принятии байта, бежим в
- прерывание и читаем данные. Приняли данные – надо обновить состояние
- светодиодов – выставляем переменную needUpdate в единицу. В главном
- цикле после этого зажигаются нужные светодиоды. Вот как то так =)</p>
- <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">
- Конечно, это тестовые программы, просто для знакомства с интерфейсом,
- поэтому все так «в лоб» сделано =) Наверное, в ближайшее время
- поковыряем еще и I2C, заодно сравним интерфейс с уже известным нам
- интерфейсом SPI, так что до скорых встреч!</p>
- </div><!-- .entry-content -->
- <footer class="entry-meta">
- Запись опубликована автором <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>.
- </footer><!-- .entry-meta -->
- </article><!-- #post-786 -->
-
- <div class="sample-posts">
- <h3>Похожие статьи:</h3>
- <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>
- <li><a href="http://microtechnics.ru/stm32-uchebnyj-kurs-usart/" rel="bookmark" title="STM32 с нуля. USART. Пример программы.">STM32 с нуля. USART. Пример программы.</a></li>
- <li><a href="http://microtechnics.ru/rabota-s-displeem-na-baze-hd44780/" rel="bookmark" title="Работа с дисплеем на базе HD44780">Работа с дисплеем на базе HD44780</a></li>
- <li><a href="http://microtechnics.ru/stm32-uchebnyj-kurs-tajmery/" rel="bookmark" title="STM32 с нуля. Таймеры.">STM32 с нуля. Таймеры.</a></li>
- <li><a href="http://microtechnics.ru/stm32-uchebnyj-kurs-freertos-chast-3/" rel="bookmark" title="STM32 с нуля. FreeRTOS. Кооперативная многозадачность.">STM32 с нуля. FreeRTOS. Кооперативная многозадачность.</a></li>
- </ul></div>
-
- <h4 style="text-align: left;"><span style="color: #CD0000; font-size: 14pt;">Понравилась статья? Поделись с друзьями!</span></h4>
- <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>
- <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>
- <div id="comments">
-
-
- <div id="comments-title">
- <span>STM32 с нуля. Интерфейс SPI.</span>: 20 комментариев </div>
-
- <ol class="commentlist">
- <li class="comment even thread-even depth-1" id="li-comment-336">
- <article id="comment-336" class="comment">
- <footer class="comment-meta">
- <div class="comment-author vcard">
- <img title="[1.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url("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");" 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>:
- </div><!-- .comment-author .vcard -->
-
- </footer>
- <div class="comment-content"><p>я честно пыталась прочитать и понять,
- но увы. Комментировать женщинам тут нечего. Тогда просто поздравляю вас
- с первым днем весны!!!!</p>
- </div>
- <div class="reply">
- <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 -->
- </article><!-- #comment-## -->
- <ul class="children">
- <li class="comment byuser comment-author-aveal bypostauthor odd alt depth-2" id="li-comment-343">
- <article id="comment-343" class="comment">
- <footer class="comment-meta">
- <div class="comment-author vcard">
- <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>:
- </div><!-- .comment-author .vcard -->
-
- </footer>
- <div class="comment-content"><p>Благодарю) И Вас тоже с первым днем!)</p>
- </div>
- <div class="reply">
- <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 -->
- </article><!-- #comment-## -->
- </li>
- </ul>
- </li>
- <li class="comment even thread-odd thread-alt depth-1" id="li-comment-353">
- <article id="comment-353" class="comment">
- <footer class="comment-meta">
- <div class="comment-author vcard">
- <img title="[0.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url("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");" 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>:
- </div><!-- .comment-author .vcard -->
-
- </footer>
- <div class="comment-content"><p>Надо будет попробовать, было бы не плохо ещё с КАН протоколом разобраться))</p>
- </div>
- <div class="reply">
- <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 -->
- </article><!-- #comment-## -->
- <ul class="children">
- <li class="comment byuser comment-author-aveal bypostauthor odd alt depth-2" id="li-comment-354">
- <article id="comment-354" class="comment">
- <footer class="comment-meta">
- <div class="comment-author vcard">
- <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>:
- </div><!-- .comment-author .vcard -->
-
- </footer>
- <div class="comment-content"><p>Я CAN на работе часто использую, правда не с STM32, так что можно в будущем что-нибудь попробовать )</p>
- </div>
- <div class="reply">
- <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 -->
- </article><!-- #comment-## -->
- </li>
- </ul>
- </li>
- <li class="comment even thread-even depth-1" id="li-comment-2783">
- <article id="comment-2783" class="comment">
- <footer class="comment-meta">
- <div class="comment-author vcard">
- <img title="[1.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url("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");" 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>:
- </div><!-- .comment-author .vcard -->
-
- </footer>
- <div class="comment-content"><p>Ждём I2C и примеры где это можно было бы применить )))</p>
- </div>
- <div class="reply">
- <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 -->
- </article><!-- #comment-## -->
- <ul class="children">
- <li class="comment byuser comment-author-aveal bypostauthor odd alt depth-2" id="li-comment-2788">
- <article id="comment-2788" class="comment">
- <footer class="comment-meta">
- <div class="comment-author vcard">
- <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>:
- </div><!-- .comment-author .vcard -->
-
- </footer>
- <div class="comment-content"><p>Надо бы намутить примеров, но все руки не доходят )</p>
- </div>
- <div class="reply">
- <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 -->
- </article><!-- #comment-## -->
- </li>
- </ul>
- </li>
- <li class="comment even thread-odd thread-alt depth-1" id="li-comment-6172">
- <article id="comment-6172" class="comment">
- <footer class="comment-meta">
- <div class="comment-author vcard">
- <img title="[0.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url("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");" 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>:
- </div><!-- .comment-author .vcard -->
-
- </footer>
- <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>
- написано что она не нужна вообще в режиме слейва, но там автор не юзал
- СтруктИнит, по этому я так понял оно фейлилось на праверке параметров
- функции, а у вас СтруктИнит есть, а вы тоже делаете эту настройку? нужна
- ли она? И еще: на какой максимальной частоте вам удалось запустить
- передачу?</p>
- </div>
- <div class="reply">
- <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 -->
- </article><!-- #comment-## -->
- <ul class="children">
- <li class="comment byuser comment-author-aveal bypostauthor odd alt depth-2" id="li-comment-6276">
- <article id="comment-6276" class="comment">
- <footer class="comment-meta">
- <div class="comment-author vcard">
- <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>:
- </div><!-- .comment-author .vcard -->
-
- </footer>
- <div class="comment-content"><p>Можно убрать, если есть StructInit, а по скорости я даже не замерял — не было особо цели разгонять</p>
- </div>
- <div class="reply">
- <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 -->
- </article><!-- #comment-## -->
- </li>
- </ul>
- </li>
- <li class="comment even thread-even depth-1" id="li-comment-7901">
- <article id="comment-7901" class="comment">
- <footer class="comment-meta">
- <div class="comment-author vcard">
- <img title="[0.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url("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");" 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>:
- </div><!-- .comment-author .vcard -->
-
- </footer>
- <div class="comment-content"><p>Скажите а возможно ли использовать хардварный SPI при работе с форматом данных 32 бита? Пытаюсь получить данные с AD7794</p>
- </div>
- <div class="reply">
- <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 -->
- </article><!-- #comment-## -->
- <ul class="children">
- <li class="comment byuser comment-author-aveal bypostauthor odd alt depth-2" id="li-comment-7916">
- <article id="comment-7916" class="comment">
- <footer class="comment-meta">
- <div class="comment-author vcard">
- <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>:
- </div><!-- .comment-author .vcard -->
-
- </footer>
- <div class="comment-content"><p>Ну по сути отправка 32 бит это то же самое, что и отправка два раза по 16</p>
- </div>
- <div class="reply">
- <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 -->
- </article><!-- #comment-## -->
- </li>
- </ul>
- </li>
- <li class="comment even thread-odd thread-alt depth-1" id="li-comment-8012">
- <article id="comment-8012" class="comment">
- <footer class="comment-meta">
- <div class="comment-author vcard">
- <img title="[0.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url("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");" 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>:
- </div><!-- .comment-author .vcard -->
-
- </footer>
- <div class="comment-content"><p>Никак не могу добиться нормальной
- работы SPI флеш памяти (mx 25l8005). Данные успешно читаются(точность
- данных проверена программатором). НО никак не могу заставить ее
- выставить бит записи и записать что нибудь. Хотя чтение данных и ID
- (разные команды) она принимает и отвечает. Может кто подскажет. email <a href="mailto:alexroman5000@gmail.com">alexroman5000@gmail.com</a><br>
- P.S. Про ножку WriteProtect в курсе, дело видимо не в ней….</p>
- </div>
- <div class="reply">
- <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 -->
- </article><!-- #comment-## -->
- </li>
- <li class="comment odd alt thread-even depth-1" id="li-comment-8358">
- <article id="comment-8358" class="comment">
- <footer class="comment-meta">
- <div class="comment-author vcard">
- <img title="[1.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url("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");" 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>:
- </div><!-- .comment-author .vcard -->
-
- </footer>
- <div class="comment-content"><p>Хочу спросить как правильно
- организовать «GPIO_Mode_*» для вывода NSS в Slave устройствах? В одной
- статье пишут Альтернативная функция с подтягиванием к питанию
- «GPIO_Mode_AF_PP», в другой пишут Вход с Pull-up «GPIO_Mode_IPU»!<br>
- Вроде и то и это работает, но хотелось узнать поточнее?</p>
- </div>
- <div class="reply">
- <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 -->
- </article><!-- #comment-## -->
- <ul class="children">
- <li class="comment byuser comment-author-aveal bypostauthor even depth-2" id="li-comment-8361">
- <article id="comment-8361" class="comment">
- <footer class="comment-meta">
- <div class="comment-author vcard">
- <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>:
- </div><!-- .comment-author .vcard -->
-
- </footer>
- <div class="comment-content"><p>Ну если в общем, то использование в режиме альтернативной функции является более логичным</p>
- </div>
- <div class="reply">
- <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 -->
- </article><!-- #comment-## -->
- </li>
- </ul>
- </li>
- <li class="comment odd alt thread-odd thread-alt depth-1" id="li-comment-8479">
- <article id="comment-8479" class="comment">
- <footer class="comment-meta">
- <div class="comment-author vcard">
- <img title="[1.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url("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");" 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>:
- </div><!-- .comment-author .vcard -->
-
- </footer>
- <div class="comment-content"><p>Мне бы тоже были интересны примеры с шинами CAN и I2C на этих микроконтроллерах</p>
- </div>
- <div class="reply">
- <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 -->
- </article><!-- #comment-## -->
- </li>
- <li class="comment even thread-even depth-1" id="li-comment-8500">
- <article id="comment-8500" class="comment">
- <footer class="comment-meta">
- <div class="comment-author vcard">
- <img title="[0.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url("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");" 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>:
- </div><!-- .comment-author .vcard -->
-
- </footer>
- <div class="comment-content"><p>Привет! Мучаюсь тут с SPI. Без
- отмашки мастера, слейв данные слать не будет. Это понятно. Вот в чем
- проблема. Мастер посылает байт слейву и ждет от слейва ответа, но если
- на MISO всегда находится 0×00, то мастер этот 0×00 И прочтет? По факту,
- слейв передачу не вел и держал линию на земле, но мастер принял это за
- передачу и выдал прерывание RXNE. Можно ли как-нибудь сделать так, что
- бы землю на линии MISO мастер не воспринемал как полезные данные?</p>
- </div>
- <div class="reply">
- <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 -->
- </article><!-- #comment-## -->
- <ul class="children">
- <li class="comment byuser comment-author-aveal bypostauthor odd alt depth-2" id="li-comment-8503">
- <article id="comment-8503" class="comment">
- <footer class="comment-meta">
- <div class="comment-author vcard">
- <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>:
- </div><!-- .comment-author .vcard -->
-
- </footer>
- <div class="comment-content"><p>Сделай программный фильтр в прерывании</p>
- </div>
- <div class="reply">
- <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 -->
- </article><!-- #comment-## -->
- </li>
- </ul>
- </li>
- <li class="comment even thread-odd thread-alt depth-1" id="li-comment-8574">
- <article id="comment-8574" class="comment">
- <footer class="comment-meta">
- <div class="comment-author vcard">
- <img title="[0.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url("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");" 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>:
- </div><!-- .comment-author .vcard -->
-
- </footer>
- <div class="comment-content"><p>написал небольшую программу для того, чтобы вникнуть в работу SPI, но, где-то что-то не доглядел.</p>
- <p>#include «stm32f10x.h»<br>
- #include «stm32f10x_rcc.h»<br>
- #include «stm32f10x_gpio.h»<br>
- #include «stm32f10x_spi.h»</p>
- <p> GPIO_InitTypeDef port;<br>
- SPI_InitTypeDef spi;<br>
- int value;</p>
- <p> void Delay(void)<br>
- {<br>
- unsigned long i;<br>
- for (i=0; i<2000000; i++);<br>
- }</p>
- <p> void initAll()<br>
- {</p>
- <p> RCC_APB2PeriphClockCmd(RCC_APB2ENR_AFIOEN, ENABLE);<br>
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);<br>
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE); </p>
- <p> GPIO_StructInit(&port);<br>
- port.GPIO_Mode = GPIO_Mode_AF_PP;<br>
- port.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;<br>
- port.GPIO_Speed = GPIO_Speed_50MHz;<br>
- GPIO_Init(GPIOA, &port);</p>
- <p> SPI_StructInit(&spi);<br>
- spi.SPI_Direction=SPI_Direction_2Lines_FullDuplex;<br>
- spi.SPI_Mode=SPI_Mode_Master;<br>
- spi.SPI_DataSize=SPI_DataSize_8b;<br>
- spi.SPI_CPOL=SPI_CPOL_Low;<br>
- spi.SPI_CPHA=SPI_CPHA_2Edge;<br>
- spi.SPI_NSS=SPI_NSS_Hard;<br>
- spi.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_4;<br>
- spi.SPI_FirstBit=SPI_FirstBit_MSB;<br>
- spi.SPI_CRCPolynomial=0;<br>
- SPI_Init(SPI1, &spi);<br>
- SPI_Cmd(SPI1, ENABLE);<br>
- } </p>
- <p> int main()<br>
- {</p>
- <p> initAll();</p>
- <p> value=0×93;</p>
- <p> while(1)<br>
- {<br>
- SPI_I2S_SendData(SPI1, value);</p>
- <p> Delay();</p>
- <p> }<br>
- }<br>
- Смотрел осциллографом на выводах МК никаких сигналов нет, а если взять пример отсюда: <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>
- (пост от Jan 24 2012, 04:26), все действительно работает, может у меня
- есть какая-то грубая ошибка? И еще если симулировать в Keil пример
- работающий в железе, то почему-то на выводах контроллера при подключении
- логического анализатора тишина, почему так может быть?</p>
- </div>
- <div class="reply">
- <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 -->
- </article><!-- #comment-## -->
- <ul class="children">
- <li class="comment byuser comment-author-aveal bypostauthor odd alt depth-2" id="li-comment-8575">
- <article id="comment-8575" class="comment">
- <footer class="comment-meta">
- <div class="comment-author vcard">
- <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>:
- </div><!-- .comment-author .vcard -->
-
- </footer>
- <div class="comment-content"><p>По коду все вроде нормально. А по
- поводу симулятора в Keil’е, он не особо хорошо в принципе работает,
- лучше в железе отлаживать, а на симулятор не обращать внимания.</p>
- </div>
- <div class="reply">
- <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 -->
- </article><!-- #comment-## -->
- </li>
- </ul>
- </li>
- <li class="comment even thread-even depth-1" id="li-comment-8727">
- <article id="comment-8727" class="comment">
- <footer class="comment-meta">
- <div class="comment-author vcard">
- <img title="[0.gravatar.com]" style="border: 1px solid rgb(255, 204, 204); background-repeat: no-repeat; background-position: center center; background-image: url("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");" 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>:
- </div><!-- .comment-author .vcard -->
-
- </footer>
- <div class="comment-content"><p>В STM32l-Discovery инициализацию SPI2
- провожу так же, как Виталий и, собственно, автор поста. На осцилле не
- было передачи до тех пор, пока не добавил такой вот отрывок кода,
- который высмотрел на просторах:</p>
- <p>GPIO_PinAFConfig(GPIOB, GPIO_PinSource12, GPIO_AF_SPI2);<br>
- GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI2);<br>
- GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_SPI2);</p>
- </div>
- <div class="reply">
- <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 -->
- </article><!-- #comment-## -->
- <ul class="children">
- <li class="comment byuser comment-author-aveal bypostauthor odd alt depth-2" id="li-comment-8728">
- <article id="comment-8728" class="comment">
- <footer class="comment-meta">
- <div class="comment-author vcard">
- <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>:
- </div><!-- .comment-author .vcard -->
-
- </footer>
- <div class="comment-content"><p>Я вообще с серией STM32L не работал,
- но если в общем, то эти функции просто не нужны при работе с STM32F10x
- (как в статье). А если использовать STM32F3 или STM32F4, то там уже эти
- функции нужно вызывать. Видимо для L1 аналогичная ситуация)</p>
- </div>
- <div class="reply">
- <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 -->
- </article><!-- #comment-## -->
- </li>
- </ul>
- </li>
- </ol>
-
-
- <div style="display:none;">
- <br>
- <br>
- <br>
- <form action="http://microtechnics.ru/wp-comments-post.php" method="post" id="commentform1" style="display:none;">
- <p><input name="author" id="author" size="22" aria-required="true" type="text">
- <label for="author"><small>Name (required)</small></label></p>
- <p><input name="email" id="email" size="22" aria-required="true" type="text">
- <label for="email"><small>Mail (will not be published) (required)</small></label></p>
- <p><input name="url" id="url" size="22" type="text">
- <label for="url"><small>Website</small></label></p>
- <p><textarea name="comment" id="comment" cols="58" rows="10"></textarea></p>
- <p><input name="submit" id="submit" value="Submit Comment" type="submit">
- <input name="comment_post_ID" value="786" id="comment_post_ID" type="hidden">
- <input name="comment_parent" id="comment_parent" value="0" type="hidden">
- </p>
- <p style="display: none;"><input id="akismet_comment_nonce" name="akismet_comment_nonce" value="9bb801936b" type="hidden"></p>
- </form>
- </div>
- <div id="respond">
- <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>
- <form action="http://microtechnics.ru/wp-comments-post.php" method="post" id="commentform">
- <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>
- <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>
- <p class="comment-form-url"><label for="url">Сайт</label><input id="url" name="url" size="30" type="text"></p>
- <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><a
- href="" title=""> <abbr title=""> <acronym title="">
- <b> <blockquote cite=""> <cite> <code> <del
- datetime=""> <em> <i> <q cite=""> <strike>
- <strong> </code></p> <p class="form-submit">
- <input name="submit" id="submit" value="Отправить комментарий" type="submit">
- <input name="comment_post_ID" value="786" id="comment_post_ID" type="hidden">
- <input name="comment_parent" id="comment_parent" value="0" type="hidden">
- </p>
- <p style="display: none;"><input id="akismet_comment_nonce" name="akismet_comment_nonce" value="40b15da9ee" type="hidden"></p> </form>
- </div><!-- #respond -->
-
- </div><!-- #comments -->
-
- </div><!-- #content -->
- </div><!-- #primary -->
- <div id="secondary" class="widget-area" role="complementary">
- <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>
- <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>
- <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>
- <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>
- </aside><aside id="categories-2" class="widget widget_categories"><div class="widget-title">Рубрики</div> <ul>
- <li class="cat-item cat-item-37"><a href="http://microtechnics.ru/category/3d-pechat/" title="Просмотреть все записи в рубрике «3D-печать»">3D-печать</a>
- </li>
- <li class="cat-item cat-item-36"><a href="http://microtechnics.ru/category/mikrokontrollery/" title="Просмотреть все записи в рубрике «Микроконтроллеры»">Микроконтроллеры</a>
- <ul class="children">
- <li class="cat-item cat-item-22"><a href="http://microtechnics.ru/category/mikrokontrollery/avr/" title="Просмотреть все записи в рубрике «AVR»">AVR</a>
- </li>
- <li class="cat-item cat-item-19"><a href="http://microtechnics.ru/category/mikrokontrollery/msp430/" title="Просмотреть все записи в рубрике «MSP430»">MSP430</a>
- </li>
- <li class="cat-item cat-item-11"><a href="http://microtechnics.ru/category/mikrokontrollery/stm32-s-nulya/" title="Просмотреть все записи в рубрике «STM32 с нуля»">STM32 с нуля</a>
- </li>
- <li class="cat-item cat-item-40"><a href="http://microtechnics.ru/category/mikrokontrollery/stm32cube/" title="Просмотреть все записи в рубрике «STM32Cube»">STM32Cube</a>
- </li>
- <li class="cat-item cat-item-28"><a href="http://microtechnics.ru/category/mikrokontrollery/stm23f3/" title="Просмотреть все записи в рубрике «STM32F3»">STM32F3</a>
- </li>
- <li class="cat-item cat-item-18"><a href="http://microtechnics.ru/category/mikrokontrollery/programmirovanie-stm32f4/" title="Просмотреть все записи в рубрике «Программирование STM32F4»">Программирование STM32F4</a>
- </li>
- </ul>
- </li>
- <li class="cat-item cat-item-39"><a href="http://microtechnics.ru/category/nejronnye-seti/" title="Просмотреть все записи в рубрике «Нейронные сети»">Нейронные сети</a>
- </li>
- <li class="cat-item cat-item-17"><a href="http://microtechnics.ru/category/osnovy-elektroniki/" title="Просмотреть все записи в рубрике «Основы электроники»">Основы электроники</a>
- <ul class="children">
- <li class="cat-item cat-item-30"><a href="http://microtechnics.ru/category/osnovy-elektroniki/bipolyarnyj-tranzistor/" title="Просмотреть все записи в рубрике «Биполярный транзистор»">Биполярный транзистор</a>
- </li>
- <li class="cat-item cat-item-34"><a href="http://microtechnics.ru/category/osnovy-elektroniki/zapominayushhie-ustrojstva/" title="Просмотреть все записи в рубрике «Запоминающие устройства»">Запоминающие устройства</a>
- </li>
- <li class="cat-item cat-item-33"><a href="http://microtechnics.ru/category/osnovy-elektroniki/operacionnyj-usilitel/" title="Просмотреть все записи в рубрике «Операционный усилитель»">Операционный усилитель</a>
- </li>
- <li class="cat-item cat-item-31"><a href="http://microtechnics.ru/category/osnovy-elektroniki/polevoj-tranzistor/" title="Просмотреть все записи в рубрике «Полевой транзистор»">Полевой транзистор</a>
- </li>
- <li class="cat-item cat-item-32"><a href="http://microtechnics.ru/category/osnovy-elektroniki/prochee/" title="Просмотреть все записи в рубрике «Прочее»">Прочее</a>
- </li>
- </ul>
- </li>
- <li class="cat-item cat-item-13"><a href="http://microtechnics.ru/category/otladochnye-platy/" title="Просмотреть все записи в рубрике «Отладочные платы»">Отладочные платы</a>
- <ul class="children">
- <li class="cat-item cat-item-16"><a href="http://microtechnics.ru/category/otladochnye-platy/mini-stm32/" title="Просмотреть все записи в рубрике «Mini STM32»">Mini STM32</a>
- </li>
- <li class="cat-item cat-item-27"><a href="http://microtechnics.ru/category/otladochnye-platy/msp430-launchpad/" title="Просмотреть все записи в рубрике «MSP430 LaunchPad»">MSP430 LaunchPad</a>
- </li>
- <li class="cat-item cat-item-15"><a href="http://microtechnics.ru/category/otladochnye-platy/stm32-discovery/" title="Просмотреть все записи в рубрике «STM32 Discovery»">STM32 Discovery</a>
- </li>
- <li class="cat-item cat-item-26"><a href="http://microtechnics.ru/category/otladochnye-platy/stm32f3-discovery/" title="Просмотреть все записи в рубрике «STM32F3 Discovery»">STM32F3 Discovery</a>
- </li>
- <li class="cat-item cat-item-24"><a href="http://microtechnics.ru/category/otladochnye-platy/stm32f4-discovery/" title="Просмотреть все записи в рубрике «STM32F4 Discovery»">STM32F4 Discovery</a>
- </li>
- </ul>
- </li>
- <li class="cat-item cat-item-38"><a href="http://microtechnics.ru/category/programmirovanie/" title="Просмотреть все записи в рубрике «Программирование»">Программирование</a>
- <ul class="children">
- <li class="cat-item cat-item-35"><a href="http://microtechnics.ru/category/programmirovanie/opengl/" title="Просмотреть все записи в рубрике «OpenGL»">OpenGL</a>
- </li>
- <li class="cat-item cat-item-12"><a href="http://microtechnics.ru/category/programmirovanie/prilozheniya-qt/" title="Просмотреть все записи в рубрике «Приложения QT»">Приложения QT</a>
- </li>
- </ul>
- </li>
- <li class="cat-item cat-item-20"><a href="http://microtechnics.ru/category/razrabotka-elektroniki/" title="Просмотреть все записи в рубрике «Разработка электроники»">Разработка электроники</a>
- <ul class="children">
- <li class="cat-item cat-item-21"><a href="http://microtechnics.ru/category/razrabotka-elektroniki/altium-designer/" title="Просмотреть все записи в рубрике «Altium Designer»">Altium Designer</a>
- </li>
- <li class="cat-item cat-item-25"><a href="http://microtechnics.ru/category/razrabotka-elektroniki/poleznye-algoritmy/" title="Просмотреть все записи в рубрике «Полезные алгоритмы»">Полезные алгоритмы</a>
- </li>
- </ul>
- </li>
- </ul>
- </aside> <aside id="recent-posts-2" class="widget widget_recent_entries"> <div class="widget-title">Свежие записи</div> <ul>
- <li><a href="http://microtechnics.ru/samoorganizuyushhiesya-karty-koxonena-chast-2/" title="Самоорганизующиеся карты Кохонена. Часть 2.">Самоорганизующиеся карты Кохонена. Часть 2.</a></li>
- <li><a href="http://microtechnics.ru/samoorganizuyushhiesya-karty-koxonena-chast-1/" title="Самоорганизующиеся карты Кохонена. Часть 1.">Самоорганизующиеся карты Кохонена. Часть 1.</a></li>
- <li><a href="http://microtechnics.ru/sozdanie-gerber-fajlov-v-altium-designer/" title="Создание Gerber файлов в Altium Designer.">Создание Gerber файлов в Altium Designer.</a></li>
- <li><a href="http://microtechnics.ru/stm32cube-priem-i-peredacha-dannyx-po-usart/" title="STM32Cube. Прием и передача данных по USART.">STM32Cube. Прием и передача данных по USART.</a></li>
- <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>
- </ul>
- </aside><aside id="calendar-2" class="widget widget_calendar"><div class="widget-title"> </div><div id="calendar_wrap"><table id="wp-calendar">
- <caption>Июль 2015</caption>
- <thead>
- <tr>
- <th scope="col" title="Понедельник">Пн</th>
- <th scope="col" title="Вторник">Вт</th>
- <th scope="col" title="Среда">Ср</th>
- <th scope="col" title="Четверг">Чт</th>
- <th scope="col" title="Пятница">Пт</th>
- <th scope="col" title="Суббота">Сб</th>
- <th scope="col" title="Воскресенье">Вс</th>
- </tr>
- </thead>
- <tfoot>
- <tr>
- <td colspan="3" id="prev"><a href="http://microtechnics.ru/2015/04/" title="Посмотреть записи за Апрель 2015">« Апр</a></td>
- <td class="pad"> </td>
- <td colspan="3" id="next" class="pad"> </td>
- </tr>
- </tfoot>
- <tbody>
- <tr>
- <td colspan="2" class="pad"> </td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td>
- </tr>
- <tr>
- <td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td>11</td><td>12</td>
- </tr>
- <tr>
- <td>13</td><td>14</td><td>15</td><td>16</td><td>17</td><td>18</td><td>19</td>
- </tr>
- <tr>
- <td id="today">20</td><td>21</td><td>22</td><td>23</td><td>24</td><td>25</td><td>26</td>
- </tr>
- <tr>
- <td>27</td><td>28</td><td>29</td><td>30</td><td>31</td>
- <td class="pad" colspan="2"> </td>
- </tr>
- </tbody>
- </table></div></aside><aside id="archives-2" class="widget widget_archive"><div class="widget-title">Архивы</div> <ul>
- <li><a href="http://microtechnics.ru/2015/04/" title="Апрель 2015">Апрель 2015</a></li>
- <li><a href="http://microtechnics.ru/2015/03/" title="Март 2015">Март 2015</a></li>
- <li><a href="http://microtechnics.ru/2015/02/" title="Февраль 2015">Февраль 2015</a></li>
- <li><a href="http://microtechnics.ru/2015/01/" title="Январь 2015">Январь 2015</a></li>
- <li><a href="http://microtechnics.ru/2014/12/" title="Декабрь 2014">Декабрь 2014</a></li>
- <li><a href="http://microtechnics.ru/2014/11/" title="Ноябрь 2014">Ноябрь 2014</a></li>
- <li><a href="http://microtechnics.ru/2014/10/" title="Октябрь 2014">Октябрь 2014</a></li>
- <li><a href="http://microtechnics.ru/2014/08/" title="Август 2014">Август 2014</a></li>
- <li><a href="http://microtechnics.ru/2014/02/" title="Февраль 2014">Февраль 2014</a></li>
- <li><a href="http://microtechnics.ru/2013/12/" title="Декабрь 2013">Декабрь 2013</a></li>
- <li><a href="http://microtechnics.ru/2013/11/" title="Ноябрь 2013">Ноябрь 2013</a></li>
- <li><a href="http://microtechnics.ru/2013/10/" title="Октябрь 2013">Октябрь 2013</a></li>
- <li><a href="http://microtechnics.ru/2013/09/" title="Сентябрь 2013">Сентябрь 2013</a></li>
- <li><a href="http://microtechnics.ru/2013/08/" title="Август 2013">Август 2013</a></li>
- <li><a href="http://microtechnics.ru/2013/07/" title="Июль 2013">Июль 2013</a></li>
- <li><a href="http://microtechnics.ru/2013/06/" title="Июнь 2013">Июнь 2013</a></li>
- <li><a href="http://microtechnics.ru/2013/05/" title="Май 2013">Май 2013</a></li>
- <li><a href="http://microtechnics.ru/2013/04/" title="Апрель 2013">Апрель 2013</a></li>
- <li><a href="http://microtechnics.ru/2013/03/" title="Март 2013">Март 2013</a></li>
- <li><a href="http://microtechnics.ru/2013/02/" title="Февраль 2013">Февраль 2013</a></li>
- <li><a href="http://microtechnics.ru/2013/01/" title="Январь 2013">Январь 2013</a></li>
- </ul>
- </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>
- <li><a href="http://microtechnics.ru/wp-login.php?action=register">Регистрация</a></li> <li><a href="http://microtechnics.ru/wp-login.php">Войти</a></li>
- <li><a href="http://microtechnics.ru/feed/" title="Подпишитесь на RSS-ленту этого сайта"><abbr title="Really Simple Syndication">RSS</abbr> записей</a></li>
- <li><a href="http://microtechnics.ru/comments/feed/" title="Последние комментарии ко всем записям в RSS"><abbr title="Really Simple Syndication">RSS</abbr> комментариев</a></li>
- </ul>
- </aside><aside id="text-2" class="widget widget_text"> <div class="textwidget"><!-- begin of Top100 code -->
- <noindex>
- <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>
- <noscript>
- <a href="http://top100.rambler.ru/navi/2836010/" rel="nofollow">
- <img src="http://counter.rambler.ru/top100.cnt?2836010" alt="Rambler's Top100" border="0" />
- </a>
- </noscript>
- </noindex>
- <!-- end of Top100 code --></div>
- </aside><aside id="text-3" class="widget widget_text"> <div class="textwidget"><!-- Rating@Mail.ru counter -->
- <noindex>
- <script type="text/javascript">//<![CDATA[
- (function(w,n,d,r,s){d.write('<p><a href="http://top.mail.ru/jump?from=2295139" rel="nofollow">'+
- '<img src="http://d5.c0.b3.a2.top.mail.ru/counter?id=2295139;t=210;js=13'+
- ((r=d.referrer)?';r='+escape(r):'')+((s=w.screen)?';s='+s.width+'*'+s.height:'')+';_='+Math.random()+
- '" style="border:0;" height="31" width="88" alt="Рейтинг@Mail.ru" /><\/a><\/p>');})(window,navigator,document);//]]>
- </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("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");" alt="Рейтинг@Mail.ru" height="31" width="88"></a></p><noscript><p><a href="http://top.mail.ru/jump?from=2295139" rel="nofollow">
- <img src="http://d5.c0.b3.a2.top.mail.ru/counter?id=2295139;t=210;js=na"
- style="border:0;" height="31" width="88" alt="Рейтинг@Mail.ru" /></a></p></noscript>
- </noindex>
- <!-- //Rating@Mail.ru counter --></div>
- </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>
- </aside><aside id="text-7" class="widget widget_text"> <div class="textwidget"><!-- Yandex.Metrika counter -->
- <script type="text/javascript">
- (function (d, w, c) {
- (w[c] = w[c] || []).push(function() {
- try {
- w.yaCounter26964546 = new Ya.Metrika({id:26964546,
- webvisor:true,
- clickmap:true,
- trackLinks:true,
- accurateTrackBounce:true});
- } catch(e) { }
- });
- var n = d.getElementsByTagName("script")[0],
- s = d.createElement("script"),
- f = function () { n.parentNode.insertBefore(s, n); };
- s.type = "text/javascript";
- s.async = true;
- s.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//mc.yandex.ru/metrika/watch.js";
- if (w.opera == "[object Opera]") {
- d.addEventListener("DOMContentLoaded", f, false);
- } else { f(); }
- })(document, window, "yandex_metrika_callbacks");
- </script>
- <noscript><div><img src="//mc.yandex.ru/watch/26964546" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
- <!-- /Yandex.Metrika counter --></div>
- </aside><aside id="text-8" class="widget widget_text"> <div class="textwidget"><script>
- (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
- (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
- m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
- })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
- ga('create', 'UA-56536578-1', 'auto');
- ga('send', 'pageview');
- </script></div>
- </aside> </div><!-- #secondary .widget-area -->
-
- </div><!-- #main -->
- <footer id="colophon" role="contentinfo">
-
- <div id="site-generator">
- </div>
- </footer><!-- #colophon -->
- </div><!-- #page -->
- <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>
- <!-- SyntaxHighlighter Stuff -->
- <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>
- <script type="text/javascript">
- SyntaxHighlighter.all();
- </script>
- <style>#content > #center > .dose > .dosesingle,
- #content > #right > .dose > .dosesingle
- {display:none !important;}</style></body></html>
|