SPI同步串行通信运行示例程序

描述

运行示例程序

大家来运行例程,看看会发生什么?

$ sudo python3 test_spi.py

在旭日X3派的终端中,输入运行例程的指令,接下来我们就可以看到通过SPI传输并收到的数据啦,相当于是左手传递给右手,自己给自己循环传输数据了。

数据

代码解析

test_spi.py:

#!/usr/bin/env python3


import sys
import os
import time


# 导入spidev模块
import spidev


def BytesToHex(Bytes):
    return ''.join(["0x%02X " % x for x in Bytes]).strip()


def spidevTest():
    # 设置spi的bus号(0, 1, 2)和片选(0, 1)
    spi_bus = input("Please input SPI bus num:")
    spi_device = input("Please input SPI cs num:")
    # 创建spidev类的对象以访问基于spidev的Python函数。
    spi=spidev.SpiDev()
    # 打开spi总线句柄
    spi.open(int(spi_bus), int(spi_device))


    # 设置 spi 频率为 12MHz
    spi.max_speed_hz = 12000000


    print("Starting demo now! Press CTRL+C to exit")


    # 发送 [0x55, 0xAA], 接收的数据应该也是 [0x55, 0xAA]
    try:
        while True:
            resp = spi.xfer2([0x55, 0xAA])
            print(BytesToHex(resp))
            time.sleep(1)


    except KeyboardInterrupt:
        spi.close()


if __name__ == '__main__':
    print("List of enabled spi controllers:")
    os.system('ls /dev/spidev*')


    spidevTest()

在python中使用spidev这个库,初始化X3Pi的SPI,之后使用xerf2发送数据,同时接收数据,并打印出来,会发现打印出来的就是我们发送的。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分