LibDriver LLCC68  1.0.0
LLCC68 full-featured driver
driver_llcc68.h
Go to the documentation of this file.
1 
37 #ifndef DRIVER_LLCC68_H
38 #define DRIVER_LLCC68_H
39 
40 #include <stdio.h>
41 #include <stdint.h>
42 #include <string.h>
43 
44 #ifdef __cplusplus
45 extern "C"{
46 #endif
47 
62 typedef enum
63 {
67 
71 typedef enum
72 {
76 
80 typedef enum
81 {
85 
89 typedef enum
90 {
94 
98 typedef enum
99 {
108 
112 typedef enum
113 {
114  LLCC68_IRQ_TX_DONE = (1 << 0),
115  LLCC68_IRQ_RX_DONE = (1 << 1),
120  LLCC68_IRQ_CRC_ERR = (1 << 6),
121  LLCC68_IRQ_CAD_DONE = (1 << 7),
123  LLCC68_IRQ_TIMEOUT = (1 << 9),
124 } llcc68_irq_t;
125 
129 typedef enum
130 {
135 
139 typedef enum
140 {
150 
154 typedef enum
155 {
159 
163 typedef enum
164 {
174 
178 typedef enum
179 {
186 
190 typedef enum
191 {
214 
218 typedef enum
219 {
228 
232 typedef enum
233 {
238 
242 typedef enum
243 {
249 
253 typedef enum
254 {
261 
265 typedef enum
266 {
271 
275 typedef enum
276 {
282 
286 typedef enum
287 {
294 
298 typedef enum
299 {
303 
307 typedef enum
308 {
312 
316 typedef enum
317 {
324 
328 typedef enum
329 {
336 
340 typedef enum
341 {
351 
355 typedef enum
356 {
366 
370 typedef struct llcc68_handle_s
371 {
372  uint8_t (*reset_gpio_init)(void);
373  uint8_t (*reset_gpio_deinit)(void);
374  uint8_t (*reset_gpio_write)(uint8_t value);
375  uint8_t (*busy_gpio_init)(void);
376  uint8_t (*busy_gpio_deinit)(void);
377  uint8_t (*busy_gpio_read)(uint8_t *value);
378  uint8_t (*spi_init)(void);
379  uint8_t (*spi_deinit)(void);
380  uint8_t (*spi_write_read)(uint8_t *in_buf, uint32_t in_len,
381  uint8_t *out_buf, uint32_t out_len);
382  void (*delay_ms)(uint32_t ms);
383  void (*debug_print)(const char *const fmt, ...);
384  void (*receive_callback)(uint16_t type,
385  uint8_t *buf, uint16_t len);
386  uint8_t inited;
387  uint8_t tx_done;
388  uint8_t cad_done;
389  uint8_t cad_detected;
390  uint8_t crc_error;
391  uint8_t timeout;
392  uint8_t buf[384];
393  uint8_t receive_buf[256];
395 
399 typedef struct llcc68_info_s
400 {
401  char chip_name[32];
402  char manufacturer_name[32];
403  char interface[8];
409  uint32_t driver_version;
411 
429 #define DRIVER_LLCC68_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
430 
437 #define DRIVER_LLCC68_LINK_SPI_INIT(HANDLE, FUC) (HANDLE)->spi_init = FUC
438 
445 #define DRIVER_LLCC68_LINK_SPI_DEINIT(HANDLE, FUC) (HANDLE)->spi_deinit = FUC
446 
453 #define DRIVER_LLCC68_LINK_SPI_WRITE_READ(HANDLE, FUC) (HANDLE)->spi_write_read = FUC
454 
461 #define DRIVER_LLCC68_LINK_RESET_GPIO_INIT(HANDLE, FUC) (HANDLE)->reset_gpio_init = FUC
462 
469 #define DRIVER_LLCC68_LINK_RESET_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->reset_gpio_deinit = FUC
470 
477 #define DRIVER_LLCC68_LINK_RESET_GPIO_WRITE(HANDLE, FUC) (HANDLE)->reset_gpio_write = FUC
478 
485 #define DRIVER_LLCC68_LINK_BUSY_GPIO_INIT(HANDLE, FUC) (HANDLE)->busy_gpio_init = FUC
486 
493 #define DRIVER_LLCC68_LINK_BUSY_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->busy_gpio_deinit = FUC
494 
501 #define DRIVER_LLCC68_LINK_BUSY_GPIO_READ(HANDLE, FUC) (HANDLE)->busy_gpio_read = FUC
502 
509 #define DRIVER_LLCC68_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
510 
517 #define DRIVER_LLCC68_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
518 
525 #define DRIVER_LLCC68_LINK_RECEIVE_CALLBACK(HANDLE, FUC) (HANDLE)->receive_callback = FUC
526 
546 uint8_t llcc68_info(llcc68_info_t *info);
547 
558 uint8_t llcc68_irq_handler(llcc68_handle_t *handle);
559 
573 uint8_t llcc68_init(llcc68_handle_t *handle);
574 
589 uint8_t llcc68_deinit(llcc68_handle_t *handle);
590 
613 uint8_t llcc68_lora_transmit(llcc68_handle_t *handle, llcc68_clock_source_t standby_src,
614  uint16_t preamble_length, llcc68_lora_header_t header_type,
615  llcc68_lora_crc_type_t crc_type, llcc68_bool_t invert_iq_enable,
616  uint8_t *buf, uint16_t len, uint32_t us);
617 
631 uint8_t llcc68_lora_cad(llcc68_handle_t *handle, llcc68_bool_t *enable);
632 
645 uint8_t llcc68_single_receive(llcc68_handle_t *handle, double us);
646 
659 
674 uint8_t llcc68_write_register(llcc68_handle_t *handle, uint16_t reg, uint8_t *buf, uint16_t len);
675 
690 uint8_t llcc68_read_register(llcc68_handle_t *handle, uint16_t reg, uint8_t *buf, uint16_t len);
691 
706 uint8_t llcc68_write_buffer(llcc68_handle_t *handle, uint8_t offset, uint8_t *buf, uint16_t len);
707 
722 uint8_t llcc68_read_buffer(llcc68_handle_t *handle, uint8_t offset, uint8_t *buf, uint16_t len);
723 
735 
749 uint8_t llcc68_set_sleep(llcc68_handle_t *handle, llcc68_start_mode_t mode, llcc68_bool_t rtc_wake_up_enable);
750 
764 
777 
790 uint8_t llcc68_set_tx(llcc68_handle_t *handle, uint32_t timeout);
791 
805 uint8_t llcc68_set_rx(llcc68_handle_t *handle, uint32_t timeout);
806 
818 uint8_t llcc68_timeout_convert_to_register(llcc68_handle_t *handle, double us, uint32_t *reg);
819 
831 uint8_t llcc68_timeout_convert_to_data(llcc68_handle_t *handle, uint32_t reg, double *us);
832 
846 
860 uint8_t llcc68_set_rx_duty_cycle(llcc68_handle_t *handle, uint32_t rx_period, uint32_t sleep_period);
861 
873 uint8_t llcc68_set_cad(llcc68_handle_t *handle);
874 
887 
900 
914 
927 uint8_t llcc68_set_calibration(llcc68_handle_t *handle, uint8_t settings);
928 
942 uint8_t llcc68_set_calibration_image(llcc68_handle_t *handle, uint8_t freq1, uint8_t freq2);
943 
957 uint8_t llcc68_set_pa_config(llcc68_handle_t *handle, uint8_t pa_duty_cycle, uint8_t hp_max);
958 
972 
988 uint8_t llcc68_set_dio_irq_params(llcc68_handle_t *handle, uint16_t irq_mask, uint16_t dio1_mask,
989  uint16_t dio2_mask, uint16_t dio3_mask);
990 
1003 uint8_t llcc68_get_irq_status(llcc68_handle_t *handle, uint16_t *status);
1004 
1017 uint8_t llcc68_clear_irq_status(llcc68_handle_t *handle, uint16_t clear_irq_param);
1018 
1032 
1046 uint8_t llcc68_set_dio3_as_tcxo_ctrl(llcc68_handle_t *handle, llcc68_tcxo_voltage_t voltage, uint32_t delay);
1047 
1059 uint8_t llcc68_frequency_convert_to_register(llcc68_handle_t *handle, uint32_t freq, uint32_t *reg);
1060 
1072 uint8_t llcc68_frequency_convert_to_data(llcc68_handle_t *handle, uint32_t reg, uint32_t *freq);
1073 
1086 uint8_t llcc68_set_rf_frequency(llcc68_handle_t *handle, uint32_t reg);
1087 
1101 
1115 
1129 uint8_t llcc68_set_tx_params(llcc68_handle_t *handle, int8_t dbm, llcc68_ramp_time_t t);
1130 
1147  llcc68_gfsk_bandwidth_t bw, uint32_t fdev);
1148 
1160 uint8_t llcc68_gfsk_bit_rate_convert_to_register(llcc68_handle_t *handle, uint32_t br, uint32_t *reg);
1161 
1173 uint8_t llcc68_gfsk_bit_rate_convert_to_data(llcc68_handle_t *handle, uint32_t reg, uint32_t *br);
1174 
1186 uint8_t llcc68_gfsk_frequency_deviation_convert_to_register(llcc68_handle_t *handle, uint32_t freq, uint32_t *reg);
1187 
1199 uint8_t llcc68_gfsk_frequency_deviation_convert_to_data(llcc68_handle_t *handle, uint32_t reg, uint32_t *freq);
1200 
1217  llcc68_lora_cr_t cr, llcc68_bool_t low_data_rate_optimize_enable);
1218 
1239 uint8_t llcc68_set_gfsk_packet_params(llcc68_handle_t *handle, uint16_t preamble_length,
1241  uint8_t sync_word_length, llcc68_gfsk_addr_filter_t filter,
1242  llcc68_gfsk_packet_type_t packet_type, uint8_t payload_length,
1243  llcc68_gfsk_crc_type_t crc_type, llcc68_bool_t whitening_enable);
1244 
1261 uint8_t llcc68_set_lora_packet_params(llcc68_handle_t *handle, uint16_t preamble_length,
1262  llcc68_lora_header_t header_type, uint8_t payload_length,
1263  llcc68_lora_crc_type_t crc_type, llcc68_bool_t invert_iq_enable);
1264 
1282  uint8_t cad_det_peak, uint8_t cad_det_min, llcc68_lora_cad_exit_mode_t mode,
1283  uint32_t timeout);
1284 
1298 uint8_t llcc68_set_buffer_base_address(llcc68_handle_t *handle, uint8_t tx_base_addr, uint8_t rx_base_addr);
1299 
1312 uint8_t llcc68_set_lora_symb_num_timeout(llcc68_handle_t *handle, uint8_t symb_num);
1313 
1326 uint8_t llcc68_get_status(llcc68_handle_t *handle, uint8_t *status);
1327 
1341 uint8_t llcc68_get_rx_buffer_status(llcc68_handle_t *handle, uint8_t *payload_length_rx, uint8_t *rx_start_buffer_pointer);
1342 
1359 uint8_t llcc68_get_gfsk_packet_status(llcc68_handle_t *handle, uint8_t *rx_status, uint8_t *rssi_sync_raw,
1360  uint8_t *rssi_avg_raw, float *rssi_sync, float *rssi_avg);
1361 
1379 uint8_t llcc68_get_lora_packet_status(llcc68_handle_t *handle, uint8_t *rssi_pkt_raw, uint8_t *snr_pkt_raw,
1380  uint8_t *signal_rssi_pkt_raw, float *rssi_pkt, float *snr_pkt, float *signal_rssi_pkt);
1381 
1395 uint8_t llcc68_get_instantaneous_rssi(llcc68_handle_t *handle, uint8_t *rssi_inst_raw, float *rssi_inst);
1396 
1411 uint8_t llcc68_get_stats(llcc68_handle_t *handle, uint16_t *pkt_received, uint16_t *pkt_crc_error, uint16_t *pkt_length_header_error);
1412 
1427 uint8_t llcc68_reset_stats(llcc68_handle_t *handle, uint16_t pkt_received, uint16_t pkt_crc_error, uint16_t pkt_length_header_error);
1428 
1441 uint8_t llcc68_get_device_errors(llcc68_handle_t *handle, uint16_t *op_error);
1442 
1455 
1479 uint8_t llcc68_set_fsk_whitening_initial_value(llcc68_handle_t *handle, uint16_t value);
1480 
1493 uint8_t llcc68_get_fsk_whitening_initial_value(llcc68_handle_t *handle, uint16_t *value);
1494 
1507 uint8_t llcc68_set_fsk_crc_initical_value(llcc68_handle_t *handle, uint16_t value);
1508 
1521 uint8_t llcc68_get_fsk_crc_initical_value(llcc68_handle_t *handle, uint16_t *value);
1522 
1535 uint8_t llcc68_set_fsk_crc_polynomial_value(llcc68_handle_t *handle, uint16_t value);
1536 
1549 uint8_t llcc68_get_fsk_crc_polynomial_value(llcc68_handle_t *handle, uint16_t *value);
1550 
1563 uint8_t llcc68_set_fsk_sync_word(llcc68_handle_t *handle, uint8_t sync_word[8]);
1564 
1577 uint8_t llcc68_get_fsk_sync_word(llcc68_handle_t *handle, uint8_t sync_word[8]);
1578 
1591 uint8_t llcc68_set_fsk_node_address(llcc68_handle_t *handle, uint8_t addr);
1592 
1605 uint8_t llcc68_get_fsk_node_address(llcc68_handle_t *handle, uint8_t *addr);
1606 
1619 uint8_t llcc68_set_fsk_broadcast_address(llcc68_handle_t *handle, uint8_t addr);
1620 
1633 uint8_t llcc68_get_fsk_broadcast_address(llcc68_handle_t *handle, uint8_t *addr);
1634 
1647 uint8_t llcc68_set_iq_polarity(llcc68_handle_t *handle, uint8_t setup);
1648 
1661 uint8_t llcc68_get_iq_polarity(llcc68_handle_t *handle, uint8_t *setup);
1662 
1675 uint8_t llcc68_set_lora_sync_word(llcc68_handle_t *handle, uint16_t sync_word);
1676 
1689 uint8_t llcc68_get_lora_sync_word(llcc68_handle_t *handle, uint16_t *sync_word);
1690 
1703 uint8_t llcc68_get_random_number(llcc68_handle_t *handle, uint32_t *r);
1704 
1717 uint8_t llcc68_set_tx_modulation(llcc68_handle_t *handle, uint8_t modulation);
1718 
1731 uint8_t llcc68_get_tx_modulation(llcc68_handle_t *handle, uint8_t *modulation);
1732 
1745 uint8_t llcc68_set_rx_gain(llcc68_handle_t *handle, uint8_t gain);
1746 
1759 uint8_t llcc68_get_rx_gain(llcc68_handle_t *handle, uint8_t *gain);
1760 
1773 uint8_t llcc68_set_tx_clamp_config(llcc68_handle_t *handle, uint8_t config);
1774 
1787 uint8_t llcc68_get_tx_clamp_config(llcc68_handle_t *handle, uint8_t *config);
1788 
1801 uint8_t llcc68_set_ocp(llcc68_handle_t *handle, uint8_t ocp);
1802 
1815 uint8_t llcc68_get_ocp(llcc68_handle_t *handle, uint8_t *ocp);
1816 
1829 uint8_t llcc68_set_rtc_control(llcc68_handle_t *handle, uint8_t control);
1830 
1843 uint8_t llcc68_get_rtc_control(llcc68_handle_t *handle, uint8_t *control);
1844 
1857 uint8_t llcc68_set_xta_trim(llcc68_handle_t *handle, uint8_t trim);
1858 
1871 uint8_t llcc68_get_xta_trim(llcc68_handle_t *handle, uint8_t *trim);
1872 
1885 uint8_t llcc68_set_xtb_trim(llcc68_handle_t *handle, uint8_t trim);
1886 
1899 uint8_t llcc68_get_xtb_trim(llcc68_handle_t *handle, uint8_t *trim);
1900 
1913 uint8_t llcc68_set_dio3_output_control(llcc68_handle_t *handle, uint8_t control);
1914 
1927 uint8_t llcc68_get_dio3_output_control(llcc68_handle_t *handle, uint8_t *control);
1928 
1941 uint8_t llcc68_set_event_mask(llcc68_handle_t *handle, uint8_t mask);
1942 
1955 uint8_t llcc68_get_event_mask(llcc68_handle_t *handle, uint8_t *mask);
1956 
1969 uint8_t llcc68_set_dio_output_enable(llcc68_handle_t *handle, uint8_t enable);
1970 
1983 uint8_t llcc68_get_dio_output_enable(llcc68_handle_t *handle, uint8_t *enable);
1984 
1997 uint8_t llcc68_set_dio_input_enable(llcc68_handle_t *handle, uint8_t enable);
1998 
2011 uint8_t llcc68_get_dio_input_enable(llcc68_handle_t *handle, uint8_t *enable);
2012 
2025 uint8_t llcc68_set_pull_up_control(llcc68_handle_t *handle, uint8_t control);
2026 
2039 uint8_t llcc68_get_pull_up_control(llcc68_handle_t *handle, uint8_t *control);
2040 
2053 uint8_t llcc68_set_pull_down_control(llcc68_handle_t *handle, uint8_t control);
2054 
2067 uint8_t llcc68_get_pull_down_control(llcc68_handle_t *handle, uint8_t *control);
2068 
2094 uint8_t llcc68_write_read_reg(llcc68_handle_t *handle, uint8_t *in_buf, uint32_t in_len,
2095  uint8_t *out_buf, uint32_t out_len);
2096 
2105 #ifdef __cplusplus
2106 }
2107 #endif
2108 
2109 #endif
llcc68_lora_crc_type_t
llcc68 lora crc type enumeration definition
uint8_t llcc68_irq_handler(llcc68_handle_t *handle)
irq handler
llcc68_lora_bandwidth_t
llcc68 lora bandwidth enumeration definition
llcc68_bool_t
llcc68 bool enumeration definition
Definition: driver_llcc68.h:63
llcc68_gfsk_packet_type_t
llcc68 gfsk packet type enumeration definition
llcc68_clock_source_t
llcc68 clock source enumeration definition
Definition: driver_llcc68.h:81
uint8_t llcc68_set_rf_frequency(llcc68_handle_t *handle, uint32_t reg)
set the rf frequency
uint8_t llcc68_set_lora_modulation_params(llcc68_handle_t *handle, llcc68_lora_sf_t sf, llcc68_lora_bandwidth_t bw, llcc68_lora_cr_t cr, llcc68_bool_t low_data_rate_optimize_enable)
set the modulation params in LoRa mode
uint8_t llcc68_info(llcc68_info_t *info)
get chip's information
uint8_t llcc68_set_pa_config(llcc68_handle_t *handle, uint8_t pa_duty_cycle, uint8_t hp_max)
set the pa config
uint8_t llcc68_check_packet_error(llcc68_handle_t *handle, llcc68_bool_t *enable)
check the packet error
llcc68_lora_sf_t
llcc68 lora spreading factor enumeration definition
uint8_t llcc68_clear_device_errors(llcc68_handle_t *handle)
clear the device errors
llcc68_irq_t
llcc68 irq enumeration definition
llcc68_gfsk_crc_type_t
llcc68 gfsk crc type enumeration definition
uint8_t llcc68_lora_transmit(llcc68_handle_t *handle, llcc68_clock_source_t standby_src, uint16_t preamble_length, llcc68_lora_header_t header_type, llcc68_lora_crc_type_t crc_type, llcc68_bool_t invert_iq_enable, uint8_t *buf, uint16_t len, uint32_t us)
send the lora data
uint8_t llcc68_get_lora_packet_status(llcc68_handle_t *handle, uint8_t *rssi_pkt_raw, uint8_t *snr_pkt_raw, uint8_t *signal_rssi_pkt_raw, float *rssi_pkt, float *snr_pkt, float *signal_rssi_pkt)
get the packet status in LoRa mode
uint8_t llcc68_get_gfsk_packet_status(llcc68_handle_t *handle, uint8_t *rx_status, uint8_t *rssi_sync_raw, uint8_t *rssi_avg_raw, float *rssi_sync, float *rssi_avg)
get the packet status in GFSK mode
uint8_t llcc68_get_status(llcc68_handle_t *handle, uint8_t *status)
get the status
uint8_t llcc68_gfsk_bit_rate_convert_to_register(llcc68_handle_t *handle, uint32_t br, uint32_t *reg)
convert the bit rate to the register raw data
uint8_t llcc68_clear_irq_status(llcc68_handle_t *handle, uint16_t clear_irq_param)
clear the irq status
uint8_t llcc68_get_packet_type(llcc68_handle_t *handle, llcc68_packet_type_t *type)
get the packet type
llcc68_tcxo_voltage_t
llcc68 tcxo voltage enumeration definition
uint8_t llcc68_get_instantaneous_rssi(llcc68_handle_t *handle, uint8_t *rssi_inst_raw, float *rssi_inst)
get the instantaneous rssi
struct llcc68_handle_s llcc68_handle_t
llcc68 handle structure definition
uint8_t llcc68_deinit(llcc68_handle_t *handle)
close the chip
uint8_t llcc68_write_register(llcc68_handle_t *handle, uint16_t reg, uint8_t *buf, uint16_t len)
write the register
llcc68_regulator_mode_t
llcc68 regulator mode enumeration definition
Definition: driver_llcc68.h:90
uint8_t llcc68_gfsk_bit_rate_convert_to_data(llcc68_handle_t *handle, uint32_t reg, uint32_t *br)
convert the register raw data to the bit rate
llcc68_start_mode_t
llcc68 start mode enumeration definition
Definition: driver_llcc68.h:72
uint8_t llcc68_set_gfsk_modulation_params(llcc68_handle_t *handle, uint32_t br, llcc68_gfsk_pulse_shape_t shape, llcc68_gfsk_bandwidth_t bw, uint32_t fdev)
set the modulation params in GFSK mode
uint8_t llcc68_set_rx(llcc68_handle_t *handle, uint32_t timeout)
enter to the rx mode
uint8_t llcc68_get_device_errors(llcc68_handle_t *handle, uint16_t *op_error)
get the device errors
uint8_t llcc68_single_receive(llcc68_handle_t *handle, double us)
enter to the single receive mode
uint8_t llcc68_reset_stats(llcc68_handle_t *handle, uint16_t pkt_received, uint16_t pkt_crc_error, uint16_t pkt_length_header_error)
reset the stats
llcc68_ramp_time_t
llcc68 ramp time enumeration definition
uint8_t llcc68_set_calibration_image(llcc68_handle_t *handle, uint8_t freq1, uint8_t freq2)
set the calibration image frequency
llcc68_fsk_rx_status_t
llcc68 fsk rx status enumeration definition
uint8_t llcc68_set_stop_timer_on_preamble(llcc68_handle_t *handle, llcc68_bool_t enable)
stop timer on preamble
uint8_t llcc68_set_regulator_mode(llcc68_handle_t *handle, llcc68_regulator_mode_t mode)
set the regulator_mode
llcc68_lora_cad_symbol_num_t
llcc68 lora cad symbol num enumeration definition
uint8_t llcc68_set_tx_continuous_wave(llcc68_handle_t *handle)
enter to the tx continuous wave mode
uint8_t llcc68_get_rx_buffer_status(llcc68_handle_t *handle, uint8_t *payload_length_rx, uint8_t *rx_start_buffer_pointer)
get the rx buffer status
uint8_t llcc68_timeout_convert_to_register(llcc68_handle_t *handle, double us, uint32_t *reg)
convert the timeout to the register raw data
uint8_t llcc68_set_lora_packet_params(llcc68_handle_t *handle, uint16_t preamble_length, llcc68_lora_header_t header_type, uint8_t payload_length, llcc68_lora_crc_type_t crc_type, llcc68_bool_t invert_iq_enable)
set the packet params in LoRa mode
llcc68_gfsk_preamble_detector_length_t
llcc68 gfsk preamble detector length enumeration definition
uint8_t llcc68_set_rx_tx_fallback_mode(llcc68_handle_t *handle, llcc68_rx_tx_fallback_mode_t mode)
set the rx tx fallback mode
uint8_t llcc68_set_lora_symb_num_timeout(llcc68_handle_t *handle, uint8_t symb_num)
set the lora symbol number timeout
uint8_t llcc68_set_sleep(llcc68_handle_t *handle, llcc68_start_mode_t mode, llcc68_bool_t rtc_wake_up_enable)
enter to the sleep mode
llcc68_lora_cr_t
llcc68 lora coding rate enumeration definition
uint8_t llcc68_set_dio3_as_tcxo_ctrl(llcc68_handle_t *handle, llcc68_tcxo_voltage_t voltage, uint32_t delay)
set dio3 as tcxo ctrl
uint8_t llcc68_set_tx_params(llcc68_handle_t *handle, int8_t dbm, llcc68_ramp_time_t t)
set the tx params
uint8_t llcc68_continuous_receive(llcc68_handle_t *handle)
enter to the continuous receive mode
uint8_t llcc68_set_frequency_synthesis(llcc68_handle_t *handle)
enter to the frequency synthesis mode
llcc68_calibration_t
llcc68 calibration enumeration definition
Definition: driver_llcc68.h:99
struct llcc68_info_s llcc68_info_t
llcc68 information structure definition
uint8_t llcc68_read_register(llcc68_handle_t *handle, uint16_t reg, uint8_t *buf, uint16_t len)
read the register
uint8_t llcc68_set_cad_params(llcc68_handle_t *handle, llcc68_lora_cad_symbol_num_t num, uint8_t cad_det_peak, uint8_t cad_det_min, llcc68_lora_cad_exit_mode_t mode, uint32_t timeout)
set the cad params
uint8_t llcc68_set_calibration(llcc68_handle_t *handle, uint8_t settings)
set the calibration settings
uint8_t llcc68_set_gfsk_packet_params(llcc68_handle_t *handle, uint16_t preamble_length, llcc68_gfsk_preamble_detector_length_t detector_length, uint8_t sync_word_length, llcc68_gfsk_addr_filter_t filter, llcc68_gfsk_packet_type_t packet_type, uint8_t payload_length, llcc68_gfsk_crc_type_t crc_type, llcc68_bool_t whitening_enable)
set the packet params in GFSK mode
llcc68_gfsk_bandwidth_t
llcc68 gfsk bandwidth enumeration definition
uint8_t llcc68_set_dio_irq_params(llcc68_handle_t *handle, uint16_t irq_mask, uint16_t dio1_mask, uint16_t dio2_mask, uint16_t dio3_mask)
set the dio irq params
llcc68_packet_type_t
llcc68 packet type enumeration definition
uint8_t llcc68_set_cad(llcc68_handle_t *handle)
run the cad
uint8_t llcc68_set_standby(llcc68_handle_t *handle, llcc68_clock_source_t src)
enter to the standby mode
uint8_t llcc68_set_tx_infinite_preamble(llcc68_handle_t *handle)
enter to the tx infinite preamble mode
uint8_t llcc68_gfsk_frequency_deviation_convert_to_register(llcc68_handle_t *handle, uint32_t freq, uint32_t *reg)
convert the frequency deviation to the register raw data
uint8_t llcc68_set_buffer_base_address(llcc68_handle_t *handle, uint8_t tx_base_addr, uint8_t rx_base_addr)
set the buffer base address
uint8_t llcc68_get_irq_status(llcc68_handle_t *handle, uint16_t *status)
get the irq status
uint8_t llcc68_timeout_convert_to_data(llcc68_handle_t *handle, uint32_t reg, double *us)
convert the register raw data to the timeout
uint8_t llcc68_get_stats(llcc68_handle_t *handle, uint16_t *pkt_received, uint16_t *pkt_crc_error, uint16_t *pkt_length_header_error)
get the stats
llcc68_op_error_t
llcc68 op error enumeration definition
llcc68_gfsk_addr_filter_t
llcc68 gfsk addr filter enumeration definition
llcc68_lora_header_t
llcc68 lora header enumeration definition
uint8_t llcc68_frequency_convert_to_register(llcc68_handle_t *handle, uint32_t freq, uint32_t *reg)
convert the frequency to the register raw data
llcc68_gfsk_pulse_shape_t
llcc68 gfsk pulse shape enumeration definition
llcc68_rx_tx_fallback_mode_t
llcc68 rx tx fallback mode enumeration definition
uint8_t llcc68_write_buffer(llcc68_handle_t *handle, uint8_t offset, uint8_t *buf, uint16_t len)
write the buffer
uint8_t llcc68_frequency_convert_to_data(llcc68_handle_t *handle, uint32_t reg, uint32_t *freq)
convert the register raw data to the frequency
uint8_t llcc68_lora_cad(llcc68_handle_t *handle, llcc68_bool_t *enable)
run the cad
uint8_t llcc68_set_dio2_as_rf_switch_ctrl(llcc68_handle_t *handle, llcc68_bool_t enable)
set dio2 as rf switch ctrl
uint8_t llcc68_read_buffer(llcc68_handle_t *handle, uint8_t offset, uint8_t *buf, uint16_t len)
read the buffer
uint8_t llcc68_set_rx_duty_cycle(llcc68_handle_t *handle, uint32_t rx_period, uint32_t sleep_period)
set the rx duty cycle
uint8_t llcc68_set_tx(llcc68_handle_t *handle, uint32_t timeout)
enter to the tx mode
uint8_t llcc68_set_packet_type(llcc68_handle_t *handle, llcc68_packet_type_t type)
set the packet type
llcc68_lora_cad_exit_mode_t
llcc68 lora cad exit mode enumeration definition
uint8_t llcc68_init(llcc68_handle_t *handle)
initialize the chip
uint8_t llcc68_gfsk_frequency_deviation_convert_to_data(llcc68_handle_t *handle, uint32_t reg, uint32_t *freq)
convert the register raw data to the frequency deviation
@ LLCC68_LORA_CRC_TYPE_OFF
@ LLCC68_LORA_CRC_TYPE_ON
@ LLCC68_LORA_BANDWIDTH_500_KHZ
@ LLCC68_LORA_BANDWIDTH_125_KHZ
@ LLCC68_LORA_BANDWIDTH_250_KHZ
@ LLCC68_BOOL_TRUE
Definition: driver_llcc68.h:65
@ LLCC68_BOOL_FALSE
Definition: driver_llcc68.h:64
@ LLCC68_GFSK_PACKET_TYPE_KNOWN_LENGTH
@ LLCC68_GFSK_PACKET_TYPE_VARIABLE_SIZE
@ LLCC68_CLOCK_SOURCE_RC_13M
Definition: driver_llcc68.h:82
@ LLCC68_CLOCK_SOURCE_XTAL_32MHZ
Definition: driver_llcc68.h:83
@ LLCC68_LORA_SF_7
@ LLCC68_LORA_SF_9
@ LLCC68_LORA_SF_11
@ LLCC68_LORA_SF_8
@ LLCC68_LORA_SF_10
@ LLCC68_LORA_SF_5
@ LLCC68_LORA_SF_6
@ LLCC68_IRQ_PREAMBLE_DETECTED
@ LLCC68_IRQ_TX_DONE
@ LLCC68_IRQ_HEADER_ERR
@ LLCC68_IRQ_CRC_ERR
@ LLCC68_IRQ_RX_DONE
@ LLCC68_IRQ_CAD_DETECTED
@ LLCC68_IRQ_HEADER_VALID
@ LLCC68_IRQ_TIMEOUT
@ LLCC68_IRQ_SYNC_WORD_VALID
@ LLCC68_IRQ_CAD_DONE
@ LLCC68_GFSK_CRC_TYPE_1_BYTE_INV
@ LLCC68_GFSK_CRC_TYPE_2_BYTE_INV
@ LLCC68_GFSK_CRC_TYPE_1_BYTE
@ LLCC68_GFSK_CRC_TYPE_OFF
@ LLCC68_GFSK_CRC_TYPE_2_BYTE
@ LLCC68_TCXO_VOLTAGE_3P3V
@ LLCC68_TCXO_VOLTAGE_2P7V
@ LLCC68_TCXO_VOLTAGE_3P0V
@ LLCC68_TCXO_VOLTAGE_1P6V
@ LLCC68_TCXO_VOLTAGE_1P7V
@ LLCC68_TCXO_VOLTAGE_1P8V
@ LLCC68_TCXO_VOLTAGE_2P4V
@ LLCC68_TCXO_VOLTAGE_2P2V
@ LLCC68_REGULATOR_MODE_ONLY_LDO
Definition: driver_llcc68.h:91
@ LLCC68_REGULATOR_MODE_DC_DC_LDO
Definition: driver_llcc68.h:92
@ LLCC68_START_MODE_COLD
Definition: driver_llcc68.h:73
@ LLCC68_START_MODE_WARM
Definition: driver_llcc68.h:74
@ LLCC68_RAMP_TIME_10US
@ LLCC68_RAMP_TIME_80US
@ LLCC68_RAMP_TIME_20US
@ LLCC68_RAMP_TIME_40US
@ LLCC68_RAMP_TIME_1700US
@ LLCC68_RAMP_TIME_800US
@ LLCC68_RAMP_TIME_3400US
@ LLCC68_RAMP_TIME_200US
@ LLCC68_FSK_RX_STATUS_PKT_RECEIVED
@ LLCC68_FSK_RX_STATUS_ADDR_ERR
@ LLCC68_FSK_RX_STATUS_LENGTH_ERR
@ LLCC68_FSK_RX_STATUS_ABORT_ERR
@ LLCC68_FSK_RX_STATUS_CRC_ERR
@ LLCC68_FSK_RX_STATUS_PKT_SEND
@ LLCC68_FSK_RX_STATUS_PREAMBLE_ERR
@ LLCC68_FSK_RX_STATUS_SYNC_ERR
@ LLCC68_LORA_CAD_SYMBOL_NUM_4
@ LLCC68_LORA_CAD_SYMBOL_NUM_2
@ LLCC68_LORA_CAD_SYMBOL_NUM_8
@ LLCC68_LORA_CAD_SYMBOL_NUM_16
@ LLCC68_LORA_CAD_SYMBOL_NUM_1
@ LLCC68_GFSK_PREAMBLE_DETECTOR_LENGTH_24_BITS
@ LLCC68_GFSK_PREAMBLE_DETECTOR_LENGTH_16_BITS
@ LLCC68_GFSK_PREAMBLE_DETECTOR_LENGTH_32_BITS
@ LLCC68_GFSK_PREAMBLE_DETECTOR_LENGTH_8_BITS
@ LLCC68_GFSK_PREAMBLE_DETECTOR_LENGTH_OFF
@ LLCC68_LORA_CR_4_7
@ LLCC68_LORA_CR_4_5
@ LLCC68_LORA_CR_4_6
@ LLCC68_LORA_CR_4_8
@ LLCC68_CALIBRATION_ADC_BULK_P
@ LLCC68_CALIBRATION_PLL
@ LLCC68_CALIBRATION_IMAGE
@ LLCC68_CALIBRATION_ADC_BULK_N
@ LLCC68_CALIBRATION_RC13M
@ LLCC68_CALIBRATION_RC64K
@ LLCC68_CALIBRATION_ADC_PULSE
@ LLCC68_GFSK_BANDWIDTH_312_KHZ
@ LLCC68_GFSK_BANDWIDTH_93P8_KHZ
@ LLCC68_GFSK_BANDWIDTH_29P3_KHZ
@ LLCC68_GFSK_BANDWIDTH_156P2_KHZ
@ LLCC68_GFSK_BANDWIDTH_11P7_KHZ
@ LLCC68_GFSK_BANDWIDTH_467_KHZ
@ LLCC68_GFSK_BANDWIDTH_39_KHZ
@ LLCC68_GFSK_BANDWIDTH_373P6_KHZ
@ LLCC68_GFSK_BANDWIDTH_78P2_KHZ
@ LLCC68_GFSK_BANDWIDTH_14P6_KHZ
@ LLCC68_GFSK_BANDWIDTH_7P3_KHZ
@ LLCC68_GFSK_BANDWIDTH_58P6_KHZ
@ LLCC68_GFSK_BANDWIDTH_46P9_KHZ
@ LLCC68_GFSK_BANDWIDTH_9P7_KHZ
@ LLCC68_GFSK_BANDWIDTH_187P2_KHZ
@ LLCC68_GFSK_BANDWIDTH_232P3_KHZ
@ LLCC68_GFSK_BANDWIDTH_117P3_KHZ
@ LLCC68_GFSK_BANDWIDTH_19P5_KHZ
@ LLCC68_GFSK_BANDWIDTH_5P8_KHZ
@ LLCC68_GFSK_BANDWIDTH_4P8_KHZ
@ LLCC68_GFSK_BANDWIDTH_23P4_KHZ
@ LLCC68_PACKET_TYPE_LORA
@ LLCC68_PACKET_TYPE_GFSK
@ LLCC68_OP_ERROR_PLL_CALIB_ERR
@ LLCC68_OP_ERROR_PLL_LOCK_ERR
@ LLCC68_OP_ERROR_PA_RAMP_ERR
@ LLCC68_OP_ERROR_RC13M_CALIB_ERR
@ LLCC68_OP_ERROR_ADC_CALIB_ERR
@ LLCC68_OP_ERROR_RC64K_CALIB_ERR
@ LLCC68_OP_ERROR_XOSC_START_ERR
@ LLCC68_OP_ERROR_IMG_CALIB_ERR
@ LLCC68_GFSK_ADDR_FILTER_DISABLE
@ LLCC68_GFSK_ADDR_FILTER_ACTIVATED_NODE_BROADCAST_ADDR
@ LLCC68_GFSK_ADDR_FILTER_ACTIVATED_NODE_ADDR
@ LLCC68_LORA_HEADER_IMPLICIT
@ LLCC68_LORA_HEADER_EXPLICIT
@ LLCC68_GFSK_PULSE_SHAPE_GAUSSIAN_BT_0P7
@ LLCC68_GFSK_PULSE_SHAPE_NO_FILTER
@ LLCC68_GFSK_PULSE_SHAPE_GAUSSIAN_BT_0P3
@ LLCC68_GFSK_PULSE_SHAPE_GAUSSIAN_BT_1
@ LLCC68_GFSK_PULSE_SHAPE_GAUSSIAN_BT_0P5
@ LLCC68_RX_TX_FALLBACK_MODE_STDBY_RC
@ LLCC68_RX_TX_FALLBACK_MODE_STDBY_XOSC
@ LLCC68_RX_TX_FALLBACK_MODE_FS
@ LLCC68_LORA_CAD_EXIT_MODE_ONLY
@ LLCC68_LORA_CAD_EXIT_MODE_RX
uint8_t llcc68_write_read_reg(llcc68_handle_t *handle, uint8_t *in_buf, uint32_t in_len, uint8_t *out_buf, uint32_t out_len)
write and read register
uint8_t llcc68_set_dio_output_enable(llcc68_handle_t *handle, uint8_t enable)
set the dio output enable
uint8_t llcc68_get_dio_output_enable(llcc68_handle_t *handle, uint8_t *enable)
get the dio output enable
uint8_t llcc68_set_fsk_sync_word(llcc68_handle_t *handle, uint8_t sync_word[8])
set the sync word in FSK mode
uint8_t llcc68_get_fsk_broadcast_address(llcc68_handle_t *handle, uint8_t *addr)
get the broadcast address in FSK mode
uint8_t llcc68_set_xta_trim(llcc68_handle_t *handle, uint8_t trim)
set the xta trim
uint8_t llcc68_get_fsk_sync_word(llcc68_handle_t *handle, uint8_t sync_word[8])
get the sync word in FSK mode
uint8_t llcc68_set_iq_polarity(llcc68_handle_t *handle, uint8_t setup)
set the iq polarity
uint8_t llcc68_set_lora_sync_word(llcc68_handle_t *handle, uint16_t sync_word)
set the lora sync word
uint8_t llcc68_get_pull_down_control(llcc68_handle_t *handle, uint8_t *control)
get the pull down control
uint8_t llcc68_set_ocp(llcc68_handle_t *handle, uint8_t ocp)
set the ocp
uint8_t llcc68_set_tx_clamp_config(llcc68_handle_t *handle, uint8_t config)
set the tx clamp config
uint8_t llcc68_get_iq_polarity(llcc68_handle_t *handle, uint8_t *setup)
get the iq polarity
uint8_t llcc68_get_fsk_crc_initical_value(llcc68_handle_t *handle, uint16_t *value)
get the crc initical value in FSK mode
uint8_t llcc68_get_event_mask(llcc68_handle_t *handle, uint8_t *mask)
get the event mask
uint8_t llcc68_get_fsk_node_address(llcc68_handle_t *handle, uint8_t *addr)
get the node address in FSK mode
uint8_t llcc68_get_rtc_control(llcc68_handle_t *handle, uint8_t *control)
get the rtc control
uint8_t llcc68_set_rx_gain(llcc68_handle_t *handle, uint8_t gain)
set the rx gain
uint8_t llcc68_get_xtb_trim(llcc68_handle_t *handle, uint8_t *trim)
get the xtb trim
uint8_t llcc68_set_rtc_control(llcc68_handle_t *handle, uint8_t control)
set the rtc control
uint8_t llcc68_get_dio3_output_control(llcc68_handle_t *handle, uint8_t *control)
get the dio3 output
uint8_t llcc68_get_dio_input_enable(llcc68_handle_t *handle, uint8_t *enable)
get the dio input enable
uint8_t llcc68_get_xta_trim(llcc68_handle_t *handle, uint8_t *trim)
get the xta trim
uint8_t llcc68_set_pull_up_control(llcc68_handle_t *handle, uint8_t control)
set the pull up control
uint8_t llcc68_set_fsk_whitening_initial_value(llcc68_handle_t *handle, uint16_t value)
set the whitening initial value in FSK mode
uint8_t llcc68_set_event_mask(llcc68_handle_t *handle, uint8_t mask)
set the event mask
uint8_t llcc68_set_dio3_output_control(llcc68_handle_t *handle, uint8_t control)
set the dio3 output
uint8_t llcc68_get_lora_sync_word(llcc68_handle_t *handle, uint16_t *sync_word)
get the lora sync word
uint8_t llcc68_get_random_number(llcc68_handle_t *handle, uint32_t *r)
get the random number
uint8_t llcc68_get_pull_up_control(llcc68_handle_t *handle, uint8_t *control)
get the pull up control
uint8_t llcc68_set_fsk_broadcast_address(llcc68_handle_t *handle, uint8_t addr)
set the broadcast address in FSK mode
uint8_t llcc68_get_rx_gain(llcc68_handle_t *handle, uint8_t *gain)
get the rx gain
uint8_t llcc68_set_fsk_crc_polynomial_value(llcc68_handle_t *handle, uint16_t value)
set the crc polynomial value in FSK mode
uint8_t llcc68_set_tx_modulation(llcc68_handle_t *handle, uint8_t modulation)
set the tx modulation
uint8_t llcc68_set_fsk_node_address(llcc68_handle_t *handle, uint8_t addr)
set the node address in FSK mode
uint8_t llcc68_set_pull_down_control(llcc68_handle_t *handle, uint8_t control)
set the pull down control
uint8_t llcc68_set_dio_input_enable(llcc68_handle_t *handle, uint8_t enable)
set the dio input enable
uint8_t llcc68_get_tx_modulation(llcc68_handle_t *handle, uint8_t *modulation)
get the tx modulation
uint8_t llcc68_set_xtb_trim(llcc68_handle_t *handle, uint8_t trim)
set the xtb trim
uint8_t llcc68_get_tx_clamp_config(llcc68_handle_t *handle, uint8_t *config)
get the tx clamp config
uint8_t llcc68_get_ocp(llcc68_handle_t *handle, uint8_t *ocp)
get the ocp
uint8_t llcc68_get_fsk_whitening_initial_value(llcc68_handle_t *handle, uint16_t *value)
get the whitening initial value in FSK mode
uint8_t llcc68_get_fsk_crc_polynomial_value(llcc68_handle_t *handle, uint16_t *value)
get the crc polynomial value in FSK mode
uint8_t llcc68_set_fsk_crc_initical_value(llcc68_handle_t *handle, uint16_t value)
set the crc initial value in FSK mode
llcc68 handle structure definition
uint8_t(* spi_write_read)(uint8_t *in_buf, uint32_t in_len, uint8_t *out_buf, uint32_t out_len)
uint8_t cad_detected
uint8_t(* spi_init)(void)
void(* delay_ms)(uint32_t ms)
uint8_t(* busy_gpio_init)(void)
void(* receive_callback)(uint16_t type, uint8_t *buf, uint16_t len)
uint8_t(* reset_gpio_deinit)(void)
void(* debug_print)(const char *const fmt,...)
uint8_t(* busy_gpio_deinit)(void)
uint8_t(* spi_deinit)(void)
uint8_t(* reset_gpio_init)(void)
uint8_t receive_buf[256]
uint8_t(* busy_gpio_read)(uint8_t *value)
uint8_t buf[384]
uint8_t(* reset_gpio_write)(uint8_t value)
llcc68 information structure definition
float temperature_max
float supply_voltage_max_v
uint32_t driver_version
float temperature_min
float max_current_ma
char manufacturer_name[32]
float supply_voltage_min_v
char interface[8]
char chip_name[32]