Portapack应用开发教程 (十六) Debug程序

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

截止到第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原生固件的对

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值