ADF7030-1 Device Drivers API Reference Manual  Alpha 0.0.1
Device Drivers for ADF7030-1 Transceiver
adf7030-1__spi.h
1 #ifndef _ADF7030_1__SPI_H_
2 #define _ADF7030_1__SPI_H_
3 
4 #include <drivers/spi/adi_spi.h>
5 #include <devices/rf/adf703x/adi_adf7030-1_reg.h>
6 
7 
22 #define ADF7030_1_SPI_BUFFER_SIZE 256u
23 #define ADF7030_1_SPI_MAX_TRX_SIZE (ADF7030_1_SPI_BUFFER_SIZE - 8u)
24 //#define ADF7030_1_SPI_MAX_TRX_SIZE 32u
25 
26 /* SPI instance and speed */
27 #define SPI_DEV_NUM 2
28 #define SPI_DEV_BITRATE 3000000
29 
30 /* CS port to which the CSN line of adf7030-1 is connected */
31 #define SPI_CS_NUM ADI_SPI2_CS3
32 
33 /* GPIO port and pin to which default interrupt pin1 of adf7030-1 is connected */
34 //P3-3 --> P0_01/GPIO01/SPI0_MOSI/SPT0_BFS or P0_15/GPIO15/SYS_WAKE0
35 //P2-10 --> P2_04/GPIO36/ADC0_VIN1
36 #define ADF703x_INT1_GPIO_PORT ADI_GPIO_PORT0
37 #define ADF703x_INT1_GPIO_PIN ADI_GPIO_PIN_15
38 
39 /* GPIO port and pin to which default interrupt pin2 of adf7030-1 is connected */
40 //P3-20 --> P1_00/GPIO16/SYS_WAKE1 or P2_08/GPIO40/ADC0_VIN5/SPI0_CS2
41 #define ADF703x_INT2_GPIO_PORT ADI_GPIO_PORT1
42 #define ADF703x_INT2_GPIO_PIN ADI_GPIO_PIN_0
43 
44 extern uint32_t ADF7030_1_SPI_PNTR[8];
45 
46 
48 typedef enum {
49  PNTR_SETUP_ADDR = 0,
50  PNTR_SRAM_ADDR = 1,
51  PNTR_MCR_LOW = 2,
52  PNTR_MCR_HIGH = 3,
53  PNTR_IRQ_CTRL_ADDR = 4,
54  PNTR_CUSTOM0_ADDR = 5, //Used for generic byte Access
55  PNTR_CUSTOM1_ADDR = 6, //Used for TX
56  PNTR_CUSTOM2_ADDR = 7
58 
60 typedef enum {
61  SPI_WRITE = 0,
62  SPI_READ = 1
64 
65 
66 typedef struct{
67  union {
68  uint8_t VALUE;
70  struct {
71  uint8_t MEM_ACC_STATUS: 1;
74  uint8_t FW_STATUS : 4;
76  uint8_t CMD_READY : 1;
80  uint8_t EXT_IRQ_STATUS: 1;
83  uint8_t SPIS_READY : 1;
86  };
87  };
89 
90 
93 /* memory command */
94 #define ADF703x_SPI_MEM_WRITE (0 << 6)
95 #define ADF703x_SPI_MEM_READ (1 << 6)
96 #define ADF703x_SPI_MEM_RANDOM (0 << 5)
97 #define ADF703x_SPI_MEM_BLOCK (1 << 5)
98 #define ADF703x_SPI_MEM_POINTER (0 << 4)
99 #define ADF703x_SPI_MEM_ADDRESS (1 << 4)
100 #define ADF703x_SPI_MEM_SHORT (0 << 3)
101 #define ADF703x_SPI_MEM_LONG (1 << 3)
102 
103 extern void thumb_aligned_memcpy( void* dest, const void* src, uint32_t bytesToCopy );
104 extern void thumb_aligned_memset( void* dest, const uint32_t val, uint32_t bytesToCopy );
105 
108 uint32_t adf7030_1__SPI_Init(
109  void
110 );
111 
112 uint32_t adf7030_1__SPI_UnInit(
113  void
114 );
115 
116 uint32_t adf7030_1__SPI_SetSpeed(
117  const uint32_t RateHz
118 );
119 
121  ADI_SPI_HANDLE hSPIDevice,
122  uint32_t * pPNTR
123 );
124 
126  ADI_SPI_HANDLE hSPIDevice,
127  uint32_t * pPNTR
128 );
129 
131  ADI_SPI_HANDLE hSPIDevice,
132  uint32_t Addr,
134  int32_t * ByteOffset
135 );
136 
138  ADI_SPI_HANDLE hSPIDevice,
139  uint32_t Addr
140 );
141 
143  ADI_SPI_HANDLE hSPIDevice,
144  uint32_t AddrIn,
145  uint32_t num_xfrs,
146  uint32_t *pDataIn
147 );
148 
150  ADI_SPI_HANDLE hSPIDevice,
151  uint32_t AddrIn,
152  uint32_t num_xfrs,
153  uint32_t * pDataOut
154 );
155 
157  ADI_SPI_HANDLE hSPIDevice,
158  uint32_t AddrIn,
159  uint32_t num_xfrs,
160  uint32_t * pDataOut,
161  uint32_t * pDataRef
162 );
163 
165  ADI_SPI_HANDLE hSPIDevice,
167  uint32_t num_xfrs,
168  uint32_t * pDataIn
169 );
170 
172  ADI_SPI_HANDLE hSPIDevice,
174  uint32_t num_xfrs,
175  uint32_t * pDataOut
176 );
177 
179  ADI_SPI_HANDLE hSPIDevice,
181  uint32_t num_xfrs,
182  uint32_t * pDataOut,
183  uint32_t * pDataRef
184 );
185 
187  ADI_SPI_HANDLE hSPIDevice,
189  uint32_t AddrIn,
190  uint32_t num_xfrs,
191  uint8_t * pDataIn
192 );
193 
195  ADI_SPI_HANDLE hSPIDevice,
197  uint32_t AddrIn,
198  uint32_t num_xfrs,
199  uint8_t * pDataOut
200 );
201 
203  ADI_SPI_HANDLE hSPIDevice,
205  uint32_t AddrIn,
206  uint32_t num_xfrs,
207  uint8_t * pDataOut,
208  uint8_t * pDataRef
209 );
210 
212  ADI_SPI_HANDLE hSPIDevice,
214  uint32_t num_xfrs,
215  uint8_t * pDataIn
216 );
217 
219  ADI_SPI_HANDLE hSPIDevice,
221  uint32_t num_xfrs,
222  uint8_t * pDataOut
223 );
224 
226  ADI_SPI_HANDLE hSPIDevice,
228  uint32_t num_xfrs,
229  uint8_t * pDataOut,
230  uint8_t * pDataRef
231 );
232 
234  ADI_SPI_HANDLE hSPIDevice,
235  uint32_t cmdOffset,
237  uint32_t Addr,
238  uint32_t nbBytes,
239  void * pDataIO,
240  void * pDataRef
241 );
242 
244  ADI_SPI_HANDLE *hSPIDevice,
245  uint32_t offset,
246  uint32_t nb_bytes,
247  uint32_t * pDataIO,
248  uint32_t * pDataRef
249 );
250 
252  ADI_SPI_HANDLE *hSPIDevice,
253  uint32_t offset,
254  uint32_t nb_bytes,
255  uint8_t * pDataIO,
256  uint8_t * pDataRef
257 );
258 
260  ADI_SPI_HANDLE *hSPIDevice,
261  uint32_t offset,
262  uint32_t nb_word,
263  uint32_t * pAddrIO,
264  uint32_t * pDataIO,
265  bool pDataIO_is_pointer
266 );
267 
268 uint32_t adf7030_1__SPI_byte_random_transaction(
269  ADI_SPI_HANDLE *hSPIDevice,
270  uint32_t offset,
271  uint32_t nb_word,
272  uint8_t * pAddrIO,
273  uint8_t * pDataIO
274 );
275  /* End of group adf7030-1__spi SPI Interface layer */ /* End of group adf7030-1 adf7030-1 Driver */
278 
279 #endif /* _ADF7030_1__SPI_H_ */
uint32_t adf7030_1__SPI_word_random_transaction(ADI_SPI_HANDLE *hSPIDevice, uint32_t offset, uint32_t nb_word, uint32_t *pAddrIO, uint32_t *pDataIO, bool pDataIO_is_pointer)
Generic SPI Random Read/Write a number of words(s) to the adf7030-1.
uint32_t adf7030_1__SPI_wr_byte_p_a(ADI_SPI_HANDLE hSPIDevice, ADI_ADF7030_1_RADIO_SPI_PNTR_TYPE pntrID, uint32_t num_xfrs, uint8_t *pDataIn)
Write a number of byte(s) from Host to memory of the adf7030-1 starting at location pointed by "pntr"...
uint32_t adf7030_1__SPI_rd_word_b_a(ADI_SPI_HANDLE hSPIDevice, uint32_t AddrIn, uint32_t num_xfrs, uint32_t *pDataOut)
Read a number of word(s) from the adf7030-1 to memory of Host Generic 32bits bloc address read from m...
uint32_t adf7030_1__SPI_word_block_transaction(ADI_SPI_HANDLE *hSPIDevice, uint32_t offset, uint32_t nb_bytes, uint32_t *pDataIO, uint32_t *pDataRef)
Generic SPI Block Read/Write a number of words(s) to the adf7030-1.
uint32_t adf7030_1__SPI_SetMMapCustomPntr0(ADI_SPI_HANDLE hSPIDevice, uint32_t Addr)
Change the SPI Radio mmap custom pointers 0 location.
uint32_t adf7030_1__SPI_GetMMapPointers(ADI_SPI_HANDLE hSPIDevice, uint32_t *pPNTR)
Get SPI Radio mmap pointers access.
uint32_t adf7030_1__SPI_rd_byte_p_a(ADI_SPI_HANDLE hSPIDevice, ADI_ADF7030_1_RADIO_SPI_PNTR_TYPE pntrID, uint32_t num_xfrs, uint8_t *pDataOut)
Read a number of bytes(s) from memory of the adf7030-1 to Host starting at location pointed by "pntr"...
uint32_t adf7030_1__SPI_rd_cmp_word_b_a(ADI_SPI_HANDLE hSPIDevice, uint32_t AddrIn, uint32_t num_xfrs, uint32_t *pDataOut, uint32_t *pDataRef)
Read & Compare a number of word(s) from the adf7030-1 to memory of Host Generic 32bits bloc address r...
uint32_t adf7030_1__SPI_SetSpeed(const uint32_t RateHz)
Change SPI Host to PHY Communication bitrate.
uint32_t adf7030_1__SPI_rd_cmp_byte_b_a(ADI_SPI_HANDLE hSPIDevice, ADI_ADF7030_1_RADIO_SPI_PNTR_TYPE pntrID, uint32_t AddrIn, uint32_t num_xfrs, uint8_t *pDataOut, uint8_t *pDataRef)
Read & Compare a number of bytes(s) from memory of the adf7030-1 to Host starting at location pointed...
uint32_t adf7030_1__SPI_rd_word_b_p(ADI_SPI_HANDLE hSPIDevice, ADI_ADF7030_1_RADIO_SPI_PNTR_TYPE pntrID, uint32_t num_xfrs, uint32_t *pDataOut)
Read a number of word(s) from memory of the adf7030-1 to Host starting at location pointed by "pntr" ...
uint32_t adf7030_1__SPI_wr_word_b_p(ADI_SPI_HANDLE hSPIDevice, ADI_ADF7030_1_RADIO_SPI_PNTR_TYPE pntrID, uint32_t num_xfrs, uint32_t *pDataIn)
Write a number of word(s) from Host to memory of the adf7030-1 starting at location pointed by "pntr"...
void adf7030_1__SPI_FindMMapPointer(ADI_SPI_HANDLE hSPIDevice, uint32_t Addr, ADI_ADF7030_1_RADIO_SPI_PNTR_TYPE *pPNTR_ID, int32_t *ByteOffset)
This function return the best Pointer id + offset for subsequent SPI transfert to the PHY "Addr" prov...
ADI_ADF7030_1_RADIO_SPI_PNTR_TYPE
uint32_t adf7030_1__SPI_rd_byte_b_a(ADI_SPI_HANDLE hSPIDevice, ADI_ADF7030_1_RADIO_SPI_PNTR_TYPE pntrID, uint32_t AddrIn, uint32_t num_xfrs, uint8_t *pDataOut)
Read a number of bytes(s) from memory of the adf7030-1 to Host starting at location pointed by "pntr"...
uint32_t adf7030_1__SPI_Block_Xfer(ADI_SPI_HANDLE hSPIDevice, uint32_t cmdOffset, ADI_ADF7030_1_RADIO_SPI_PNTR_TYPE PNTR_ID, uint32_t Addr, uint32_t nbBytes, void *pDataIO, void *pDataRef)
Generic function to read or write a number of bytes between the Host and the PHY adf703x.
uint32_t adf7030_1__SPI_UnInit(void)
Uninitializes SPI device used to communication with the adf7030-1 PHY.
uint32_t adf7030_1__SPI_rd_cmp_word_b_p(ADI_SPI_HANDLE hSPIDevice, ADI_ADF7030_1_RADIO_SPI_PNTR_TYPE pntrID, uint32_t num_xfrs, uint32_t *pDataOut, uint32_t *pDataRef)
Read & Compare a number of word(s) from memory of the adf7030-1 to Host starting at location pointed ...
uint32_t adf7030_1__SPI_wr_word_b_a(ADI_SPI_HANDLE hSPIDevice, uint32_t AddrIn, uint32_t num_xfrs, uint32_t *pDataIn)
Write a number of word(s) from Host to memory of the adf7030-1 Generic 32bits bloc address write to m...
uint32_t adf7030_1__SPI_byte_block_transaction(ADI_SPI_HANDLE *hSPIDevice, uint32_t offset, uint32_t nb_bytes, uint8_t *pDataIO, uint8_t *pDataRef)
Generic SPI Block Read/Write a number of byte(s) to the adf7030-1.
uint32_t adf7030_1__SPI_wr_byte_b_a(ADI_SPI_HANDLE hSPIDevice, ADI_ADF7030_1_RADIO_SPI_PNTR_TYPE pntrID, uint32_t AddrIn, uint32_t num_xfrs, uint8_t *pDataIn)
Write a number of byte(s) from Host to memory of the adf7030-1 starting at location pointed by "pntr"...
uint32_t adf7030_1__SPI_Init(void)
Initializes SPI device for communication with the adf7030-1 PHY.
uint32_t adf7030_1__SPI_rd_cmp_byte_p_a(ADI_SPI_HANDLE hSPIDevice, ADI_ADF7030_1_RADIO_SPI_PNTR_TYPE pntrID, uint32_t num_xfrs, uint8_t *pDataOut, uint8_t *pDataRef)
Read & Compare a number of bytes(s) from memory of the adf7030-1 to Host starting at location pointed...
uint32_t adf7030_1__SPI_SetMMapPointers(ADI_SPI_HANDLE hSPIDevice, uint32_t *pPNTR)
Set SPI Radio mmap pointers access.
ADI_ADF7030_1_RADIO_SPI_TRX_TYPE