多路SPI从设备连接方法 SPI是串行外设接口(Serial Peripheral Interface)的缩写,SPI是高速的全双工同步通讯总线,英创公司的所有工控主板都提供了一路4线SPI总线接口,4线包括片选信号(SPI_CSn)、时钟信号(SPI_SCLK)、数据输入(SPI_MISO)和数据输出(SPI_MOSI)信号。 SPI以主从方式工作,英创主板SPI接口工作在主模式,SPI_CSn是SPI从设备的使能控制信号,当从设备被SPI_CSn使能时,通过SPI总线对此设备的操作才有效,因此可以在同一条SPI总线上增加片选信号来连接多个SPI设备。 一个简单的增加片选的方法是使用GPIO来模拟SPI_CSn信号,在每传输一个数据之前,将相应的GPIO置低(假设从设备片选信号为低有效),选中对应的SPI从设备,传输结束后再将GPIO置高。SPI总线的连接如下图:
由于每传输一个字(8 – 32bits)都需要操作一次GPIO,所以使用GPIO模拟SPI片选的效率不高。同时这种方法不适用于SPI的DMA传输,仅适合数据量少、对传输速度要求不同的场合。 当SPI采用DMA模式进行高速数据传输时,数据传输过程由硬件控制,片选信号也由SPI硬件直接产生输出,所以无法实现利用GPIO模拟SPI片选,此时可通过硬件电路来扩展SPI片选信号。下面是采用3 – 8译码器扩展8路SPI的原理示意图。在与一个SPI Slave通讯之前,先设置好参与译码的GPIO,然后直接调用SPI读写API函数,当SPI_CSn由驱动程序置低时,相应的YX输出低电平,当SPI_CSn为高时,所有的YX都输出高电平。在与同一SPI设备进行批量数据传输时,只需要设置一次GPIO,与使用GPIO直接模拟片选信号相比,效率大大提高了。
英创工控主板的SPI接口可以支持60Mbps甚至更高的波特率,所以需要选择低延时的逻辑器件,同时英创工控的GPIO电平范围是0 – 3.3V,因此选择的器件也应该使用3.3V供电。上图所用的74LVC138A使用3.3V供电,而且输入与输出的延时小于3nS(Typ),满足SPI高速通讯的应用。最后附上74LVC138A的真值表如下:
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/71847.html