首页 > 代码库 > RFIC4463_F3C&D
RFIC4463_F3C&D
文档内容:
1、工程相关辅助函数编写,如复位延时函数等;
2、SPI接口程序编写,无线收发模块等使用SPI接口进行配置。
时间节点:2014/11/4~2014/11/6
一、 工程辅助函数编写
一个主程序的开始,首先要进行的是对相关模块进行复位和初始化等,工程中初始化操作如下:
对MCU进行初始化,MCU_Init如下:
MCU初始化中,对SPI接口初始化,即关SPI置nSEL为1。置SDN为0,定义有如下:
CLED置0,作为一个上电指示,当程序运行时拉低P0_7脚用于指示。
之后SDN拉高,由上述可得,实现对射频芯片的复位操作。
之后再经过一定时间的延时,完成对芯片的唤醒。
最后通过一定时间延时,发送POWER_UP命令至射频芯片,开始常规操作。
二、 SPI接口程序编写
MCU和RFIC之间使用SPI接口相联接,本工程采用4线方式,相应的引脚定义如下:
其中nSEL为片选使能信号,低电平有效;MISO为从器件的串行输出,即从RFIC到MCU;MOSI为主器件的串行输出,即从MCU到RFIC。
SPI程序头文件如下所示:
上述头文件中定义了使能和关闭SPI的两个函数SpiClear&SpiSet
由上可知,即通过使能nSEL实现。
另外包括四个函数SendData_NoResp/GetResp/Byte和SpiReadWrite。
前面的三个函数分别应用在不同的场景,有前述文档我们知道,每次发送的Command的是按byte发送的。
(1)对于WTS/Read_CMD/TX_FIFO_CMD等都是单byte的;
其余的一些CMD都是多个byte连着发送的,这里面又分为需要回复和不需要回复两种。
(2)对于GET_IN_STATUS_CMD需要GetResponse,WTS操作中亦是需要使用到GetResponse的;
(3)对于其余的大多数CMD都是直接发送连续,不需要回复,即GetNoResponse。
(4)上述三个函数归根至底层,都是将每byte通过SPI接口与MCU之间进行同行,即使用SpiReadWrite。
1、SpiReadWrite函数编写
A:首先定义读功能时,返回读取数值的变量temp;以及存储中断状态的restoreEA
B:发送SPI数据之前先关掉系统中断;
C:对输出的8bit数据进行处理:
a:拉低SCK,用于后面产生上升沿驱动数据传输;
b:判断数据高位,为1则置MOSI为1,反之置0;
c:拉高SCK,产生一个时钟上升沿驱动MOSI;
d:将8bit数据左移一位,处理次高位
e:下面程序为读时候的程序,将变量temp左移一位
f:判断MISO引脚上收到的数据,为1,则将temp地位置1,反之置0
g:循环上述操作,直到处理完8bit数据
D:数据传输结束,置SCK为0即默认状态
E:恢复系统中断状态
F:返回读取的数值
2、Spi_SendDataByte函数编写
该函数较简单,即使用一次1中函数即可,如下所示
3、Spi_SendDataGetResp函数编写
函数获取的值即为RFIC通过SPI接口传送至MCU的数据。程序如下:
函数通过向SPI接口发送无用数据(0XFF,即始终置MOSI为1),然后获取Response。
4、Spi_SendDataGetNoResp函数编写
函数通过SPI接口将数据传送至MCU的数据。程序如下:
函数向SPI接口发送规定长度的数据,*pbDataIn指向所发送的数据。
具体的关于上述函数如何使用,会在后期文档中讲述。
RFIC4463_F3C&D