package main import ( "fmt" "machine" "time" "tinygo.org/x/drivers/mcp2515" ) var ( spi = machine.SPI0 csPin = machine.D5 ) func main() { spi.Configure(machine.SPIConfig{ Frequency: 115200, SCK: machine.SPI0_SCK_PIN, SDO: machine.SPI0_SDO_PIN, SDI: machine.SPI0_SDI_PIN, Mode: 0}) can := mcp2515.New(spi, csPin) can.Configure(mcp2515.Configuration{}) err := can.Begin(mcp2515.CAN500kBps, mcp2515.Clock8MHz) if err != nil { failMessage(err.Error()) } for { err := can.Tx(0x111, 8, []byte{0x00, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA}) if err != nil { failMessage(err.Error()) } if can.Received() { msg, err := can.Rx() if err != nil { failMessage(err.Error()) } fmt.Printf("CAN-ID: %03X dlc: %d data: ", msg.ID, msg.Dlc) for _, b := range msg.Data { fmt.Printf("%02X ", b) } fmt.Print("\r\n") } time.Sleep(time.Millisecond * 500) } } func failMessage(msg string) { for { println(msg) time.Sleep(1 * time.Second) } }