{"id":5084,"date":"2018-01-04T11:15:18","date_gmt":"2018-01-04T10:15:18","guid":{"rendered":"https:\/\/www.blaess.fr\/christophe\/?p=5084"},"modified":"2018-01-04T11:26:55","modified_gmt":"2018-01-04T10:26:55","slug":"petit-ajout-dans-spi-tools","status":"publish","type":"post","link":"https:\/\/www.blaess.fr\/christophe\/2018\/01\/04\/petit-ajout-dans-spi-tools\/","title":{"rendered":"Petit ajout dans spi-tools"},"content":{"rendered":"<p>Tout d&rsquo;abord, je vous souhaite \u00e0 tous <strong>une excellente ann\u00e9e 2018<\/strong> !<\/p>\n<p style=\"text-align: justify;\">Dans l&rsquo;article <a href=\"https:\/\/www.blaess.fr\/christophe\/2014\/08\/12\/projet-spi-tools\/\">Projet spi-tools<\/a>, je pr\u00e9sentais un petit outil permettant de configurer les param\u00e8tres d&rsquo;une liaison SPI depuis la ligne de commande du shell, en s&rsquo;appuyant sur l&rsquo;interface <em>spidev<\/em>. Depuis quelques temps, l&rsquo;une des options de cet outil ne fonctionnait plus correctement. En effet, plusieurs drivers SPI du kernel r\u00e9initialisent la vitesse de communication lorsque l&rsquo;on referme le descripteur de fichier <code>\/dev\/spidevX.Y<\/code>.<\/p>\n<p>\n<!--more-->\n<\/p>\n<p style=\"text-align: justify;\">Nous pouvons bien modifier la vitesse, mais \u00e0 peine notre commande <code>spi-config<\/code> s&rsquo;ach\u00e8ve-t-elle que le driver reconfigure la vitesse par d\u00e9faut. En voici un exemple sur Raspberry Pi 3.<\/p>\n<pre>$ <strong>spi-config -d \/dev\/spidev0.0 -q<\/strong>\n\/dev\/spidev0.0: mode=1, lsb=0, bits=8, speed=500000, spiready=0\n$ <strong>spi-config -d \/dev\/spidev0.0 -s 200000<\/strong>\n$ <strong>spi-config -d \/dev\/spidev0.0 -q<\/strong>\n\/dev\/spidev0.0: mode=1, lsb=0, bits=8, speed=500000, spiready=0\n$<\/pre>\n<p style=\"text-align: justify;\">La vitesse configur\u00e9e \u00e0 200000 bits\/seconde par notre commande est revenue imm\u00e9diatement \u00e0 500000 bits\/seconde.<\/p>\n<p style=\"text-align: justify;\">Une solution est d&rsquo;utiliser une nouvelle option&nbsp;: <code>-w<\/code> ou <code>--wait<\/code>. Ainsi la commande <code>spi-config<\/code> reste bloqu\u00e9e avec le descripteur ouvert, jusqu&rsquo;\u00e0 r\u00e9ception d&rsquo;un signal qui la tue. <\/p>\n<p style=\"text-align: justify;\">Il suffit de la passer en arri\u00e8re-plan (en la faisant suivre d&rsquo;un <code><strong>&amp;<\/strong><\/code>) et \u00e9ventuellement de r\u00e9cup\u00e9rer son PID, disponible dans la variable sp\u00e9ciale <code><strong>$!<\/strong><\/code> du shell, pour pouvoir la tuer une fois la communication termin\u00e9e.<\/p>\n<pre>$ <strong>spi-config -d \/dev\/spidev0.0 -q<\/strong>\n\/dev\/spidev0.0: mode=1, lsb=0, bits=8, speed=500000, spiready=0\n$ <strong>spi-config -d \/dev\/spidev0.0 -s 200000 -w &amp;<\/strong>\n[1] 7324\n$ <strong>PID=$!<\/strong>\n$ <\/pre>\n<p style=\"text-align: justify;\">Le port reste configur\u00e9 avec la vitesse d\u00e9sir\u00e9e. La preuve&nbsp;:<\/p>\n<pre>$ <strong>spi-config -d \/dev\/spidev0.0 -q<\/strong>\n\/dev\/spidev0.0: mode=1, lsb=0, bits=8, speed=200000, spiready=0\n$ <\/pre>\n<p style=\"text-align: justify;\">Quand nous n&rsquo;avons plus besoin du port SPI on peut le lib\u00e9rer ainsi&nbsp;:<\/p>\n<pre>$ <strong>kill $PID<\/strong>\n[1]+  Terminated              spi-config -d \/dev\/spidev0.0 -s 200000 -w\n$ <\/pre>\n<p style=\"text-align: justify;\">La vitesse reprend alors sa valeur par d\u00e9faut&nbsp;:<\/p>\n<pre> $ <strong>spi-config -d \/dev\/spidev0.0 -q<\/strong>\n\/dev\/spidev0.0: mode=1, lsb=0, bits=8, speed=500000, spiready=0\n$ <\/pre>\n<p>Le projet <strong>spi-tools<\/strong> qui regroupe <code>spi-config<\/code> et <code>spi-pipe<\/code> est accessible sur <a href=\"https:\/\/github.com\/cpb-\/\" rel=\"noopener\" target=\"_blank\">mon d\u00e9p\u00f4t Github<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Tout d&rsquo;abord, je vous souhaite &agrave; tous une excellente ann&eacute;e 2018&nbsp;! Dans l&rsquo;article Projet spi-tools, je pr&eacute;sentais un petit outil permettant de configurer les param&egrave;tres d&rsquo;une liaison SPI depuis la ligne de commande du shell, en s&rsquo;appuyant sur l&rsquo;interface spidev. Depuis quelques temps, l&rsquo;une des options de cet outil ne fonctionnait plus correctement. En [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-5084","post","type-post","status-publish","format-standard","hentry","category-linux-2"],"_links":{"self":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts\/5084","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/comments?post=5084"}],"version-history":[{"count":7,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts\/5084\/revisions"}],"predecessor-version":[{"id":5093,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts\/5084\/revisions\/5093"}],"wp:attachment":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/media?parent=5084"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/categories?post=5084"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/tags?post=5084"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}