31 #ifndef _ESOS_PIC24_SPI_H
32 #define _ESOS_PIC24_SPI_H
62 #define DISABLE_SCK_PIN 0x1000
63 #define ENABLE_SCK_PIN 0x0000
64 #define SCK_PIN_MASK (~DISABLE_SCK_PIN)
66 #define DISABLE_SDO_PIN 0x0800
67 #define ENABLE_SDO_PIN 0x0000
68 #define SDO_PIN_MASK (~DISABLE_SDO_PIN)
70 #define SPI_MODE16_ON 0x0400
71 #define SPI_MODE8_ON 0x0000
72 #define SPI_MODE_MASK (~SPI_MODE16_ON)
74 #define SPI_SMP_ON 0x0200
75 #define SPI_SMP_OFF 0x0000
76 #define SPI_SMP_MASK (~SPI_SMP_ON)
78 #define SPI_CKE_ON 0x0100
79 #define SPI_CKE_OFF 0x0000
80 #define SPI_CKE_MASK (~SPI_CKE_ON)
82 #define SLAVE_ENABLE_ON 0x0080
83 #define SLAVE_ENABLE_OFF 0x0000
84 #define SLAVE_ENABLE_MASK (~SLAVE_ENABLE_ON)
86 #define CLK_POL_ACTIVE_LOW 0x0040
87 #define CLK_POL_ACTIVE_HIGH 0x0000
88 #define CLK_POL_ACTIVE_MASK (~CLK_POL_ACTIVE_LOW)
90 #define MASTER_ENABLE_ON 0x0020
91 #define MASTER_ENABLE_OFF 0x0000
92 #define MASTER_ENABLE_MASK (~MASTER_ENABLE_ON)
94 #define SEC_PRESCAL_1_1 0x001c
95 #define SEC_PRESCAL_2_1 0x0018
96 #define SEC_PRESCAL_3_1 0x0014
97 #define SEC_PRESCAL_4_1 0x0010
98 #define SEC_PRESCAL_5_1 0x000c
99 #define SEC_PRESCAL_6_1 0x0008
100 #define SEC_PRESCAL_7_1 0x0004
101 #define SEC_PRESCAL_8_1 0x0000
102 #define SEC_PRESCAL_MASK (~SEC_PRESCAL_1_1)
104 #define PRI_PRESCAL_1_1 0x0003
105 #define PRI_PRESCAL_4_1 0x0002
106 #define PRI_PRESCAL_16_1 0x0001
107 #define PRI_PRESCAL_64_1 0x0000
108 #define PRI_PRESCAL_MASK (~PRI_PRESCAL_1_1)
111 #define SPI_ENABLE 0x8000
112 #define SPI_DISABLE 0x0000
113 #define SPI_ENBL_DSBL_MASK (~SPI_ENABLE)
115 #define SPI_IDLE_STOP 0x2000
116 #define SPI_IDLE_CON 0x0000
117 #define SPI_IDLE_MASK (~SPI_IDLE_STOP)
119 #define SPI_RX_OVFLOW 0x0040
120 #define SPI_RX_OVFLOW_CLR 0x0000
122 #define SPI_TX_BUFFER_FULL 0x0002
123 #define SPI_TX_BUFFER_FULL_CLR (~SPI_TX_BUFFER_FULL)
125 #define SPI_RX_BUFFER_FULL 0x0001
126 #define SPI_RX_BUFFER_FULL_CLR (~SPI_RX_BUFFER_FULL)
129 #define FRAME_ENABLE_ON 0x8000
130 #define FRAME_ENABLE_OFF 0x0000
131 #define FRAME_ENABLE_MASK (~FRAME_ENABLE_ON)
133 #define FRAME_SYNC_INPUT 0x4000
134 #define FRAME_SYNC_OUTPUT 0x0000
135 #define FRAME_SYNC_MASK (~FRAME_SYNC_INPUT)
137 #define FRAME_SYNC_ACTIVE_HIGH 0x2000
138 #define FRAME_SYNC_ACTIVE_LOW 0x0000
139 #define FRAME_SYNC_POL_MASK (~FRAME_SYNC_ACTIVE_HIGH)
141 #define SPI_FRM_PULSE_FIRST_CLK 0x0002
142 #define SPI_FRM_PULSE_PREV_CLK 0x0000
143 #define SPI_FRM_PULSE_MASK (~SPI_FRM_PULSE_FIRST_CLK)
145 #define SPI_ENH_BUFF_ENABLE 0x0001
146 #define SPI_ENH_BUFF_DISABLE 0x0000
147 #define SPI_ENH_BUFF_MASK (~SPI_ENH_BUFF_ENABLE)
151 extern struct stTask __stChildTaskSPI;
152 extern uint16 __esos_spi_u16s[2];
165 #define ESOS_TASK_WAIT_ON_WRITE1SPI1(u16_d1 ) \
167 __esos_spi_u16s[0] = (uint16) (u16_d1); \
168 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskSPI, __esos_pic24_xferNSPI1, &__esos_spi_u16s[0], NULLPTR, 1 ); \
187 #define ESOS_TASK_WAIT_ON_WRITE2SPI1(u16_d1, u16_d2 ) \
189 __esos_spi_u16s[0] = (uint16) (u16_d1); \
190 __esos_spi_u16s[1] = (uint16) (u16_d2); \
191 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskSPI, __esos_pic24_xferNSPI1, &__esos_spi_u16s[0], NULLPTR, 2 ); \
205 #define ESOS_TASK_WAIT_ON_WRITENSPI1( pu16_out, u16_cnt ) \
206 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskSPI, __esos_pic24_xferNSPI1, (pu16_out), NULLPTR, (u16_cnt) )
224 #define ESOS_TASK_WAIT_ON_XFERNSPI1( pu16_out, pu16_in, u16_cnt ) \
225 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskSPI, __esos_pic24_xferNSPI1, (pu16_out), (pu16_in), (u16_cnt) )
238 #define ESOS_TASK_WAIT_ON_READ1SPI1(u16_d1 ) \
240 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskSPI, __esos_pic24_xferNSPI1, NULLPTR, &__esos_spi_u16s[0], 1 ); \
241 (u16_d1) = __esos_spi_u16s[0]; \
256 #define ESOS_TASK_WAIT_ON_READ2SPI1(u16_d1, u16_d2) \
258 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskSPI, __esos_pic24_xferNSPI1, NULLPTR, &__esos_spi_u16s[0], 2 ); \
259 (u16_d1) = __esos_spi_u16s[0]; \
260 (u16_d2) = __esos_spi_u16s[1]; \
275 #define ESOS_TASK_WAIT_ON_READNSPI1( pu16_in, u16_cnt ) \
276 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskSPI, __esos_pic24_xferNSPI1, NULLPTR, (pu16_in), (u16_cnt) )
283 #endif // end ESOS_PIC24_SPI_H