接下来看看另一颗芯片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( _

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

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



