После каждой команды проверяю NIRQ и сбрасываю его чтением статуса. Все дефайны в настроечном файле я перевел в массивы типа uint8_t*
Спойлер
status=SI_SendCommand(&RF_POWER_UP[0],7,&c_responce[0],0);if(status==SI_OK)
{
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_GPIO_PIN_CFG[0],8,&c_responce[0],8);
//--------------------------------------------------------------------
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_GLOBAL_XO_TUNE_2[0],6,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_GLOBAL_CONFIG_1[0],5,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_INT_CTL_ENABLE_2[0],6,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_FRR_CTL_A_MODE_4[0],8,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_PREAMBLE_TX_LENGTH_9[0],13,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_SYNC_CONFIG_6[0],10,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_PKT_CRC_CONFIG_12[0],16,&c_responce[0],0);
//---------------------------------------------------------------------
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_PKT_RX_THRESHOLD_12[0],16,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_PKT_FIELD_3_CRC_CONFIG_12[0],16,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_PKT_RX_FIELD_1_CRC_CONFIG_12[0],16,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_PKT_RX_FIELD_4_CRC_CONFIG_5[0],9,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_PKT_CRC_SEED_31_24_4[0],8,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_MODEM_MOD_TYPE_12[0],16,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_MODEM_FREQ_DEV_0_1[0],5,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_MODEM_TX_RAMP_DELAY_12[0],16,&c_responce[0],0);
//----------------------------------------------------------------------
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_MODEM_BCR_NCO_OFFSET_2_12[0],16,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_MODEM_AFC_LIMITER_1_3[0],7,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_MODEM_AGC_CONTROL_1[0],5,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_MODEM_AGC_WINDOW_SIZE_12[0],16,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_MODEM_RAW_CONTROL_10[0],14,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_MODEM_RAW_SEARCH2_2[0],6,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_MODEM_SPIKE_DET_2[0],6,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_MODEM_RSSI_MUTE_1[0],5,&c_responce[0],0);
//-----------------------------------------------------------------------
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_MODEM_DSA_CTRL1_5[0],9,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_MODEM_CHFLT_RX1_CHFLT_COE13_7_0_12[0],16,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_MODEM_CHFLT_RX1_CHFLT_COE1_7_0_12[0],16,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_MODEM_CHFLT_RX2_CHFLT_COE7_7_0_12[0],16,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_PA_MODE_4[0],8,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_SYNTH_PFDCP_CPFF_7[0],11,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_MATCH_VALUE_1_12[0],16,&c_responce[0],0);
if((GPIOB->IDR & NIRQ_Pin)==0) SI_SendCommand(&c_get_int_stat[0],4,&c_responce[0],8);
SI_SendCommand(&RF_FREQ_CONTROL_INTE_8[0],12,&c_responce[0],0);
//------------------------------------------------------------------------
}
Однако у меня на запрос REQUEST_DEVICE_STATE вернулись нули. При подаче питания чип сам переходит в режим READY? Или его нужно специально дергать ещё командой CHANGE_STATE. Вот тут я не могу понять.. Если он переходит в режим Ready сам, то почему на запрос о режиме я получаю 0 (в доках 0 значится как: No Change)?
О том что SPI работает корректно я сужу по осциллографу и по команде GET_PART_INFO (он возвращает 0x44,0x61 во втором и третьем байтах, где прописана модель чипа (4461). Всё верно.) Записанные значения в регистры настроек также читаются корректно. Не могу сообразить по режимам.. Как ими управлять то.? И что за режим SPI_Active_Mode такой??













