Jag kommer använda mig utav Java när jag programmerar för processorn ARM Cortex-A53 samt biblioteket Pi4J.
Det jag först börjar med är att deklarera ett SPI objekt.
Kod: Markera allt
// Declare the SPI
spi = SpiFactory.getInstance(SpiChannel.CS1,
SpiDevice.DEFAULT_SPI_SPEED, // default spi speed 1 MHz
SpiDevice.DEFAULT_SPI_MODE); // default spi mode 0
Där efter så har jag valt mitt kommando för att bestämma om jag ska skriva, stänga ned och vilken utgång som gäller. I java så kan man använda 0b eller 0B för att deklarera att talet är ett binärt tal.
Nu säger databladet att SPI klockan gör 16 pulser och jag tolkar som att inläsningen sker i en enda rad, dvs inget "start kommando" och sedan kommer "data". Det jag försöker säga är att om man ska skriva till MCP41010 så gäller det ett binärt tal som har 16 bit i längd.
Jag har valt denna bit som kommando 0b00010001 men denna har längden 8 bitar och jag behöver 8 bitar till. Då har jag två frågor:
1. Hur kan jag addera så att 0b00010001 + 00100100 eller likande blir 0b0001000100100100 i Java, utan att blanda in strängar och "fusk"-konvertering igenom bibliotek.
2. Visst kräver MCP41010 en hel bitt på 16 bitar, eller ska det vara uppdelning typ först kommando, och där efter registret? Se exempelkod nedan som visar en array som har två element. Eller ska det vara ett enda element?
Här är ett verkligt exempel på uppdelning: https://github.com/Pi4J/pi4j/blob/maste ... ample.java
Kod: Markera allt
byte[] data = new byte[] {
(byte) 0b00010001, // Commando
(byte) 0b01010010 // Register
};
// send conversion request to ADC chip via SPI channel
spi.write(data);