bigbat 发表于 2020-2-12 13:39

树莓派windows iot 开发(五) SPI接口

<div class='showpostmsg'><p align="left"><span style="font-size:16px;">目录</span></p>

<hr />
<p align="left"><span style="font-size:16px;"><a href="https://home.eeworld.com.cn/thread-1108717-1-1.html" target="_blank" title="树莓派windows iot 开发(一)">树莓派windows iot 开发(一)</a></span></p>

<p align="left"><span style="font-size:16px;"><a href="https://home.eeworld.com.cn/thread-1108724-1-1.html" target="_blank" title="树莓派windows iot 开发(二) USB摄像机">树莓派windows iot 开发(二) USB摄像机</a></span></p>

<p align="left"><span style="font-size:16px;"><a href="https://home.eeworld.com.cn/thread-1108877-1-1.html" target="_blank" title="树莓派windows iot 开发(三) 闪烁的LED">树莓派windows iot 开发(三) 闪烁的LED</a></span></p>

<p align="left"><span style="font-size:16px;"><a href="https://home.eeworld.com.cn/thread-1109072-1-1.html" target="_blank" title="树莓派windows iot 开发(四) UART接口">树莓派windows iot 开发(四) UART接口</a></span></p>

<p align="left"><span style="font-size:16px;"><a href="https://bbs.eeworld.com.cn/thread-1109475-1-1.html" target="_blank">树莓派windows iot 开发(五) SPI接口</a></span></p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><span style="font-size:16px;">树莓派的SPI总线接口有两组,SPI0和SPI1,我手头有一块SD1306的SPI显示屏。这个屏只使用了SPI的两条线SCLK和MOSI,因为不需要和屏通讯也就不需要MISO线。除了SPI数据线还需要CS线(使能)、RST线(复位)和CDS线(数据/命令)。我的屏和微软用的屏有一点差异,但是功能是兼容的。RST、CDS这二条线是连接普通的GPIO,CS连接的是SPI0的使能线。<br />
硬件:SPI接口的SD1306 OLED显示屏一块。杜邦线7条。<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;树莓派开发板RPI3B+,HDMI、鼠标、USB、电源线等。</span></p>

<p><span style="font-size:16px;">资料连接 ttps://github.com/Microsoft/Windows-iotcore-samples/tree/master/Samples/SPIDisplay</span></p>

<p><span style="font-size:16px;">按照要求进行连线</span></p>

<p><span style="font-size:16px;"></span></p>

<p><span style="font-size:16px;">用VS2019打开SPIDisplay样例程序</span></p>

<p><span style="font-size:16px;">不用修改程序,直接运行。</span></p>

<p><span style="font-size:16px;">可以看到程序已经启动了。</span></p>

<p><span style="font-size:16px;">可以看到文字和显示屏上是一致的。怎么有点&ldquo;虚呢&rdquo;。这是屏幕中有反白显示,但是没有做好。<br />
本文的目的是介绍SPI总线的操作,所以使用的代码和SPIDisplay的代码有些出入。</span></p>

<div aria-label="代码段 小部件" contenteditable="false" role="region" tabindex="-1">
<pre data-widget="codesnippet">
<code class="language-cs"></code></pre>
<img src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" /><span bbs.eeworld.com.cn="" editor="" handle.png="" http:="" images="" plugins="" static="" style="background: url(&quot;&lt;imgdata-cke-saved-src=" widget="">&quot;) rgba(220, 220, 220, 0.5); left: 0px; top: -15px; display: block;&quot;&gt;<img height="15" role="presentation" src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" title="点击并拖拽以移动" width="15" /></span></div>

<p><span style="font-size:16px;">这是GPIO初始化的代码。设置RST和DCS为GPIO的输出模式。</span></p>

<div aria-label="代码段 小部件" contenteditable="false" role="region" tabindex="-1">
<pre data-widget="codesnippet">
<code class="language-cs"></code></pre>
<img src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" /><span bbs.eeworld.com.cn="" editor="" handle.png="" http:="" images="" plugins="" static="" style="background: url(&quot;&lt;imgdata-cke-saved-src=" widget="">&quot;) rgba(220, 220, 220, 0.5); left: 0px; top: -15px; display: block;&quot;&gt;<img height="15" role="presentation" src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" title="点击并拖拽以移动" width="15" /></span></div>

<p><span style="font-size:16px;">主要为两个步骤<br />
一、定义一个设置对象,用来设置外设的连接参数,如工作模式和通讯速率<br />
settings.ClockFrequency = 10000000;&nbsp;<br />
settings.Mode = SpiMode.Mode3; 无回应<br />
二、选择和开启设备<br />
string spiAqs = SpiDevice.GetDeviceSelector(SPI_CONTROLLER_NAME);<br />
SpiDisplay = await SpiDevice.FromIdAsync(devicesInfo.Id, settings);&nbsp;<br />
SpiDisplay就是定义好的SPI设备对象<br />
设备准备好以后就可以写入数据了</span></p>

<div aria-label="代码段 小部件" contenteditable="false" role="region" tabindex="-1">
<pre data-widget="codesnippet">
<code class="language-cs"></code></pre>
<img src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" /><span bbs.eeworld.com.cn="" editor="" handle.png="" http:="" images="" plugins="" static="" style="background: url(&quot;&lt;imgdata-cke-saved-src=" widget="">&quot;) rgba(220, 220, 220, 0.5); left: 0px; top: -15px; display: block;&quot;&gt;<img height="15" role="presentation" src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" title="点击并拖拽以移动" width="15" /></span></div>

<p><span style="font-size:16px;">DtaCommandPin.Write(GpioPinValue.High);//GPIO读写,设置 命令/数据<br />
SpiDisplay.Write(Data);//写入SPI数据<br />
windows iot的设备操作是由驱动程序异步操作的,所以不需要用户操心多任务同步的事。这一点比使用嵌入式操作系统要好一些。所以使用windows iot系统开发的程序简单,也会比较稳定!</span></p>

<p>&nbsp;</p>

<p><span style="font-size:16px;"><b><font color="#5e7384">此内容由EEWORLD论坛网友bigbat原创,如需转载或用于商业用途需征得作者同意并注明出处</font></b></span></p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

bigbat 发表于 2020-2-12 13:41

<p>这是有图的版本,请管理员发没图的删了吧。</p>

eric_wang 发表于 2020-2-12 14:47

bigbat 发表于 2020-2-12 13:41
这是有图的版本,请管理员发没图的删了吧。

<p>好的,我们研究下之前那篇为什么没图就删除。</p>

yang_alex 发表于 2020-2-12 22:10

<p>不错。有个小小的显示做人机交互也挺好。</p>

freebsder 发表于 2020-2-13 21:08

<p>很少看到win iot的入门材料,楼主干得漂亮。</p>
页: [1]
查看完整版本: 树莓派windows iot 开发(五) SPI接口