Other Parts Discussed in Thread: TMDSCNCD28388D, C2000WARE
Tool/software:
Urgent help needed ,My SPI clock is not generating after I modified only application level of example code "spi_ex6_eeprom"
I am providing my code in below ,I am quite new to C2000 platform , I need a guidance
// Included Files
//
#include "driverlib.h"
#include "device.h"
#include "board.h"
//
// Defines
//
#define MAX6675_CS_GPIO 11 // Chip Select GPIO Pin
#define SPI_BASE_ADDR SPIA_BASE
void initSPI(void);
uint16_t readMAX6675(void);
void selectChip(void);
void deselectChip(void);
void initSPI(void)
{
// Configure GPIO pins for SPI
GPIO_setPinConfig(GPIO_16_SPIA_SIMO);
GPIO_setPinConfig(GPIO_17_SPIA_SOMI);
GPIO_setPinConfig(GPIO_18_SPIA_CLK);
GPIO_setPadConfig(16, GPIO_PIN_TYPE_STD);
GPIO_setPadConfig(17, GPIO_PIN_TYPE_STD);
GPIO_setPadConfig(18, GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode(16, GPIO_QUAL_ASYNC);
GPIO_setQualificationMode(17, GPIO_QUAL_ASYNC);
GPIO_setQualificationMode(18, GPIO_QUAL_ASYNC);
GPIO_setDirectionMode(16, GPIO_DIR_MODE_OUT);
GPIO_setDirectionMode(17, GPIO_DIR_MODE_IN);
GPIO_setDirectionMode(18, GPIO_DIR_MODE_OUT);
// Configure Chip Select GPIO
GPIO_setPadConfig(MAX6675_CS_GPIO, GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode(MAX6675_CS_GPIO, GPIO_QUAL_SYNC);
GPIO_setDirectionMode(MAX6675_CS_GPIO, GPIO_DIR_MODE_OUT);
GPIO_setControllerCore(MAX6675_CS_GPIO, GPIO_CORE_CPU1);
GPIO_writePin(MAX6675_CS_GPIO, 1);
// Initialize SPI Module
SPI_disableModule(SPI_BASE_ADDR);
SPI_setConfig(SPI_BASE_ADDR, DEVICE_LSPCLK_FREQ, SPI_PROT_POL0PHA0, SPI_MODE_MASTER, 4000000, 8);
SPI_setPTESignalPolarity(SPI_BASE_ADDR, SPI_PTE_ACTIVE_LOW);
SPI_disableFIFO(SPI_BASE_ADDR);
SPI_disableLoopback(SPI_BASE_ADDR);
SPI_setEmulationMode(SPI_BASE_ADDR, SPI_EMULATION_STOP_AFTER_TRANSMIT);
SPI_enableModule(SPI_BASE_ADDR);
}
void selectChip(void)
{
GPIO_writePin(MAX6675_CS_GPIO, 0);
DEVICE_DELAY_US(10);
}
void deselectChip(void)
{
GPIO_writePin(MAX6675_CS_GPIO, 1);
DEVICE_DELAY_US(10);
}
uint16_t readMAX6675(void)
{
uint16_t receivedData = 0;
selectChip();
SPI_writeDataBlockingNonFIFO(SPI_BASE_ADDR, 0x0000);
receivedData = SPI_readDataBlockingNonFIFO(SPI_BASE_ADDR);
deselectChip();
if(receivedData & 0x04) // Check for Fault Bit
{
return 0xFFFF; // Error Value
}
return (receivedData >> 3) * 0.25; // Temperature Conversion
}
void main(void)
{
Device_init();
Device_initGPIO();
initSPI();
while(1)
{
uint16_t temperature = readMAX6675();
if(temperature != 0xFFFF)
{
// Valid temperature reading
}
DEVICE_DELAY_US(1000000); // Delay 1 second
}
}

