1
16 개의 아날로그 센서로 구성된 프로젝트를 수행 중이며 ADC 유형 tlc2543m에 연결된 SPI를 통해 데이터를 수집하고 있습니다. 아이디어는 Python을 사용하여 SPI로 획득하는 것입니다 인텔 갈릴레오, 즉 갈릴레오의 리눅스에서 프로그래밍 중이며 마치 서버 인 것처럼 ETH에서 통신합니다. 사실 이것은 내 코드입니다 :하지만 나는 이상한 데이터만을 얻습니다. 이미 ADC의 데이터 시트를 읽었습니다. 어쨌든두고 봅니다.인텔 갈릴레오 및 tlc2543m을 사용하는 SPI on Python
MRAA 라이브러리를 사용하여 파이썬에서 SPI 통신을 프로그래밍하는 방법 ???
코드 :
#This Python file uses the following encoding: utf-8
import os, sys
#Configure ports of SPI protocol
import mraa
import time
spi=mraa.Spi(0)
#spi.mode(mraa.SPI_MODE3)
spi.mode(0)
spi.frequency(20000000)
spi.lsbmode(False)
ss=mraa.Gpio(9)
ss.dir(mraa.DIR_OUT)
ss.write(1)
sc=mraa.Gpio(8)
sc.dir(mraa.DIR_OUT)
sc.write(1)
def readadc(pinaleer,ss):
#primera configuracion
direccionaleer=0x0c
resp=0x00
segundobyte=0x00
valordigital=0x00
pinaleer=int(hex(pinaleer),16)
direccionaleer = direccionaleer | (pinaleer<<4) #guardo en los primeros 4 bits la direccion a leer
#direccionaleer = (direccionaleer<<8)
#print hex(dieccionaleer)
ss.write(1) #Enciendo la transferencia de datos
resp=spi.write(bytearray(hex(direccionaleer))) #Le digo que pin quiero leer
otra=spi.write(bytearray(0x00))#hex(direccionaleer))) #le mando ceros, ya acabé
ss.write(0) #Apago la transferencia de datos
time.sleep(0.0002) #Espero 20us
ss.write(0)#Enciedo la transferencia de datos
primerbyte=spi.write(bytearray(0x0000)) #Leo el primer byte de respuesta
segundobyte=spi.write(bytearray(0x00)) #Leo el segundo byte, total 2Byte= 16bits de repuesta
ss.write(1)#Apago la transferencia de datos
salida1= (resp[3]<<8)|(resp[2])#<<4)|(resp[1])
salida= (salida1>>4)+1
return salida
d=0
while d<5:
#d+=1
dato1 = readadc(1,ss)
dato2 = readadc(2,ss)
dato3 = readadc(3,ss)
dato4 = readadc(4,ss)
dato5 = readadc(5,ss)
dato6 = readadc(6,ss)
dato7 = readadc(7,ss)
dato8 = readadc(8,ss)
dato9 = readadc(9,ss)
dato10= readadc(10,ss)
dato11= readadc(11,ss)
dato12= readadc(12,ss)
dato13= readadc(13,ss)
#print "Dato recibido:"
print (dato1, dato2, dato3, dato4, dato5, dato6, dato7, dato8, dato9, dato10, dato11, dato12, dato13)