以前用portapack实现过nrf24l01的接收,接下去想试试发射功能。
我在ymfc-mini-drone week6_future_experiment_哔哩哔哩_bilibili里面讲过gr-nordic也可以接收,但是发射流图跑不起来,电脑性能不够。所以我打算分析一下它的代码,把核心部分重新用c++来实现一遍,看看性能能否提升一下。
下面3个文件就是接收和发射的核心。
gr-nordic/enhanced_shockburst_packet.cc at master · BastilleResearch/gr-nordic · GitHub
gr-nordic/nordic_rx_impl.cc at master · BastilleResearch/gr-nordic · GitHub
gr-nordic/nordic_tx_impl.cc at master · BastilleResearch/gr-nordic · GitHub
接下来,我打算自己用c++写编码程序,发给之前已经写好的解码程序。
nrf24-encoder.cpp
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <iostream>
#include <time.h>
#include <sys/time.h>
using namespace std;
int16_t result_demod[210];
int result_demod_len;
FILE *file;
int main(int argc, char **argv)
{
file = stdout;
//preamble 10101010
result_demod[0] = 1;
result_demod[1] = 0;
result_demod[2] = 1;
result_demod[3] = 0;
result_demod[4] = 1;
result_demod[5] = 0;
result_demod[6] = 1;
result_demod[7] = 0;
//address 11100111
for (int i = 0; i < 5; i++)
{
result_demod[8 + i*8] = 1;
result_demod[9 + i*8] = 1;
result_demod[10 + i*8] = 1;
result_demod[11 + i*8] = 0;
result_demod[12 + i*8] = 0;
result_demod[13 + i*8] = 1;
result_demod[14 + i*8] = 1;
result_demod[15 + i*8] = 1;
}
//pcf 000101000
result_demod[48] = 0;
result_demod[49] = 0;
result_demod[50] = 0;
result_demod[51] = 1;
result_demod[52] = 0;
result_demod[53] = 1;
result_demod[54] = 0;
result_demod[55] = 0;
result_demod[56] = 0;
//payload 00000000 00000001 00000010 00000011 00000100
result_demod[57] = 0;
result_demod[58] = 0;
result_demod[59] = 0;
result_demod[60] = 0;
result_demod[61] = 0;
result_demod[62] = 0;
result_demod[63] = 0;
result_demod[64] = 0;
result_demod[65] = 0;
result_demod[66] = 0;
result_demod[67] = 0;
result_demod[68] = 0;
result_demod[69] = 0;
result_demod[70] = 0;
result_demod[71] = 0;
result_demod[72] = 1;
result_demod[73] = 0;
result_demod[74] = 0;
result_demod[75] = 0;
result_demod[76] = 0;
result_demod[77] = 0;
result_demod[78] = 0;
result_demod[79] = 1;
result_demod[80] = 0;
result_demod[81] = 0;
result_demod[82] = 0;
result_demod[83] = 0;
result_demod[84] = 0;
result_demod[85] = 0;
result_demod[86] = 0;
result_demod[87] = 1;
result_demod[88] = 1;
result_demod[89] = 0;
result_demod[90] = 0;
result_demod[91] = 0;
result_demod[92] = 0;
result_demod[93] = 0;
result_demod[94] = 1;
result_demod[95] = 0;
result_demod[96] = 0;
//CRC 11100110 11100001
result_demod[97] = 1;
result_demod[98] = 1;
result_demod[99] = 1;
result_demod[100] = 0;
result_demod[101] = 0;
result_demod[102] = 1;
result_demod[103] = 1;
result_demod[104] = 0;
result_demod[105] = 1;
result_demod[106] = 1;
result_demod[107] = 1;
result_demod[108] = 0;
result_demod[109] = 0;
result_demod[110] = 0;
result_demod[111] = 0;
result_demod[112] = 1;
result_demod[113] = 0;
result_demod[114] = 0;
result_demod[115] = 0;
result_demod[116] = 0;
result_demod[117] = 0;
result_demod[118] = 0;
result_demod[119] = 0;
result_demod[120] = 0;
result_demod[121] = 0;
result_demod[122] = 0;
result_demod[123] = 0;
result_demod[124] = 0;
result_demod[125] = 0;
result_demod[126] = 0;
result_demod[127] = 0;
result_demod[128] = 0;
result_demod[129] = 0;
result_demod[130] = 0;
result_demod[131] = 0;
result_demod[132] = 0;
result_demod[133] = 0;
result_demod[134] = 0;
result_demod[135] = 0;
result_demod[136] = 0;
result_demod[137] = 0;
result_demod[138] = 0;
result_demod[139] = 0;
result_demod[140] = 0;
result_demod[141] = 0;
result_demod[142] = 0;
result_demod[143] = 0;
result_demod[144] = 0;
result_demod[145] = 0;
result_demod[146] = 0;
result_demod[147] = 0;
result_demod[148] = 0;
result_demod[149] = 0;
result_demod_len = 150;
fwrite(result_demod, 2, result_demod_len, file);
fwrite(result_demod, 2, result_demod_len, file);
fwrite(result_demod, 2, result_demod_len, file);
fwrite(result_demod, 2, result_demod_len, file);
fwrite(result_demod, 2, result_demod_len, file);
fwrite(result_demod, 2, result_demod_len, file);
fwrite(result_demod, 2, result_demod_len, file);
fwrite(result_demod, 2, result_demod_len, file);
fwrite(result_demod, 2, result_demod_len, file);
fwrite(result_demod, 2, result_demod_len, file);
return 0;
}

最低0.47元/天 解锁文章
537





