運(yùn)行示例程序
大家來(lái)運(yùn)行例程,看看會(huì)發(fā)生什么?
$ sudo python3 test_spi.py
在旭日X3派的終端中,輸入運(yùn)行例程的指令,接下來(lái)我們就可以看到通過(guò)SPI傳輸并收到的數(shù)據(jù)啦,相當(dāng)于是左手傳遞給右手,自己給自己循環(huán)傳輸數(shù)據(jù)了。
代碼解析
test_spi.py:
#!/usr/bin/env python3
import sys
import os
import time
# 導(dǎo)入spidev模塊
import spidev
def BytesToHex(Bytes):
return ''.join(["0x%02X " % x for x in Bytes]).strip()
def spidevTest():
# 設(shè)置spi的bus號(hào)(0, 1, 2)和片選(0, 1)
spi_bus = input("Please input SPI bus num:")
spi_device = input("Please input SPI cs num:")
# 創(chuàng)建spidev類(lèi)的對(duì)象以訪問(wèn)基于spidev的Python函數(shù)。
spi=spidev.SpiDev()
# 打開(kāi)spi總線(xiàn)句柄
spi.open(int(spi_bus), int(spi_device))
# 設(shè)置 spi 頻率為 12MHz
spi.max_speed_hz = 12000000
print("Starting demo now! Press CTRL+C to exit")
# 發(fā)送 [0x55, 0xAA], 接收的數(shù)據(jù)應(yīng)該也是 [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這個(gè)庫(kù),初始化X3Pi的SPI,之后使用xerf2發(fā)送數(shù)據(jù),同時(shí)接收數(shù)據(jù),并打印出來(lái),會(huì)發(fā)現(xiàn)打印出來(lái)的就是我們發(fā)送的。
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
6808瀏覽量
88743 -
SPI
+關(guān)注
關(guān)注
17文章
1688瀏覽量
91209 -
程序
+關(guān)注
關(guān)注
116文章
3756瀏覽量
80751 -
串口通信
+關(guān)注
關(guān)注
34文章
1607瀏覽量
55381
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論