Народ кто пробовал работать c rfm22b можете пожалуйста поделиться исходниками на AVR. Мануалы читал, демо на пике смотрел не помогло, глухо, не догоняю видать чего.
Там все просто, достаточно сходить на сайт и почитать доку http://www.silabs.com/products/wireless ... 03132.aspx есть там документ в формате MS Excel позволяет выбрать неоходимую конфигурацию и получить последовательность команд для настройки. А что за модуль? на каую чстоту? Я возился с RFM22-433-S2 У вас правда второая ревизия, у неё немного другие команды управления.
_________________ С уважением, Денис Железняков aka ZiB Мой блог: http://ziblog.ru
Сваял две платки. Приблуда из перемычек p3 и p4 для того, чтобы можно было включить или отключить усилитель. Антены представляют из себя два медных покрытых лаком провода 1мм сечением и длиной примерно 17см.
Вроде, все правильно да нихрена не работает. Передачу проверял обыной любительской рацией при поднесении к ней на сантиметра 3-5 в эфире на 434частоте слышен шум от передатчика. Сразу может дело в том, что слишком слабо, т.к. у передатчика мощность куда больше. Помогите народ, два месяца пытаюсь заставить работать да нифига.
void SPI_RFM_INIT (void) { SPI_WRITE(0x06, 0x00); // interrupt all disable SPI_WRITE(0x07, 01); // to ready mode SPI_WRITE(0x09, 0x7f); // cap = 12.5pf SPI_WRITE(0x0a, 0x05); //clk output is 2MHz SPI_WRITE(0x0d, 0x00); // GPIO2 for MCLK output SPI_WRITE(0x0e, 0x00); //GPIO port use default value SPI_WRITE(0x0f, 0x70); // NO ADC used SPI_WRITE(0x10, 0x00); //no adc used SPI_WRITE(0x12, 0x00); // no temperature sensor used SPI_WRITE(0x13, 0x00); // no temperature sensor used SPI_WRITE(0x70, 0x20); // no mancheset code, no data whiting, data rate < 30Kbps SPI_WRITE(0x1c, 0x04); // IF filter bandwidth SPI_WRITE(0x1d, 0x40); // AFC LOOP SPI_WRITE(0x1e, 0x08); //AFC timing SPI_WRITE(0x20, 0x41); //clock recovery SPI_WRITE(0x21, 0x60); //clock recovery SPI_WRITE(0x22, 0x27); //clock recovery SPI_WRITE(0x23, 0x52); //clock recovery SPI_WRITE(0x24, 0x00); //clock recovery timing SPI_WRITE(0x25, 0x06); //clock recovery timing SPI_WRITE(0x6e, 0x27); // Tx data rate 1 SPI_WRITE(0x6f, 0x52); // Tx data rate 0 SPI_WRITE(0x30, 0x8c); // data access control SPI_WRITE(0x32, 0xff); // header control SPI_WRITE(0x33, 0x42); // // header 3, 2, 1,0 used for head length, fixed packet length, synchronize word length 3, 2, SPI_WRITE(0x34, 64); // 64 nibble = 32byte preamble SPI_WRITE(0x35, 0x20); //0x35 need to detect 20bit preamble SPI_WRITE(0x36, 0x2d); // synchronize word SPI_WRITE(0x37, 0xd4); SPI_WRITE(0x38, 0x00); SPI_WRITE(0x39, 0x00); SPI_WRITE(0x3a, 's'); // set tx header SPI_WRITE(0x3b, 'o'); SPI_WRITE(0x3c, 'n'); SPI_WRITE(0x3d, 'g'); SPI_WRITE(0x3e, 1); // total tx 17 byte SPI_WRITE(0x3f, 's'); // set rx header SPI_WRITE(0x40, 'o'); SPI_WRITE(0x41, 'n'); SPI_WRITE(0x42, 'g'); SPI_WRITE(0x43, 0xff); // all the bit to be checked SPI_WRITE(0x44, 0xff); // all the bit to be checked SPI_WRITE(0x45, 0xff); // all the bit to be checked SPI_WRITE(0x46, 0xff); // all the bit to be checked
SPI_WRITE(0x6d, 0x03); // tx power to Max SPI_WRITE(0x79, 0x0); // no frequency hopping SPI_WRITE(0x7a, 0x0); // no frequency hopping SPI_WRITE(0x71, 0x22); // Gfsk, fd[8] =0, no invert for Tx/Rx data, fifo mode, txclk -->gpio SPI_WRITE(0x72, 0x48); // frequency deviation setting to 45k = 72*625 SPI_WRITE(0x73, 0x0); // no frequency offset SPI_WRITE(0x74, 0x0); // no frequency offset SPI_WRITE(0x75, 0x53); // frequency set to 434MHz SPI_WRITE(0x76, 0x64); // frequency set to 434MHz SPI_WRITE(0x77, 0x00);// frequency set to 434MHz
void SPI_RFM_INIT (void) { SPI_WRITE(0x06, 0x00); // interrupt all disable SPI_WRITE(0x07, 01); // to ready mode SPI_WRITE(0x09, 0x7f); // cap = 12.5pf SPI_WRITE(0x0a, 0x05); //clk output is 2MHz SPI_WRITE(0x0C,0b00010111); // GPIO Configuration 0. SPI_WRITE(0x0B,0b00011000); // GPIO Configuration 1. SPI_WRITE(0x0d, 0x00); // GPIO2 for MCLK output SPI_WRITE(0x0e, 0x00); //GPIO port use default value SPI_WRITE(0x0f, 0x70); // NO ADC used SPI_WRITE(0x10, 0x00); //no adc used SPI_WRITE(0x12, 0x00); // no temperature sensor used SPI_WRITE(0x13, 0x00); // no temperature sensor used SPI_WRITE(0x70, 0x20); // no mancheset code, no data whiting, data rate < 30Kbps SPI_WRITE(0x1c, 0x04); // IF filter bandwidth SPI_WRITE(0x1d, 0x40); // AFC LOOP SPI_WRITE(0x1e, 0x08); //AFC timing SPI_WRITE(0x20, 0x41); //clock recovery SPI_WRITE(0x21, 0x60); //clock recovery SPI_WRITE(0x22, 0x27); //clock recovery SPI_WRITE(0x23, 0x52); //clock recovery SPI_WRITE(0x24, 0x00); //clock recovery timing SPI_WRITE(0x25, 0x06); //clock recovery timing SPI_WRITE(0x6e, 0x27); // Tx data rate 1 SPI_WRITE(0x6f, 0x52); // Tx data rate 0 SPI_WRITE(0x30, 0x8c); // data access control SPI_WRITE(0x32, 0xff); // header control SPI_WRITE(0x33, 0x42);// // header 3, 2, 1,0 used for head length, fixed packet length, synchronize word length 3, 2, SPI_WRITE(0x34, 64); // 64 nibble = 32byte preamble SPI_WRITE(0x35, 0x20); //0x35 need to detect 20bit preamble SPI_WRITE(0x36, 0x2d); // synchronize word SPI_WRITE(0x37, 0xd4); SPI_WRITE(0x38, 0x00); SPI_WRITE(0x39, 0x00); SPI_WRITE(0x3a, 's'); SPI_WRITE(0x3b, 'o'); SPI_WRITE(0x3c, 'n'); SPI_WRITE(0x3d, 'g'); SPI_WRITE(0x3e, 1); // total tx 1 byte SPI_WRITE(0x3f, 's'); SPI_WRITE(0x40, 'o'); SPI_WRITE(0x41, 'n'); SPI_WRITE(0x42, 'g'); SPI_WRITE(0x43, 0xff); // all the bit to be checked SPI_WRITE(0x44, 0xff); // all the bit to be checked SPI_WRITE(0x45, 0xff); // all the bit to be checked SPI_WRITE(0x46, 0xff); // all the bit to be checked SPI_WRITE(0x6d, 0x03); // tx power to max SPI_WRITE(0x79, 0x0); // no frequency hopping SPI_WRITE(0x7a, 0x0); // no frequency hopping SPI_WRITE(0x71, 0x22); // Gfsk, fd[8] =0, no invert for Tx/Rx data, fifo mode, txclk -->gpio SPI_WRITE(0x72, 0x48); // frequency deviation setting to 45k = 72*625 SPI_WRITE(0x73, 0x0); // no frequency offset SPI_WRITE(0x74, 0x0); // no frequency offset SPI_WRITE(0x75, 0x53); // frequency set to 434MHz SPI_WRITE(0x76, 0x64); // frequency set to 434MHz SPI_WRITE(0x77, 0x00);// frequency set to 434MHz
Зарегистрирован: Чт мар 25, 2010 11:25:28 Сообщений: 6
Рейтинг сообщения:0
Вот какая штука с этими модулями - у них антенна должна передергиваться или на вход приемника или на выход передатчика Подачей сигнала на соответствующие выводы RX_ANT и TX_ANT. Самостоятельно модуль этого делать не умеет!!!
Есть два варианта решения данной проблемы: 1. Дергать эти выводы микроконтроллером 2. Подключить эти выводы к радио модулю как у вас на схеме. Предварительно настроить GPO_0 GPO_1 как управляющие выходы антенн у вас в коде это сделано следующими строчками:
Зарегистрирован: Пн май 23, 2011 11:23:39 Сообщений: 78
Рейтинг сообщения:0
Добрый день, господа. Не знаю куда больше обратиться. Приобрёл два модуля RFM22B-433-S2. пытаюсь заставить с одного модуля передавать инфу на другой. контроллер мега8. пытаюсь запрограммировать на codevision стандартными средствами spi. может у кого-то есть наработки по этой теме? жду помощи. спасибо.
вроде бы всё понятно, но вот следующий вопрос вот например у меня адрес и данные равно 0х06. по nsdi я так понимаю будут передаваться данные?или я что-то путаю? для чего nSCK=1; а потом через задержку nSCK=0; как должны передаваться данные в протоколе? какая последовательность? спасибо
void SPI_RFM_INIT (void) { SPI_WRITE(0x06, 0x00); // interrupt all disable SPI_WRITE(0x07, 01); // to ready mode SPI_WRITE(0x09, 0x7f); // cap = 12.5pf SPI_WRITE(0x0a, 0x05); //clk output is 2MHz SPI_WRITE(0x0d, 0x00); // GPIO2 for MCLK output SPI_WRITE(0x0e, 0x00); //GPIO port use default value SPI_WRITE(0x0f, 0x70); // NO ADC used SPI_WRITE(0x10, 0x00); //no adc used SPI_WRITE(0x12, 0x00); // no temperature sensor used SPI_WRITE(0x13, 0x00); // no temperature sensor used SPI_WRITE(0x70, 0x20); // no mancheset code, no data whiting, data rate < 30Kbps SPI_WRITE(0x1c, 0x04); // IF filter bandwidth SPI_WRITE(0x1d, 0x40); // AFC LOOP SPI_WRITE(0x1e, 0x08); //AFC timing SPI_WRITE(0x20, 0x41); //clock recovery SPI_WRITE(0x21, 0x60); //clock recovery SPI_WRITE(0x22, 0x27); //clock recovery SPI_WRITE(0x23, 0x52); //clock recovery SPI_WRITE(0x24, 0x00); //clock recovery timing SPI_WRITE(0x25, 0x06); //clock recovery timing SPI_WRITE(0x6e, 0x27); // Tx data rate 1 SPI_WRITE(0x6f, 0x52); // Tx data rate 0 SPI_WRITE(0x30, 0x8c); // data access control SPI_WRITE(0x32, 0xff); // header control SPI_WRITE(0x33, 0x42); // // header 3, 2, 1,0 used for head length, fixed packet length, synchronize word length 3, 2, SPI_WRITE(0x34, 64); // 64 nibble = 32byte preamble SPI_WRITE(0x35, 0x20); //0x35 need to detect 20bit preamble SPI_WRITE(0x36, 0x2d); // synchronize word SPI_WRITE(0x37, 0xd4); SPI_WRITE(0x38, 0x00); SPI_WRITE(0x39, 0x00); SPI_WRITE(0x3a, 's'); // set tx header SPI_WRITE(0x3b, 'o'); SPI_WRITE(0x3c, 'n'); SPI_WRITE(0x3d, 'g'); SPI_WRITE(0x3e, 1); // total tx 17 byte SPI_WRITE(0x3f, 's'); // set rx header SPI_WRITE(0x40, 'o'); SPI_WRITE(0x41, 'n'); SPI_WRITE(0x42, 'g'); SPI_WRITE(0x43, 0xff); // all the bit to be checked SPI_WRITE(0x44, 0xff); // all the bit to be checked SPI_WRITE(0x45, 0xff); // all the bit to be checked SPI_WRITE(0x46, 0xff); // all the bit to be checked
SPI_WRITE(0x6d, 0x03); // tx power to Max SPI_WRITE(0x79, 0x0); // no frequency hopping SPI_WRITE(0x7a, 0x0); // no frequency hopping SPI_WRITE(0x71, 0x23); // Gfsk, fd[8] =0, no invert for Tx/Rx data, fifo mode, txclk -->gpio SPI_WRITE(0x72, 0x48); // frequency deviation setting to 45k = 72*625 SPI_WRITE(0x73, 0x0); // no frequency offset SPI_WRITE(0x74, 0x0); // no frequency offset SPI_WRITE(0x75, 0x53); // frequency set to 434MHz SPI_WRITE(0x76, 0x64); // frequency set to 434MHz SPI_WRITE(0x77, 0x00);// frequency set to 434MHz
void SPI_RFM_INIT (void) { SPI_WRITE(0x06, 0x00); // interrupt all disable SPI_WRITE(0x07, 01); // to ready mode SPI_WRITE(0x09, 0x7f); // cap = 12.5pf SPI_WRITE(0x0a, 0x05); //clk output is 2MHz SPI_WRITE(0x0C,0b00010111); //GPIO Configuration 0 SPI_WRITE(0x0B,0b00011000); //GPIO Configuration 1 SPI_WRITE(0x0d, 0x00); // GPIO2 for MCLK output SPI_WRITE(0x0e, 0x00); //GPIO port use default value SPI_WRITE(0x0f, 0x70); // NO ADC used SPI_WRITE(0x10, 0x00); //no adc used SPI_WRITE(0x12, 0x00); // no temperature sensor used SPI_WRITE(0x13, 0x00); // no temperature sensor used SPI_WRITE(0x70, 0x20); // no mancheset code, no data whiting, data rate < 30Kbps SPI_WRITE(0x1c, 0x04); // IF filter bandwidth SPI_WRITE(0x1d, 0x40); // AFC LOOP SPI_WRITE(0x1e, 0x08); //AFC timing SPI_WRITE(0x20, 0x41); //clock recovery SPI_WRITE(0x21, 0x60); //clock recovery SPI_WRITE(0x22, 0x27); //clock recovery SPI_WRITE(0x23, 0x52); //clock recovery SPI_WRITE(0x24, 0x00); //clock recovery timing SPI_WRITE(0x25, 0x06); //clock recovery timing SPI_WRITE(0x6e, 0x27); // Tx data rate 1 SPI_WRITE(0x6f, 0x52); // Tx data rate 0 SPI_WRITE(0x30, 0x8c); // data access control SPI_WRITE(0x32, 0xff); // header control SPI_WRITE(0x33, 0x42); // // header 3, 2, 1,0 used for head length, fixed packet length, synchronize word length 3, 2, SPI_WRITE(0x34, 64); // 64 nibble = 32byte preamble SPI_WRITE(0x35, 0x20); //0x35 need to detect 20bit preamble SPI_WRITE(0x36, 0x2d); // synchronize word SPI_WRITE(0x37, 0xd4); SPI_WRITE(0x38, 0x00); SPI_WRITE(0x39, 0x00); SPI_WRITE(0x3a, 's'); // set tx header SPI_WRITE(0x3b, 'o'); SPI_WRITE(0x3c, 'n'); SPI_WRITE(0x3d, 'g'); SPI_WRITE(0x3e, 1); // total tx 17 byte SPI_WRITE(0x3f, 's'); // set rx header SPI_WRITE(0x40, 'o'); SPI_WRITE(0x41, 'n'); SPI_WRITE(0x42, 'g'); SPI_WRITE(0x43, 0xff); // all the bit to be checked SPI_WRITE(0x44, 0xff); // all the bit to be checked SPI_WRITE(0x45, 0xff); // all the bit to be checked SPI_WRITE(0x46, 0xff); // all the bit to be checked
SPI_WRITE(0x6d, 0x03); // tx power to Max SPI_WRITE(0x79, 0x0); // no frequency hopping SPI_WRITE(0x7a, 0x0); // no frequency hopping SPI_WRITE(0x71, 0x23); // Gfsk, fd[8] =0, no invert for Tx/Rx data, fifo mode, txclk -->gpio SPI_WRITE(0x72, 0x48); // frequency deviation setting to 45k = 72*625 SPI_WRITE(0x73, 0x0); // no frequency offset SPI_WRITE(0x74, 0x0); // no frequency offset SPI_WRITE(0x75, 0x53); // frequency set to 434MHz SPI_WRITE(0x76, 0x64); // frequency set to 434MHz SPI_WRITE(0x77, 0x00);// frequency set to 434MHz
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения