2
초기화 RF522 드라이브에 시도 : - 그것은 다시 15
명령 코드를 반환하지만 같은 초기화 루틴Golang 및 SPI - 나는 initalize <a href="https://www.nxp.com/docs/en/data-sheet/MFRC522.pdf" rel="nofollow noreferrer">MFRC522</a> 장치를 제대로 수행하는 간단한 파이썬 코드가
import spidev
mode_reset = 0x0F
def spi_transfer(data):
r = spi.xfer2(data)
return r
def dev_write(address, value):
r = spi_transfer([(address << 1) & 0x7E, value])
print(">>",[(address << 1) & 0x7E, value], r)
return r
def reset():
dev_write(0x01, mode_reset)
spi = spidev.SpiDev()
spi.open(0, 0)
spi.max_speed_hz = 1000000
print(spi.mode, spi.bits_per_word, spi.lsbfirst)
reset()
완벽하게 잘 작동 이동에 구현 정말 작동하지 않습니다
는package main
import (
"fmt"
"golang.org/x/exp/io/spi"
"log"
)
func main() {
spiDev, err := spi.Open(&spi.Devfs{
Dev: "/dev/spidev0.0",
Mode: spi.Mode(spi.Mode0),
MaxSpeed: int64(1000000),
})
spiDev.SetMode(spi.Mode0)
spiDev.SetBitOrder(spi.MSBFirst)
spiDev.SetBitsPerWord(8)
if err != nil {
log.Fatal(err)
}
writeSpiData := func(dataIn []byte) (out []byte, err error) {
out = make([]byte, len(dataIn))
err = spiDev.Tx(dataIn, out)
return
}
devWrite := func(address int, data byte) (err error) {
newData := [2]byte{(byte(address) << 1) & 0x7E, data}
readBuf, err := writeSpiData(newData[0:])
fmt.Println(">>", newData, readBuf)
return
}
if err != nil {
log.Fatal(err)
}
devWrite(0x01, 0x0F)
fmt.Println("Done")
}
이 사람은 잘못 [0 0]
를 반환합니다. 아무도 거기에 무엇이 잘못되었을 지 알고 있습니까?
'인쇄 (spi.mode, spi.bits_per_word,'** spi.lsbfirst **')'spiDev.SetBitOrder'대 ('** spi.MSBFirst **')'수이 그거야? – Gavin
MSB 플래그/워드 당 비트 수를 확인하는 것은 디버그 일뿐입니다. 파이썬에서 반환 된'lsbfirst'는'false'입니다. – jdevelop