zoukankan      html  css  js  c++  java
  • RFIC4463_F3E

    文档内容:SI4463射频芯片的相关特定函数编写,比如SendCommand、WaitforCTS、GetResponse

    时间节点:2014/11/7~2014/11/8

    一、特定函数头文件设定

    命令和属性的发送需要SendCommand函数、每次发完命令之后需要等待RFIC返回一个CTS信号、有些命令如Read INT需要从RFIC获取一个Response。还有一些读写FIFO的函数等。头文件中上述函数定义如下:

     

    二、各函数定义

    1SendCommand

    主函数中,一般都把要发送的Command值和其相应的内容赋给一个数组,然后再依据长度和起始地址发送。Main函数中使用SendCommand如下:

     

    上述程序首先发送CMD即0x02,后面发送的值为写入Global Control Registers的值。具体的SendCommand的定义如下:

     

    程序中首先要置nSEL为0,选中射频IC,再使用无返回的发送函数发送bCmdLength长度的pbCmdData指向的数据。最后置nSEL为1,不选射频IC。

    2WaitforCTS

    关于CTS有流程图如下:

     

    CTS用于保证SI4463内部的MCU已经完成了命令并准备将数据从SDO口输出。当读出的数据为FFh时,表示数据准备好并用于传送了。相应程序如下:

     

    片选RFIC后,发送CTS_READ_CMD,之后使用带返回的SPI发送指令,并将返回的数据存入bCtsValue,断开片选。每次返回的值要进行判断,若不等于上面时序中所提到的FFh则再次尝试,可是尝试次数也是有限制的,即MAX_CTS_RETRY,定义如下:

     

    当超过了最大尝试次数,依然没能读出正确的值时,返回1。返回0表示CTS到达了,返回1表示在最大尝试次数内CTS返回失败。

    3GetResponse

    GetResponse在Main函数中只用在获取清除中断命令状态的后面,如下图所示:

     

    GetResponse实现的功能不仅是WaitForCTS这一个功能,它还需要将读到的数值返回给变量abApi_Read中。程序如下所示:

     

    前面的语句类似WaitForCTS,后面新添加了一个Spi_SendDataGetResp,用于将读出的bRespLength长度的数据存到pbRespData中。

    4ReadRxDataBuffer

    进行读取FIFO内部的数据,同WaitForCTS类似,都需要先发送一个关于这个操作的Command,程序如下:

     

    由程序中可以看到,需要先发送RX_FIFO_READ命令。再使用SendDataGetResp函数获得FIFO中的数据。

    5WriteTxDataBuffer

    往FIFO中写数据,和4中的内容类似,只是内部使用的命令行与函数有区别。

     

    从上述程序中可看到,使用的函数为SendDataNoResp,与上面读取FIFO时候是不同的。

    上面的函数就构成了工程中所使用函数的主体部分。

    一切都是最好的安排,感谢生命中所遭遇的一切!
  • 相关阅读:
    Master公式计算递归时间复杂度
    对数器的使用
    HTML翻转菜单练习
    剑指offer题目解答合集(C++版)
    HTML---仿网易新闻登录页
    两个有序数组中的中位数以及求第k个最小数的值
    算法之重建二叉树
    AFNetWorking 上传功能使用及源码分析
    图片Alpha预乘的作用[转]
    C#/.NET 学习之路——从入门到放弃
  • 原文地址:https://www.cnblogs.com/sunxuxu/p/4137931.html
Copyright © 2011-2022 走看看