截止到第15篇为止,我已经开发了很多APP了。
比较重要的包括:GPS发射、模拟视频接收、蓝牙接收、NRF24L01接收、SSTV接收、APRS接收
我本来还想做NOAA接收。但是我觉得开发步骤都差不多。都是一些有关无线电通信的数字信号处理的开发。
我现在想做一些不同的东西。跟硬件更相关的东西。比如如何和芯片交互,这样将来要自己加一些硬件模块也会更方便。
这个debug功能其实原版的Portapack固件里就是有的,后来在havoc被删掉了,我看了Mayhem代码。它把debug功能加回来了。所以我也把它加了回来。
Debug是一个界面,里面也有各个子菜单,可以用来测试按钮和芯片。芯片的测试方法主要是读芯片寄存器。
包括2个中频芯片、时钟芯片和声卡芯片。
我们可以看看这个声卡芯片的信息。当我打开麦克风和关闭麦克风时,寄存器输出是不一样的。


说明这个debug功能确实是有效的。
但是我不想研究声卡芯片,因为它是portapack板子上的芯片。我更想研究hackrf板子上的芯片,因为这样我可以和hackrf的原生硬件的固件做比较。
我想先着手研究那两个中频芯片,然后试试能否把hackrf上的那个flash芯片(w25q80bv)也加入到debug程序来,作为练手。
下面我们先看看debug的代码。
ui_debug.cpp
/* DebugPeripheralsMenuView **********************************************/
DebugPeripheralsMenuView::DebugPeripheralsMenuView(NavigationView& nav) {
add_items({
{ "RFFC5072", ui::Color::dark_cyan(), &bitmap_icon_peripherals_details, [&nav](){ nav.push<RegistersView>(
"RFFC5072", RegistersWidgetConfig { 31, 16 },
[](const size_t register_number) { return radio::debug::first_if::register_read(register_number); }
); } },
{ "MAX2837", ui::Color::dark_cyan(), &bitmap_icon_peripherals_details, [&nav](){ nav.push<RegistersView>(
"MAX2837", RegistersWidgetConfig { 32, 10 },
[](const size_t register_number) { return radio::debug::second_if::register_read(register_number); }
); } },
{ "Si5351C", ui::Color::dark_cyan(), &bitmap_icon_peripherals_details, [&nav](){ nav.push<RegistersView>(
"Si5351C", RegistersWidgetConfig { 96, 8 },
[](const size_t register_number) { return portapack::clock_generator.read_register(register_number); }
); } },
{ audio::debug::codec_name(), ui::Color::dark_cyan(), &bitmap_icon_peripherals_details, [&nav](){ nav.push<RegistersView>(
audio::debug::codec_name(), RegistersWidgetConfig { audio::debug::reg_count(), audio::debug::reg_bits() },
[](const size_t register_number) { return audio::debug::reg_read(register_number); }
); } },
});
set_max_rows(2); // allow wider buttons
}
目前一共可以看到4个芯片的信息。最下面两个分别是时钟和声卡芯片,可以看到它们都封装过了。不如最上面两个芯片来得简洁明了。
ui_debug.hpp
#include "ui.hpp"
#include "ui_widget.hpp"
#include "ui_painter.hpp"
#include "ui_menu.hpp"
#include "ui_navigation.hpp"
#include "rffc507x.hpp"
#include "max2837.hpp"
#include "portapack.hpp"
#include <functional>
#include <utility>
头文件里也说明了这一点。rffc507x和max2837的两个头文件都是直接引用的,不像其他芯片估计已经包含在别的头文件里了。
如果我们再看看portapack固件代码里有关这两颗芯片的部分,以及hackrf原生固件的对

本文探讨了无线电通信中数字信号处理的APP开发,并详细介绍了Portapack固件中的调试功能,特别是针对RFFC5072和MAX2837等中频芯片的寄存器读取方法。
最低0.47元/天 解锁文章
666

被折叠的 条评论
为什么被折叠?



