This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

there is error code -22 whe using DF,how to solve it?

I use the DF example.In Rx.i use both nrf52833 boards as test.i use NCS 1.9.1.

In rx,i use the silab's 16 antenna array for receving antenna array.

because it has 16 antennas,i modify the configuation in nrf52833dk_nrf52833.overlay file.

&radio {
	status = "okay";
	/* This is a number of antennas that are available on antenna matrix
	 * designed by Nordic. For more information see README.rst.
	 */
	/*dfe-antenna-num = <12>;*/
	dfe-antenna-num = <16>;
	/* This is a setting that enables antenna 12 (in antenna matrix designed
	 * by Nordic) for Rx PDU. For more information see README.rst.
	 */
	/*dfe-pdu-antenna = <0x2>;*/
	dfe-pdu-antenna = <0x0>;
	/* These are GPIO pin numbers that are provided to
	 * Radio peripheral. The pins will be acquired by Radio to
	 * drive antenna switching when AoA is enabled.
	 * Pin numbers are selected to drive switches on antenna matrix
	 * desinged by Nordic. For more information see README.rst.
	 */
	dfegpio0-gpios = <&gpio0 3 0>;
	dfegpio1-gpios = <&gpio0 4 0>;
	dfegpio2-gpios = <&gpio0 28 0>;
	dfegpio3-gpios = <&gpio0 29 0>;

then i change the main.c file for new antenna partterns.

#if defined(CONFIG_BT_DF_CTE_RX_AOA)
/* Example sequence of antenna switch patterns for antenna matrix designed by
 * Nordic. For more information about antenna switch patterns see README.rst.
 */
/*切换顺序,11,12,1,2,10,3,9,4,8,7,6,5  12根天线*/
/*static const uint8_t ant_patterns[] = { 0x2, 0x0, 0x5, 0x6, 0x1, 0x4,
*					0xC, 0x9, 0xE, 0xD, 0x8, 0xA };*/
/*切换顺序,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16  16根天线*/
static const uint8_t ant_patterns[] = { 0x0, 0x8, 0x4, 0xC, 0x2, 0xA, 0x6, 0xE,
					0x1, 0x9, 0x5, 0xD, 0x3, 0xB, 0x7, 0xF };
/*切换顺序,4,8,12,16,3,7,11,15,,2,,6,10,14,1,5,9,13  16根天线*/
/*static const uint8_t ant_patterns[] = { 0x2, 0x0, 0x5, 0x6, 0x4, 0x9,
*					0xA, 0x8, 0xD, 0xE, 0xC, 0x1 };*/
#endif /* CONFIG_BT_DF_CTE_RX_AOA */

then i use Putty to get Rx's output,there is error.

success. Periodic sync established.

Enable receiving of CTE...

failed (err -22)

Scan disable...Success.

Waiting for periodic sync lost...

PER_ADV_SYNC[0]: [DEVICE]: 11:8A:AF:D5:82:F4 (random), tx_power 127, RSSI -58, CTE AOA, data length 0, data:

PER_ADV_SYNC[0]: [DEVICE]: 11:8A:AF:D5:82:F4 (random), tx_power 127, RSSI -63, CTE AOA, data length 0, data:

PER_ADV_SYNC[0]: [DEVICE]: 11:8A:AF:D5:82:F4 (random), tx_power 127, RSSI -51, CTE AOA, data length 0, data:

i use the gpio 3,4,28,29,then i use logical Analyzer to musure my io.They are allways zero.

how to solve this problem?

Parents Reply Children
  • I find the procedure in main.c.but i don't change about this CTE.

    In main.c file,it is defined in static enale_cte_rx,i don't change the anythings.

    static void enable_cte_rx(void)
    {
    	int err;
    
    	const struct bt_df_per_adv_sync_cte_rx_param cte_rx_params = {
    		.max_cte_count = 5,
    #if defined(CONFIG_BT_DF_CTE_RX_AOA)
    		.cte_types = BT_DF_CTE_TYPE_ALL,
    		.slot_durations = 0x1,
    		.num_ant_ids = ARRAY_SIZE(ant_patterns),
    		.ant_ids = ant_patterns,
    #else
    		.cte_types = BT_DF_CTE_TYPE_AOD_1US | BT_DF_CTE_TYPE_AOD_2US,
    #endif /* CONFIG_BT_DF_CTE_RX_AOA */
    	};
    
    	printk("Enable receiving of CTE...\n");
    	err = bt_df_per_adv_sync_cte_rx_enable(sync, &cte_rx_params);
    	if (err) {
    		printk("failed (err %d)\n", err);
    		return;
    	}
    	printk("success. CTE receive enabled.\n");
    }

    The err code have no full explaination.can you help me?thanks.

Related