Alex_Golubev 0 20 октября, 2018 Опубликовано 20 октября, 2018 · Жалоба Привет. Можете поделится рабочем примером для cc1101? Нужен пример настройки режима PWM-ASK. Частота 433. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mcheb 0 20 октября, 2018 Опубликовано 20 октября, 2018 · Жалоба 8 hours ago, Alex_Golubev said: Привет. Можете поделится рабочем примером для cc1101? Нужен пример настройки режима PWM-ASK. Частота 433. Скачать с сайта Техаса РФ студию. Выбрать СС1101 и сохранить как сишный файл. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 25 октября, 2018 Опубликовано 25 октября, 2018 (изменено) · Жалоба Вот не знаю в чем может быть дело, вроде должно работать а не работает. Начну из далека. Хочу сделать пульт для открытия шлагбаума. Выбор пал на cc1101, но купил еще и CHJ-9921. Дождался наконец то прихода cc1101 и CHJ-9921 c али. Подключил к nrf52832 по spi, предварительно проверил SPI путем замыкания MOSI on MISO и правильность работы CS. Все работало нормально. После подключил cc1101 и тут начались проблемы, CHJ-9921 видит сигнал с пульта от шлагбаума, а cc1101 нет. Проверял выход сигнала на ножки – GDO2 осциллографом, как понимаю должен увидать на PIN – GDO2 сигнал похожий на то что выдала CHJ-9921 рис.1. А его нет. Настроил с помощью rf smart studio cc1101. Сгенерировал там код вставил в проект, но не работает. Модуляция ASK как понимаю простая азбука морзе, когда есть несущая логическая '1', когда нет логический '0'. Пробовал подключал китайский приемник CHJ-9921, он кажет сигнал на выходе рис.1. Посмотрел сигнал на SPI, тоже все нормально рис.2. Смотрел на ножках SCLK и SI. Сигнал SC есть проверял. Прикрепил схему по которой подключал cc1101. Вот последней код: void halRfWriteReg(uint8_t reg, uint8_t value) { uint8_t buf[2]; buf[0] = reg; buf[1] = value; spi_xfer_done = false; nrf_drv_spi_transfer(&spi, buf, 2, NULL, 0); while (!spi_xfer_done) { __WFE(); } } uint8_t SpiReadRegister (uint8_t reg) { uint8_t buf[2]; buf[0] = reg; buf[1] = 0; spi_xfer_done = false; nrf_drv_spi_transfer(&spi, buf, 2, buf, 2); while (!spi_xfer_done) { __WFE(); } return(buf[1]); } void init_RF(void) { ItStatus1 = SpiReadRegister(0xf1); halRfWriteReg(IOCFG2,0x0d); //GDO0 Output Pin Configuration //ItStatus1 = SpiReadRegister(IOCFG2); halRfWriteReg(FIFOTHR,0x07); //RX FIFO and TX FIFO Thresholds halRfWriteReg(SYNC1,0x00); //Sync Word, High Byte halRfWriteReg(SYNC0,0x00); //Sync Word, Low Byte halRfWriteReg(PKTLEN,0x00); //Packet Length halRfWriteReg(PKTCTRL0,0x32);//Packet Automation Control halRfWriteReg(FSCTRL1,0x06); //Frequency Synthesizer Control halRfWriteReg(FSCTRL0,0x00); halRfWriteReg(FREQ2,0x10); //Frequency Control Word, High Byte halRfWriteReg(FREQ1,0xB0); //Frequency Control Word, Middle Byte halRfWriteReg(FREQ0,0x71); //Frequency Control Word, Low Byte halRfWriteReg(MDMCFG4,0xAC); //Modem Configuration halRfWriteReg(MDMCFG3,0x22); //Modem Configuration halRfWriteReg(MDMCFG2,0x30); //Modem Configuration halRfWriteReg(MDMCFG1,0x22); halRfWriteReg(MDMCFG0,0xF8); halRfWriteReg(DEVIATN,0x40); //Modem Deviation Setting halRfWriteReg(MCSM2,0x07); //Main Radio Control State Machine Configuration halRfWriteReg(MCSM1,0x30); //Main Radio Control State Machine Configuration halRfWriteReg(MCSM0,0x18); //Main Radio Control State Machine Configuration halRfWriteReg(FOCCFG,0x16); //Frequency Offset Compensation Configuration halRfWriteReg(AGCCTRL2,0x04);//AGC Control halRfWriteReg(AGCCTRL1,0x00);//AGC Control halRfWriteReg(AGCCTRL0,0x92);//AGC Control halRfWriteReg(WORCTRL,0xFB); //Wake On Radio Control halRfWriteReg(FREND1,0xB6); //Front End TX Configuration halRfWriteReg(FREND0,0x11); //Front End TX Configuration halRfWriteReg(FSCAL3,0xE9); //Frequency Synthesizer Calibration halRfWriteReg(FSCAL2,0x2A); //Frequency Synthesizer Calibration halRfWriteReg(FSCAL1,0x00); //Frequency Synthesizer Calibration halRfWriteReg(FSCAL0,0x1F); //Frequency Synthesizer Calibration halRfWriteReg(TEST2,0x81); //Various Test Settings halRfWriteReg(TEST1,0x35); //Various Test Settings halRfWriteReg(TEST0,0x09); //Various Test Settings } Может, кто подскажет куда копать? Изменено 25 октября, 2018 пользователем Alex_Golubev Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mcheb 0 25 октября, 2018 Опубликовано 25 октября, 2018 · Жалоба как-так работает void CC1101_select(void) //=39 (1MHz, from SPWD) { CC1101_CS(0); while (CC1101_MISO() != 0); } void CC1101_deselect(void) { CC1101_MOSI(0); CC1101_CS(1); } // Send 1 byte over SPI to CC1101 uint8_t CC1101_rw_byte(uint8_t byte) { uint8_t i,value = 0; for(i=0; i<8; i++) { value <<= 1; if(byte & 0x80) CC1101_MOSI(1) ; else CC1101_MOSI(0); CC1101_SCK(1); byte <<= 1; if(CC1101_MISO()) value |= 1; CC1101_SCK(0); } return value; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 25 октября, 2018 Опубликовано 25 октября, 2018 · Жалоба А почему программный SPI ? Аппаратный не подошел ? Почему вы ждете ? while (CC1101_MISO() != 0); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mcheb 0 25 октября, 2018 Опубликовано 25 октября, 2018 · Жалоба Провода длинные. В соответствии с даташитом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 25 октября, 2018 Опубликовано 25 октября, 2018 · Жалоба Прям открытие для меня какое то. А на какой вы странице в даташите прочитали, что нужно ждать логического нуля на MISO? Мне бы хотелось посмотреть временные диаграммы работы SPI в связки с cc1101. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mcheb 0 25 октября, 2018 Опубликовано 25 октября, 2018 · Жалоба Это означает, что кварц 26МГц застабилизировался. 10.1 Chip Status Byte When the header byte, data byte, or command strobe is sent on the SPI interface, the chip status byte is sent by the CC1101 on the SO pin. The status byte contains key status signals, useful for the MCU. The first bit, s7, is the CHIP_RDYn signal and this signal must go low before the first positive edge of SCLK. The CHIP_RDYn signal indicates that the crystal is running. Bits 6, 5, and 4 comprise the STATE value. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rx3apf 0 25 октября, 2018 Опубликовано 25 октября, 2018 · Жалоба Хочу, кстати, предупредить - если PO_TIMEOUT будет установлен в 0 (минимальная задержка до появления готовности), могут быть совершенно непредсказуемые проблемы при подъеме из powerdown. В CC1101 против CC1100 что-то с этим намудрили, и наступить на это было очень неприятно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 31 октября, 2018 Опубликовано 31 октября, 2018 (изменено) · Жалоба Хочу уточнить. Нужно ждать на MISO перехода в нуль при установки cs в нуль? Изменено 31 октября, 2018 пользователем Alex_Golubev Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mcheb 0 31 октября, 2018 Опубликовано 31 октября, 2018 · Жалоба 3 hours ago, Alex_Golubev said: Хочу уточнить. Нужно ждать на MISO перехода в нуль при установки cs в нуль? 10.1 Chip Status Byte When the header byte, data byte, or command strobe is sent on the SPI interface, the chip status byte is sent by the CC1101 on the SO pin. The status byte contains key status signals, useful for the MCU. The first bit, s7, is the CHIP_RDYn signal and this signal must go low before the first positive edge of SCLK. The CHIP_RDYn signal indicates that the crystal is running. Bits 6, 5, and 4 comprise the STATE value. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 31 октября, 2018 Опубликовано 31 октября, 2018 (изменено) · Жалоба Вроде уже все правильно сделал но все равно не работает зараза. На выходе GOD2 меандр с частотой 6,5 МГц. На пульт нет реакции. Статус возвращается 0x0F. int main(void) { bool erase_bonds; NRF_POWER->DCDCEN = 1; // Initialize. uart_init(); log_init(); timers_init(); buttons_leds_init(&erase_bonds); power_management_init(); ble_stack_init(); gap_params_init(); gatt_init(); services_init(); advertising_init(); conn_params_init(); NRF_LOG_INFO("Debug logging for UART over RTT started."); advertising_start(); nrf_fstorage_api_t * p_fs_api; p_fs_api = &nrf_fstorage_sd; nrf_fstorage_init(&fstorage, p_fs_api, NULL); init_button(); init_Timer_1(); // инициализация таймера 1 обработка клавиатуры NRF_SAADC->CH[0].CONFIG = (SAADC_CH_CONFIG_GAIN_Gain1_4 << SAADC_CH_CONFIG_GAIN_Pos) | (SAADC_CH_CONFIG_MODE_SE << SAADC_CH_CONFIG_MODE_Pos) | (SAADC_CH_CONFIG_REFSEL_VDD1_4 << SAADC_CH_CONFIG_REFSEL_Pos) | (SAADC_CH_CONFIG_RESN_Bypass << SAADC_CH_CONFIG_RESN_Pos) | (SAADC_CH_CONFIG_RESP_Bypass << SAADC_CH_CONFIG_RESP_Pos) | (SAADC_CH_CONFIG_TACQ_40us << SAADC_CH_CONFIG_TACQ_Pos); NRF_SAADC->CH[0].PSELP = SAADC_CH_PSELP_PSELP_AnalogInput0 << SAADC_CH_PSELP_PSELP_Pos; NRF_SAADC->CH[0].PSELN = SAADC_CH_PSELN_PSELN_NC << SAADC_CH_PSELN_PSELN_Pos; NRF_SAADC->RESOLUTION = SAADC_RESOLUTION_VAL_14bit << SAADC_RESOLUTION_VAL_Pos; NRF_SAADC->RESULT.MAXCNT = 16; NRF_SAADC->RESULT.PTR = (uint32_t)&result; NRF_SAADC->SAMPLERATE = 0x7FF | SAADC_SAMPLERATE_MODE_Timers << SAADC_SAMPLERATE_MODE_Pos; NRF_SAADC->ENABLE = SAADC_ENABLE_ENABLE_Enabled << SAADC_ENABLE_ENABLE_Pos; NRF_SAADC->TASKS_CALIBRATEOFFSET = 1; while (NRF_SAADC->EVENTS_CALIBRATEDONE == 0); NRF_SAADC->EVENTS_CALIBRATEDONE = 0; while (NRF_SAADC->STATUS == (SAADC_STATUS_STATUS_Busy <<SAADC_STATUS_STATUS_Pos)); NRF_SAADC->TASKS_START = 1; while (NRF_SAADC->EVENTS_STARTED == 0); NRF_SAADC->EVENTS_STARTED = 0; NRF_SAADC->TASKS_SAMPLE = 1; // while (NRF_SAADC->EVENTS_END == 0); // NRF_SAADC->EVENTS_END = 0; array_test[0] = 0x8a; array_test[1] = 0xa0; NRF_GPIO->DIRSET |= (1UL << SDN); NRF_GPIO->PIN_CNF[SDN] = (GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos) | (GPIO_PIN_CNF_INPUT_Disconnect << GPIO_PIN_CNF_INPUT_Pos) | (GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos) | (GPIO_PIN_CNF_DRIVE_Msk) | (GPIO_PIN_CNF_SENSE_Msk); NRFX_IRQ_PRIORITY_SET(GPIOTE_IRQn, NRFX_GPIOTE_CONFIG_IRQ_PRIORITY); NVIC_EnableIRQ(GPIOTE_IRQn); NRF_GPIOTE->CONFIG[0] = (GPIOTE_CONFIG_POLARITY_HiToLo << GPIOTE_CONFIG_POLARITY_Pos) | (30 << GPIOTE_CONFIG_PSEL_Pos) | (GPIOTE_CONFIG_MODE_Event << GPIOTE_CONFIG_MODE_Pos); NRF_GPIOTE->INTENSET = GPIOTE_INTENSET_IN0_Set << GPIOTE_INTENSET_IN0_Pos; init_pin_RF(); // инициализируем порты ввода вывода cc1101 POWER_UP_RESET_CC1100(); init_RF(); // инициализация cc1101 ItStatus1 = SpiTxRxByte(0x3D); nrf_delay_ms(10); ItStatus1 = SpiTxRxByte(0x34); // Enter main loop. for (;;) { idle_state_handle(); Scan_Key();// сканирование клавиатуры } } void RESET_CC1100(void) { Low_CC1100_CSN ; while( ((NRF_GPIO->IN >> SPI_MISO_PIN) & 1UL) != 0); SpiTxRxByte(CCxxx0_SRES); //Reset command while( ((NRF_GPIO->IN >> SPI_MISO_PIN) & 1UL) != 0); Hign_CC1100_CSN; } void POWER_UP_RESET_CC1100(void) { Hign_CC1100_CSN; for(unsigned char i = 0; i < 128; i++){__NOP();} Low_CC1100_CSN ; for(unsigned char i = 0; i < 128; i++){__NOP();} Hign_CC1100_CSN; nrf_delay_ms(5); RESET_CC1100(); // Reset CC1100 } void init_pin_RF(void) { NRF_GPIO->DIRSET |= (1UL << SPI_SCK_PIN); NRF_GPIO->DIRSET |= (1UL << SPI_MOSI_PIN); NRF_GPIO->DIRSET = (0UL << SPI_MISO_PIN); NRF_GPIO->PIN_CNF[SPI_MISO_PIN] = (GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos) | (GPIO_PIN_CNF_PULL_Pullup << GPIO_PIN_CNF_PULL_Pos); Hign_CC1100_CSN; // установка cs в еденицу } void halRfWriteReg(uint8_t reg, uint8_t value) { uint8_t buf[2]; // локальный буфер для записи в cc1101 buf[0] = reg; // регистр адреса buf[1] = value; // что записываем в регистр NRF_SPIM0->ENABLE &= ~(SPIM_ENABLE_ENABLE_Enabled << SPIM_ENABLE_ENABLE_Pos); // выключаем SPI NRF_SPIM0->INTENSET = 0; // выключаем все прирывания NRF_SPIM0->PSEL.SCK = SPI_SCK_PIN; // вывод CLK NRF_SPIM0->PSEL.MOSI = SPI_MOSI_PIN; // вывод MOSI NRF_SPIM0->PSEL.MISO = SPI_MISO_PIN; // ввод MISO NRF_SPIM0->FREQUENCY = SPIM_FREQUENCY_FREQUENCY_M4; // установленая скорость 4 МГц NRF_SPIM0->RXD.PTR = NULL; NRF_SPIM0->RXD.MAXCNT = 0; NRF_SPIM0->RXD.LIST = (SPIM_RXD_LIST_LIST_Disabled << SPIM_RXD_LIST_LIST_Pos); NRF_SPIM0->TXD.PTR = (uint32_t)&buf; NRF_SPIM0->TXD.MAXCNT = sizeof(buf); NRF_SPIM0->TXD.LIST = (SPIM_RXD_LIST_LIST_Disabled << SPIM_RXD_LIST_LIST_Pos); NRF_SPIM0->CONFIG = (SPIM_CONFIG_ORDER_MsbFirst << SPIM_CONFIG_ORDER_Pos) | (SPIM_CONFIG_CPHA_Leading << SPIM_CONFIG_CPHA_Pos) | (SPIM_CONFIG_CPOL_ActiveHigh << SPIM_CONFIG_CPOL_Pos); NRF_SPIM0->ENABLE |= (SPIM_ENABLE_ENABLE_Enabled << SPIM_ENABLE_ENABLE_Pos); // включаем SPI Low_CC1100_CSN; while( ((NRF_GPIO->IN >> SPI_MISO_PIN) & 1UL) != 0); NRF_SPIM0->EVENTS_ENDRX = 0; NRF_SPIM0->EVENTS_ENDTX = 0; NRF_SPIM0->EVENTS_END = 0; NRF_SPIM0->EVENTS_STARTED = 0; NRF_SPIM0->EVENTS_STOPPED = 0; NRF_SPIM0->TASKS_START = 1; // стартуем while (NRF_SPIM0->EVENTS_STARTED == 0); // ждем событие старта while(NRF_SPIM0->EVENTS_ENDTX == 0); // ждем события окончания передачи данных NRF_SPIM0->EVENTS_ENDTX = 0; Hign_CC1100_CSN; } uint8_t SpiTxRxByte(uint8_t dat) // отправка одного байта в cc1101 { uint8_t buf[1], buf_RX[1]; // локальный буфер для записи в cc1101 buf[0] = dat; // регистр адреса buf_RX[0] = 0; NRF_SPIM0->ENABLE &= ~(SPIM_ENABLE_ENABLE_Enabled << SPIM_ENABLE_ENABLE_Pos); // выключаем SPI NRF_SPIM0->INTENSET = 0; // выключаем все прирывания NRF_SPIM0->PSEL.SCK = SPI_SCK_PIN; // вывод CLK NRF_SPIM0->PSEL.MOSI = SPI_MOSI_PIN; // вывод MOSI NRF_SPIM0->PSEL.MISO = SPI_MISO_PIN; // ввод MISO NRF_SPIM0->FREQUENCY = SPIM_FREQUENCY_FREQUENCY_M4; // установленая скорость 4 МГц NRF_SPIM0->RXD.PTR = (uint32_t)&buf_RX; NRF_SPIM0->RXD.MAXCNT = sizeof(buf_RX); NRF_SPIM0->RXD.LIST = (SPIM_RXD_LIST_LIST_Disabled << SPIM_RXD_LIST_LIST_Pos); NRF_SPIM0->TXD.PTR = (uint32_t)&buf; NRF_SPIM0->TXD.MAXCNT = sizeof(buf); NRF_SPIM0->TXD.LIST = (SPIM_RXD_LIST_LIST_Disabled << SPIM_RXD_LIST_LIST_Pos); NRF_SPIM0->CONFIG = (SPIM_CONFIG_ORDER_MsbFirst << SPIM_CONFIG_ORDER_Pos) | (SPIM_CONFIG_CPHA_Leading << SPIM_CONFIG_CPHA_Pos) | (SPIM_CONFIG_CPOL_ActiveHigh << SPIM_CONFIG_CPOL_Pos); NRF_SPIM0->ENABLE |= (SPIM_ENABLE_ENABLE_Enabled << SPIM_ENABLE_ENABLE_Pos); // включаем SPI Low_CC1100_CSN; while( ((NRF_GPIO->IN >> SPI_MISO_PIN) & 1UL) != 0); NRF_SPIM0->EVENTS_ENDRX = 0; NRF_SPIM0->EVENTS_ENDTX = 0; NRF_SPIM0->EVENTS_END = 0; NRF_SPIM0->EVENTS_STARTED = 0; NRF_SPIM0->EVENTS_STOPPED = 0; NRF_SPIM0->TASKS_START = 1; // стартуем while (NRF_SPIM0->EVENTS_STARTED == 0); // ждем событие старта while(NRF_SPIM0->EVENTS_END == 0); // ждем события окончания передачи данных NRF_SPIM0->EVENTS_END = 0; Hign_CC1100_CSN; return(buf_RX[0]); } uint8_t SpiReadRegister (uint8_t reg) { uint8_t buf[2]; // локальный буфер для записи в cc1101 buf[0] = reg; // регистр адреса buf[1] = 0; NRF_SPIM0->ENABLE &= ~(SPIM_ENABLE_ENABLE_Enabled << SPIM_ENABLE_ENABLE_Pos); // выключаем SPI NRF_SPIM0->INTENSET = 0; // выключаем все прирывания NRF_SPIM0->PSEL.SCK = SPI_SCK_PIN; // вывод CLK NRF_SPIM0->PSEL.MOSI = SPI_MOSI_PIN; // вывод MOSI NRF_SPIM0->PSEL.MISO = SPI_MISO_PIN; // ввод MISO NRF_SPIM0->FREQUENCY = SPIM_FREQUENCY_FREQUENCY_M4; // установленая скорость 4 МГц NRF_SPIM0->RXD.PTR = (uint32_t)&buf; NRF_SPIM0->RXD.MAXCNT = sizeof(buf); NRF_SPIM0->RXD.LIST = (SPIM_RXD_LIST_LIST_Disabled << SPIM_RXD_LIST_LIST_Pos); NRF_SPIM0->TXD.PTR = (uint32_t)&buf; NRF_SPIM0->TXD.MAXCNT = sizeof(buf); NRF_SPIM0->TXD.LIST = (SPIM_RXD_LIST_LIST_Disabled << SPIM_RXD_LIST_LIST_Pos); NRF_SPIM0->CONFIG = (SPIM_CONFIG_ORDER_MsbFirst << SPIM_CONFIG_ORDER_Pos) | (SPIM_CONFIG_CPHA_Leading << SPIM_CONFIG_CPHA_Pos) | (SPIM_CONFIG_CPOL_ActiveHigh << SPIM_CONFIG_CPOL_Pos); NRF_SPIM0->ENABLE |= (SPIM_ENABLE_ENABLE_Enabled << SPIM_ENABLE_ENABLE_Pos); // включаем SPI Low_CC1100_CSN; while( ((NRF_GPIO->IN >> SPI_MISO_PIN) & 1UL) != 0); NRF_SPIM0->EVENTS_ENDRX = 0; NRF_SPIM0->EVENTS_ENDTX = 0; NRF_SPIM0->EVENTS_END = 0; NRF_SPIM0->EVENTS_STARTED = 0; NRF_SPIM0->EVENTS_STOPPED = 0; NRF_SPIM0->TASKS_START = 1; // стартуем while (NRF_SPIM0->EVENTS_STARTED == 0); // ждем событие старта while(NRF_SPIM0->EVENTS_END == 0); // ждем события окончания передачи данных NRF_SPIM0->EVENTS_END = 0; Hign_CC1100_CSN; return(buf[1]); } void init_RF(void) { ItStatus1 = SpiReadRegister(0xf1 | 0x80); /*halRfWriteReg(IOCFG0,0x2E); //GDO0 Output Pin Configuration halRfWriteReg(IOCFG2,0x0d); //GDO0 Output Pin Configuration ItStatus1 = SpiReadRegister(IOCFG2 | 0x80); halRfWriteReg(FIFOTHR,0x07); //RX FIFO and TX FIFO Thresholds halRfWriteReg(SYNC1,0x00); //Sync Word, High Byte halRfWriteReg(SYNC0,0x00); //Sync Word, Low Byte halRfWriteReg(PKTLEN,0x00); //Packet Length halRfWriteReg(PKTCTRL1,0x00);//Packet Automation Control halRfWriteReg(PKTCTRL0,0x32);//Packet Automation Control halRfWriteReg(FSCTRL1,0x06); //Frequency Synthesizer Control halRfWriteReg(FSCTRL0,0x00); halRfWriteReg(FREQ2,0x10); //Frequency Control Word, High Byte halRfWriteReg(FREQ1,0xB1); //Frequency Control Word, Middle Byte halRfWriteReg(FREQ0,0x3b); //Frequency Control Word, Low Byte halRfWriteReg(MDMCFG4,0xAC); //Modem Configuration halRfWriteReg(MDMCFG3,0x22); //Modem Configuration halRfWriteReg(MDMCFG2,0x30); //Modem Configuration halRfWriteReg(MDMCFG1,0x22); halRfWriteReg(MDMCFG0,0xF8); halRfWriteReg(DEVIATN,0x40); //Modem Deviation Setting halRfWriteReg(MCSM2,0x07); //Main Radio Control State Machine Configuration halRfWriteReg(MCSM1,0x30); //Main Radio Control State Machine Configuration halRfWriteReg(MCSM0,0x18); //Main Radio Control State Machine Configuration halRfWriteReg(FOCCFG,0x16); //Frequency Offset Compensation Configuration halRfWriteReg(AGCCTRL2,0x04);//AGC Control halRfWriteReg(AGCCTRL1,0x00);//AGC Control halRfWriteReg(AGCCTRL0,0x92);//AGC Control halRfWriteReg(WORCTRL,0xFB); //Wake On Radio Control halRfWriteReg(FREND1,0xB6); //Front End TX Configuration halRfWriteReg(FREND0,0x11); //Front End TX Configuration halRfWriteReg(FSCAL3,0xE9); //Frequency Synthesizer Calibration halRfWriteReg(FSCAL2,0x2A); //Frequency Synthesizer Calibration halRfWriteReg(FSCAL1,0x00); //Frequency Synthesizer Calibration halRfWriteReg(FSCAL0,0x1F); //Frequency Synthesizer Calibration halRfWriteReg(TEST2,0x81); //Various Test Settings halRfWriteReg(TEST1,0x35); //Various Test Settings halRfWriteReg(TEST0,0x09); //Various Test Settings*/ halRfWriteReg(IOCFG2,0x0D); //GDO2 Output Pin Configuration halRfWriteReg(IOCFG0,0x2E); //GDO0 Output Pin Configuration halRfWriteReg(FIFOTHR,0x47); //RX FIFO and TX FIFO Thresholds halRfWriteReg(SYNC1,0x7A); //Sync Word, High Byte halRfWriteReg(SYNC0,0x0E); //Sync Word, Low Byte halRfWriteReg(PKTLEN,0x14); //Packet Length halRfWriteReg(PKTCTRL0,0x32);//Packet Automation Control halRfWriteReg(FSCTRL1,0x06); //Frequency Synthesizer Control halRfWriteReg(FREQ2,0x10); //Frequency Control Word, High Byte halRfWriteReg(FREQ1,0xB0); //Frequency Control Word, Middle Byte halRfWriteReg(FREQ0,0x8A); //Frequency Control Word, Low Byte halRfWriteReg(MDMCFG4,0xAC); //Modem Configuration halRfWriteReg(MDMCFG2,0x30); //Modem Configuration halRfWriteReg(DEVIATN,0x40); //Modem Deviation Setting halRfWriteReg(MCSM0,0x18); //Main Radio Control State Machine Configuration halRfWriteReg(FOCCFG,0x16); //Frequency Offset Compensation Configuration halRfWriteReg(AGCCTRL2,0x43);//AGC Control halRfWriteReg(AGCCTRL1,0x49);//AGC Control halRfWriteReg(WORCTRL,0xFB); //Wake On Radio Control halRfWriteReg(FREND0,0x11); //Front End TX Configuration halRfWriteReg(FSCAL3,0xEA); //Frequency Synthesizer Calibration halRfWriteReg(FSCAL2,0x2A); //Frequency Synthesizer Calibration halRfWriteReg(FSCAL1,0x00); //Frequency Synthesizer Calibration halRfWriteReg(FSCAL0,0x1F); //Frequency Synthesizer Calibration halRfWriteReg(TEST2,0x81); //Various Test Settings halRfWriteReg(TEST1,0x35); //Various Test Settings halRfWriteReg(TEST0,0x09); //Various Test Settings } Изменено 31 октября, 2018 пользователем Alex_Golubev Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться