This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
SS and clock signal
A Message from the TI E2E™ Community
cb1_mobile replied to SPI TM4C129.
Amit AsharaAnd let's not forget a "cold solder"Hi Amit,
Dawns that (now) may I say, "Duly noted?"
While a "cold solder" may (sometimes) work - worse still is dreaded, "no solder." (i.e. "Whoops" - we missed solder paste - @ that pin!)
You received this notification because you subscribed to the forum. To unsubscribe from only this thread, go here.
Flag this post as spam/abuse.
i have tested the setup with arduino board and its working but with the TIVA c launchpad board i am only getting ss , MOSI and CLK as attached but no MISO.
///////////////////////////////////////////////////Arduino code/////////////////////////////////////////
#include <SPI.h>
/*
ARDUINO UNO
SS: 10
MOSI: 11
MISO:12
SCK:13 */
// Slave Select pins for encoder
// Feel free to reallocate these pins to best suit your circuit
const int slaveSelectEnc= 10;
// These hold the current encoder count.
signed long encodercount = 0;
void setup() {
Serial.begin(9600); // Serial com for data output
SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0)); // SPI Configuration: CLK, Data Shift, SPI Mode
initEncoders();
Serial.println ("Encoders Initialized...");
Serial.println ("Encoders Cleared...");
}
void loop() {
delay(500);
// Retrieve current encoder counters
encodercount = readEncoder();
Serial.print("Enc: ");
Serial.println(encodercount);
}
void initEncoders() {
// Set slave selects as outputs
pinMode(slaveSelectEnc, OUTPUT);
// Raise select pins
// Communication begins when you drop the individual select signsl
digitalWrite(slaveSelectEnc,HIGH);
SPI.begin();
// Initialize encoder
// Negative index input
// free-running count mode
// x4 quatrature count mode (four counts per quadrature cycle)
// NOTE: For more information on commands, see datasheet
digitalWrite(slaveSelectEnc,LOW); // Begin SPI conversation
SPI.transfer(0x88); // Write to MDR0
SPI.transfer(0x00); // Configure x4 quadrature count mode (four counts per quadrature cycle)
digitalWrite(slaveSelectEnc,HIGH); // Terminate SPI conversation
/*MDR1 is not configured because its default value is 0x00 which is the desired value*/
}
int long readEncoder() {
// Initialize temporary variables for SPI read
unsigned int count_1, count_2, count_3, count_4;
long count_value;
// Read encoder
digitalWrite(slaveSelectEnc,LOW); // Begin SPI conversation
// SPI.transfer(0x20);
SPI.transfer(0x60); // Request count
count_1 = SPI.transfer(0x00); // Read highest order byte
count_2 = SPI.transfer(0x00);
count_3 = SPI.transfer(0x00);
count_4 = SPI.transfer(0x00); // Read lowest order byte
digitalWrite(slaveSelectEnc,HIGH); // Terminate SPI conversation
count_value = (count_1 << 8) + count_2;
count_value = (count_value << 8) + count_3;
count_value = (count_value << 8) + count_4;
return count_value;
}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Launchpad code,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#include <SPI.h>
//#include <sysctl.h>
// Slave Select pins for encoders 1 and 2
// Feel free to reallocate these pins to best suit your circuit
const int slaveSelectEnc= PD_2;
// These hold the current encoder count.
signed long encodercount = 0;
void setup() {
Serial.begin(9600); // Serial com for data output
Serial.println("Encoders settings up.");
Serial7.begin(115200); // Serial com for data output
Serial7.println("Encoders settings up.");
SPI.setModule(2);
//SPI.beginTransaction(SPISettings(10000, MSBFIRST, SPI_MODE0));
SPI.setBitOrder(MSBFIRST);
SPI.setDataMode(SPI_MODE0);
//unsigned int g_ui32SysClock;
pinMode(PD_4,OUTPUT);
digitalWrite(PD_4,LOW); // Mux pin
pinMode(slaveSelectEnc, OUTPUT);
digitalWrite(slaveSelectEnc,HIGH);
SPI.begin();
digitalWrite(slaveSelectEnc,LOW); // SS Pin
SPI.transfer(0x88); // Write to MDR0
SPI.transfer(0x00); // Configure x4 quadrature count mode (four counts per quadrature cycle)
digitalWrite(slaveSelectEnc,HIGH); // Terminate SPI conversation
//SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), 12000000 );
// clearEncoderCount();
Serial.println("EEncodersncoders Cleared...");
Serial7.println("EEncodersncoders Cleared...");
}
void loop() {
delay(500);
// Retrieve current encoder counters
encodercount = readEncoder();
//clearEncoderCount();
Serial.print(" Enc: "); Serial.println(encodercount);
Serial7.print(" Enc: "); Serial7.println(encodercount);
//delay(500);
}
void clearEncoderCount() {
// Set encoder1's data register to 0
digitalWrite(slaveSelectEnc,HIGH);
digitalWrite(slaveSelectEnc,LOW); // Begin SPI conversation
// Write to DTR
SPI.transfer(0x98);
// Load data
SPI.transfer(0x00); // Highest order byte
SPI.transfer(0x00);
SPI.transfer(0x00);
SPI.transfer(0x00); // lowest order byte
digitalWrite(slaveSelectEnc,HIGH); // Terminate SPI conversation
delayMicroseconds(100); // provides some breathing room between SPI conversations
// Set encoder1's current data register to center
digitalWrite(slaveSelectEnc,LOW); // Begin SPI conversation
SPI.transfer(0xE0);
digitalWrite(slaveSelectEnc,HIGH); // Terminate SPI conversation
}
int long readEncoder() {
// Initialize temporary variables for SPI read
unsigned int count_1=0, count_2=0, count_3=0, count_4=0;
long count_value;
// Read encoder
//digitalWrite(slaveSelectEnc,HIGH);
digitalWrite(slaveSelectEnc,LOW); // Begin SPI conversation
//delay(500);
//SPI.transfer(0xE8);
SPI.transfer(0x60); // Request count
count_1 = SPI.transfer(0x00); // Read highest order byte
count_2 = SPI.transfer(0x00);
count_3 = SPI.transfer(0x00);
count_4 = SPI.transfer(0x00); // Read lowest order byte
//SPI.transfer(0x20);
digitalWrite(slaveSelectEnc,HIGH);
Serial.print("count_1 ");
Serial.print(count_1 );
Serial.print(" count_2 ");
Serial.print(count_2);
Serial.print(" count_3 ");
Serial.print(count_3 );
Serial.print(" count_4 ");
Serial.print(count_4 );
Serial7.print("count_1 ");
Serial7.print(count_1 );
Serial7.print(" count_2 ");
Serial7.print(count_2);
Serial7.print(" count_3 ");
Serial7.print(count_3 );
Serial7.print(" count_4 ");
Serial7.print(count_4 );
count_value = (count_1 << 8) + count_2;
count_value = (count_value << 8) + count_3;
count_value = (count_value << 8) + count_4;
// count_value = (long) ( (count_1 << 24) | (count_2 << 16) | (count_3 << 8) | (count_4 ) ) ;
return count_value;
}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;