Portapack应用开发教程 (十六) Debug程序 G rffc507x 模拟spi

本文深入分析了rffc507x芯片的SPI通信方式,揭示其与max2837的不同之处。rffc507x采用软件模拟SPI而非硬件SPI,并详细介绍了其读写实现过程。

接下来看看另一颗芯片rffc507x,它的功能是把射频信号变到2.4GHz左右的中频,然后再上一篇提到的max2837变频到基带。

所以rffc507x功能和max2837是一样的,都是用来改变信号频率的。

而且它们都是spi总线的。

然而如果我们看rffc507x的代码。

firmware/application/hw/rffc507x.cpp rffc507x.hpp rffc507x_spi.cpp rffc507x_spi.hpp 

可以发现虽然这颗芯片还是在用spi通信,但是它没有去调用之前提到的spi_arbiter以及spi_pp。

(之前提到的spi_arbiter以及spi_pp,最终调用的是chibios的spidriver。

如果你搜索项目下的spidriver。会找到很多firmware/chibios/os/hal/platforms/LPC214x/spi_lld.c

这里面LPC214x是单片机的型号,也就是说这个spidriver相关的函数代码是取决于单片机硬件的。我认为这说明这个spi接口是单片机硬件实现的。)

但是如果你看rffc507x_spi.cpp rffc507x_spi.hpp 代码,虽然也命名为spi,但是没有调用spidriver这个类。而是调用了gpio相关的东西。

说明rffc507x的spi通信都是用gpio模拟的,不是硬件实现的。

 

接下来看看rffc507x.cpp和rffc507x.hpp

其实除了底层的spi实现外,这个芯片的操纵方式与上一篇提到的max2837也差不多。

也是先在hpp文件里声明了一堆寄存器对应的map变量,还有一个dirty registers数组。

同样的也有write,read,flush和flush_one函数。只不过这些函数内部调用的底层函数不同。

void RFFC507x::flush() {
	if( _
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值