主题中讨论的其他器件:TMDSCNCD28388D、 C2000WARE
工具与软件:
需要紧急帮助、仅修改代码"spi_ex6_eeproM"的应用程序级别后、我的 SPI 时钟无法生成
我在下面提供了我的代码,我是比较新的 C2000平台,我需要一个指导
// 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 } }