#include "stdafx.h" #include #include #include "FTCSPI.h" #define MAX_SPI_CHIP_SIZE_IN_WORDS 5000 #define NUM_x_CONTOL_BITS 11 #define NUM_x_CMD_CONTOL_BYTES 2 int main() { FTC_STATUS Status = FTC_SUCCESS; FTC_HANDLE ftcHandle; DWORD dwNumDevices = 0; DWORD dwClockDivisor = 50000; FTC_INIT_CONDITION WriteStartCondition; WriteControlByteBuffer WriteControlBuffer; WriteDataByteBuffer WriteDataBuffer; FTC_WAIT_DATA_WRITE WaitDataWriteComplete; FTC_HIGHER_OUTPUT_PINS HighPinsWriteActiveStates; BOOL MSB_FIRST = FALSE; BOOL POS_EDGE = FALSE; ReadDataByteBuffer ReadDataBuffer; DWORD dwNumDataBytesReturned = 0; FTC_INIT_CONDITION ReadStartCondition; Status = SPI_GetNumDevices(&dwNumDevices); if(Status == FTC_SUCCESS) { // printf("Number of Devices: \n",dwNumDevices); } Status = SPI_Open(&ftcHandle); if(Status == FTC_SUCCESS) { Status = SPI_InitDevice(ftcHandle,dwClockDivisor); // Status = SPI_SetLoopback(ftcHandle,TRUE); // ******************************************************** // Start Conditions Write WriteStartCondition.bClockPinState = FALSE; WriteStartCondition.bDataOutPinState = FALSE; WriteStartCondition.bChipSelectPinState = FALSE; WriteStartCondition.dwChipSelectPin = ADBUS3ChipSelect; WaitDataWriteComplete.bWaitDataWriteComplete = FALSE; HighPinsWriteActiveStates.bPin1ActiveState = FALSE; HighPinsWriteActiveStates.bPin1State = FALSE; HighPinsWriteActiveStates.bPin2ActiveState = FALSE; HighPinsWriteActiveStates.bPin2State = FALSE; HighPinsWriteActiveStates.bPin3ActiveState = FALSE; HighPinsWriteActiveStates.bPin3State = FALSE; HighPinsWriteActiveStates.bPin4ActiveState = FALSE; HighPinsWriteActiveStates.bPin4State = FALSE; // ***************************************************** // enable writing WriteControlBuffer[0] = '\x9F'; WriteControlBuffer[1] = '\xFF'; Status = SPI_Write(ftcHandle, // Handle of the device &WriteStartCondition, // StartConditions MSB_FIRST, POS_EDGE, NUM_x_CONTOL_BITS, &WriteControlBuffer, NUM_x_CMD_CONTOL_BYTES, TRUE, // (TRUE) Write to external device 0, &WriteDataBuffer, 0, &WaitDataWriteComplete, &HighPinsWriteActiveStates); } // ***************************************************** // Read ReadStartCondition.bClockPinState = FALSE; ReadStartCondition.bDataOutPinState = TRUE; ReadStartCondition.bChipSelectPinState = TRUE; ReadStartCondition.dwChipSelectPin = ADBUS3ChipSelect; Status = SPI_Read(ftcHandle, &ReadStartCondition, MSB_FIRST, FALSE, //Egde 8, &WriteControlBuffer, 1, MSB_FIRST, POS_EDGE, 8, &ReadDataBuffer, &dwNumDataBytesReturned, &HighPinsWriteActiveStates); SPI_Close(ftcHandle); return 0; }