• 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时候是不同的。

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

    一切都是最好的安排,感谢生命中所遭遇的一切!
  • 相关阅读:
    Python脚本传參和Python中调用mysqldump
    金蝶K3管理软件PDA条码解决方式,盘点机与金蝶K3无缝对接
    android设置中的Preferencescreen使用方法介绍与分析
    设计模式之6大原则(3)-依赖倒置原则
    C# DataTable的詳細使用方法
    C++学习笔记13-类继承
    hdu1023
    Haskell 差点儿无痛苦上手指南
    三角形、长方形、正方形、梯形、圆等的周长计算公式和面积计算公式
    (黑客游戏)HackTheGame1.21 过关攻略
  • 原文地址:https://www.cnblogs.com/sunxuxu/p/4137931.html
Copyright © 2020-2023  润新知