9a6dadfe7a956b864adea8fe2875b78e690895f0
[i3-mote/i3-mote.git] / Basic-Test-Package / CC2650 / Test_CC2650_3wSPI_Slave_MSP432_Master / main.c
1 /*
2 * ======== empty_min.c ========
3 */
4 /* XDCtools Header files */
5 #include <xdc/std.h>
6 #include <xdc/runtime/System.h>
8 /* BIOS Header files */
9 #include <ti/sysbios/BIOS.h>
10 #include <ti/sysbios/knl/Task.h>
11 #include <ti/sysbios/knl/Clock.h>
13 /* TI-RTOS Header files */
14 //#include <ti/drivers/I2C.h>
15 #include <ti/drivers/PIN.h>
16 #include <ti/drivers/SPI.h>
17 #include <ti/drivers/UART.h>
18 // #include <ti/drivers/Watchdog.h>
20 /* Board Header files */
21 #include "Board.h"
22 #include "uart_printf.h"
24 #define TASKSTACKSIZE 512
26 Task_Struct task0Struct;
27 Char task0Stack[TASKSTACKSIZE];
29 Task_Struct task1Struct;
30 Char task1Stack[TASKSTACKSIZE];
33 /* Pin driver handle */
34 static PIN_Handle ledPinHandle;
35 static PIN_State ledPinState;
37 /*
38 * Application LED pin configuration table:
39 * - All LEDs board LEDs are off.
40 */
42 PIN_Config ledPinTable[] = {
43 Board_LED0 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
44 Board_LED1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
45 PIN_TERMINATE
46 };
48 Void echoFxn(UArg arg0, UArg arg1)
49 {
50 uint8_t rxBufferPointer[4];
51 uint8_t txBufferPointer[4];
52 SPI_Handle spi;
53 SPI_Params spiParams;
54 SPI_Transaction spiTransaction;
56 SPI_Params_init(&spiParams);
57 // Slave mode
58 spiParams.mode = SPI_SLAVE;
59 spiParams.bitRate = 500000;
60 spiParams.frameFormat = SPI_POL1_PHA1;
61 // params.transferMode = SPI_MODE_CALLBACK;
62 //spiParams.transferCallbackFxn = spi_tx_call;
64 spi=SPI_open(Board_SPI1,&spiParams);
65 if(!spi){
66 System_printf("SPI did not open");
67 }
68 System_printf("SPI-Slave Open\r\n");
70 rxBufferPointer[0]='*';
71 while(1) {
73 spiTransaction.rxBuf= rxBufferPointer;
74 spiTransaction.txBuf = txBufferPointer;
75 spiTransaction.count=1;
77 PIN_setOutputValue(ledPinHandle, Board_LEDG,!PIN_getOutputValue(Board_LEDG));
78 if (SPI_transfer(spi,&spiTransaction)) {
80 txBufferPointer[0]=rxBufferPointer[0];
81 System_printf("RxData: %x TxData: %x\r\n",rxBufferPointer[0],txBufferPointer[0]);
83 }
86 }
88 /* Deinitialized I2C */
89 SPI_close(spi);
90 }
93 /*
94 * ======== heartBeatFxn ========
95 * Toggle the Board_LED0. The Task_sleep is determined by arg0 which
96 * is configured for the heartBeat Task instance.
97 */
98 Void heartBeatFxn(UArg arg0, UArg arg1)
99 {
100 while (1) {
101 Task_sleep((UInt)arg0);
102 //PIN_setOutputValue(ledPinHandle, Board_LEDG,!PIN_getOutputValue(Board_LEDG));
103 //PIN_setOutputValue(ledPinHandle, Board_LEDR,!PIN_getOutputValue(Board_LEDR));
104 }
105 }
107 /*
108 * ======== main ========
109 */
110 int main(void)
111 {
112 Task_Params taskParams;
114 /* Call board init functions */
115 Board_initGeneral();
116 Board_initSPI();
117 // Board_initI2C();
118 // Board_initUART();
119 // Board_initWatchdog();
121 /* Init UART for System_printf()*/
122 UART_Params uartParams;
123 UART_Params_init(&uartParams);
124 uartParams.baudRate = 115200;
125 UartPrintf_init(UART_open(Board_UART, &uartParams));
126 System_printf("Uart open\r\n");
128 /* Construct heartBeat Task thread */
129 Task_Params_init(&taskParams);
130 taskParams.arg0 = 200000 / Clock_tickPeriod;
131 taskParams.stackSize = TASKSTACKSIZE;
132 taskParams.stack = &task0Stack;
133 Task_construct(&task0Struct, (Task_FuncPtr)heartBeatFxn, &taskParams, NULL);
135 /* Construct SPI Echo Task thread */
136 Task_Params_init(&taskParams);
137 taskParams.arg0 = 0;
138 taskParams.stackSize = TASKSTACKSIZE;
139 taskParams.stack = &task1Stack;
140 Task_construct(&task1Struct, (Task_FuncPtr)echoFxn, &taskParams, NULL);
142 /* Open LED pins */
143 ledPinHandle = PIN_open(&ledPinState, ledPinTable);
144 if(!ledPinHandle) {
145 System_abort("Error initializing board LED pins\n");
146 }
148 PIN_setOutputValue(ledPinHandle, Board_LED0, 0);
149 PIN_setOutputValue(ledPinHandle, Board_LED1, 0);
151 /* Start BIOS */
152 BIOS_start();
154 return (0);
155 }