Other Parts Discussed in Thread: CC2650
Tool/software: Code Composer Studio
Hi, I'm trying to read via SPI the ADS8881 with the CC2650 Launchpad. I am receiving data but I think is wrong, and sometimes frames are missing
#include <stdbool.h> #include <stddef.h> #include <stdint.h> #include <string.h> /* XDCtools Header files */ #include <xdc/std.h> #include <xdc/runtime/System.h> /* BIOS Header files */ #include <ti/sysbios/BIOS.h> #include <ti/sysbios/knl/Clock.h> #include <ti/sysbios/knl/Task.h> /* TI-RTOS Header files */ #include <ti/drivers/GPIO.h> #include <ti/drivers/PIN.h> #include <ti/drivers/SPI.h> #include <ti/drivers/spi/SPICC26XXDMA.h> /* Board Header files */ #include "Board.h" #define delay_ms(i) Task_sleep( ((i) * 1000) / Clock_tickPeriod ) #define TASKSTACKSIZE 516 Task_Struct task0Struct; Char task0Stack[TASKSTACKSIZE]; //static SPI_Handle spiHandle = NULL; SPI_Handle spiHandle = NULL; //static SPI_Params spiParams; SPI_Params spiParams; SPI_Transaction spiTransaction; uint16_t wbuf[2] = {(uint16_t) 0b1}; uint16_t rbuf[2] = {0}; int ret = 0; uint16_t buffer[40] = {0}; aux = 0; UInt32 sleepTickCount; //--------------------- static PIN_Handle hFlashPin = NULL; static PIN_State flashPinState; static PIN_Config BoardFlashPinTable[] = { Board_SPI_FLASH_CS | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MIN, // Ext. flash chip select PIN_TERMINATE }; Void taskFxn(UArg arg0, UArg arg1) { System_printf("Start SPI task\n"); SPI_Params_init(&spiParams); spiParams.dataSize = 9; spiParams.mode = SPI_MASTER; spiParams.bitRate = 4000000; spiParams.frameFormat = SPI_POL0_PHA0; spiHandle = SPI_open(Board_SPI0, &spiParams); if (spiHandle == NULL) { while (1); System_printf("Start SPI failed"); // SPI_open() failed } while (1) { delay_ms(100); SPI_Transaction masterTransaction; masterTransaction.count = 2; masterTransaction.txBuf = wbuf; masterTransaction.rxBuf = rbuf; ret = SPI_transfer(spiHandle, &masterTransaction); buffer[aux] = rbuf[1]; buffer[aux+1] = rbuf[0]; aux = aux +2; if (aux == 40){ aux = 0; } } //SPI_close(spiHandle); } /* * ======== main ======== */ int main(void) { Task_Params taskParams; /* Call board init functions */ Board_initGeneral(); Board_initSPI(); /* Construct Task thread */ Task_Params_init(&taskParams); taskParams.stackSize = TASKSTACKSIZE; taskParams.stack = task0Stack; Task_construct(&task0Struct, (Task_FuncPtr) taskFxn, &taskParams, NULL); sleepTickCount = 500000 / Clock_tickPeriod; hFlashPin = PIN_open(&flashPinState, BoardFlashPinTable); if (!hFlashPin) { System_abort("Error initializing flash pin\n"); } /* Start BIOS */ BIOS_start(); return (0); }
I'm filling an arrangement to see the values