我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 2525|回复: 7

[技术文章] SX1268驱动程序设计

[复制链接]
  • TA的每日心情

    2024-10-6 20:55
  • 签到天数: 1 天

    [LV.1]初来乍到

    479

    主题

    247

    回帖

    1392

    积分

    二级逆天

    积分
    1392

    终身成就奖特殊贡献奖

    发表于 2020-7-22 09:20:35 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×
    一、STDBY模式
    芯片上电、复位和从睡眠模式唤醒,都会从Startup模式自动进入到STDBY模式。STDBY模式又称为待机模式或者旁路模式。


    在待机模式下,主机应在进入RX或TX模式之前配置芯片。默认情况下,系统选择13MHZ的RC振荡器,以降低功耗。除睡眠模式外,其它模式XTAL时钟处于打开状态。然而,只有在应用程序对时钟要求严格,我们才需要打开XOSX模块,并让它始终处于打开状态。


    待机模式下的XOSC或RC13M选择由命令SetStandby(…)中的模式参数决定。只使用RC13M的模式称为STDBY_RC,打开XOSC的模式称为STDBY_XOSC。


    如果要使用DC-DC,则应在电路处于STDBY_RC模式时使用SetRegulatorMode(…)命令进行选择,当进入STDBY_XOSC模式时,DCDC会自动打开。DCDC使用RC13M时钟,当目标电压比DC-DC低50 mV时,LDO将保持活跃状态。


    二、SetStandby函数
    The command SetStandby(...) is used to set the device in a configuration mode which is at an intermediate level of consumption. In this mode, the chip is placed in halt mode waiting for instructions via SPI. This mode is dedicated to chip configuration using high level commands such as SetPacketType(...).(SetStandby函数使得芯片进入一个配置模式,这个模式消耗中等水平的能量。在这个模式下,芯片处于停滞状态,以等待SPI指令。这个模式专门用于使用高级命令对芯片进行配置,例如SetPacketType)


    By default, after battery insertion or reset operation (pin NRESET goes low), the chip will enter in STDBY_RC mode running with a 13 MHz RC clock.(在缺省方式下,上电或硬复位后,芯片处于STDBY_RC模式,使用内部13M RC时钟)
    <p "pingfang="" "sf="" 255);="" 255,="" 26px;="" 77);="" 77,="" arial,="" auto;="" background-color:="" break-word;="" center;"="" color:="" display",="" line-height:="" microsoft="" normal;="" noto,="" overflow-x:="" pro="" rgb(255,="" rgb(77,="" roboto,="" sans-serif;="" sc",="" text-align:="" white-space:="" word-wrap:="" yahei",="" style="padding: 0px; margin-bottom: 16px; position: relative; font-family: "Helvetica Neue", Helvetica, "Hiragino Sans GB", PingHei, &quotingFang SC", STHeitiSC-Light, "Microsoft YaHei", "Lantinghei SC", Arial, sans-serif; max-width: 100%; color: rgb(119, 119, 119); font-size: 16px; background-color: rgb(255, 255, 255); box-sizing: border-box; outline: 0px;">

                                   
    登录/注册后可看大图
    <p "pingfang="" "sf="" 255);="" 255,="" 26px;="" 77);="" 77,="" arial,="" auto;="" background-color:="" break-word;="" center;"="" color:="" display",="" line-height:="" microsoft="" normal;="" noto,="" overflow-x:="" pro="" rgb(255,="" rgb(77,="" roboto,="" sans-serif;="" sc",="" text-align:="" white-space:="" word-wrap:="" yahei",="" style="padding: 0px; margin-bottom: 16px; position: relative; font-family: "Helvetica Neue", Helvetica, "Hiragino Sans GB", PingHei, &quotingFang SC", STHeitiSC-Light, "Microsoft YaHei", "Lantinghei SC", Arial, sans-serif; max-width: 100%; color: rgb(119, 119, 119); font-size: 16px; background-color: rgb(255, 255, 255); box-sizing: border-box; outline: 0px;">

                                   
    登录/注册后可看大图
    相关驱动程序如下:


    typedef enum
    {
    STDBY_RC                                = 0x00,
    STDBY_XOSC                              = 0x01,
    }RadioStandbyModes_t;
    void CSX1268::SX126xSetStandby(RadioStandbyModes_t standbyConfig)
    {
    SX126xWriteCommand(RADIO_SET_STANDBY, (uint8_t*)&standbyConfig, 1);
    if(standbyConfig == STDBY_RC)
    {
    OperatingMode = MODE_STDBY_RC;
    }
    else
    {
    OperatingMode = MODE_STDBY_XOSC;
    }
    }


    程序调用SX126xWriteCommand函数写入相关命令,然后根据相关参数,设置相应的模式。改进后的SX126xWriteCommand函数程序如下:


    void CSX1268::SX126xWriteCommand(RadioCommands_t command, uint8_t *buffer, uint16_t size)
    {
    SX126xCheckDeviceReady( );

    Target.DisableInterrupt();
    this->Select();
    this->WriteByte((uint8_t)command);
    for(uint16_t i = 0; i < size; i++)
    {
    this->WriteByte(buffer);
    }
    this->Deselect();
    Target.EnableInterrupt();

    if( command != RADIO_SET_SLEEP )
    {
    SX126xWaitOnBusy( );
    }
    }
    程序首先调用SX126xCheckDeviceReady函数,判断芯片的当前状态,然后关闭全局中断(进入临界区),通过SPI总线向芯片发送命令,命令发送完毕后打开全局中断(离开临界区)。最后判断,如果不是进入SLEEP模式,就等待芯片的BUSY引脚为低。


    接下来,我们再看SX126xCheckDeviceReady函数,程序如下:


    void CSX1268::SX126xCheckDeviceReady(void)
    {
    if((this->OperatingMode == MODE_SLEEP) || (this->OperatingMode == MODE_RX_DC))
    {
    SX126xWakeup();
    SX126xAntSwOn();
    }
    SX126xWaitOnBusy();
    }


    程序判断当前工作模式是否是SLEEP或RX_DC,如果是则调用唤醒函数,并打开天线开关。对于上电或应复位,我们只需在程序起始时,设置模式为SLEEP,就可以使该函数生效。程序最后,判断BUSY引脚是否为低,以确认芯片是否可以接收SPI指令。

    评分

    参与人数 1威望 -5 收起 理由
    老吴 -5 与版规不符,下不为例

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 08:18
  • 签到天数: 108 天

    [LV.6]常住居民II

    0

    主题

    3737

    回帖

    7552

    积分

    二级逆天

    积分
    7552

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    发表于 2020-7-22 09:24:08 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-9-3 11:14
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    52

    主题

    2985

    回帖

    1331

    积分

    1元学习Allegro(1期)

    积分
    1331

    社区居民终身成就奖特殊贡献奖优秀斑竹奖

    发表于 2020-7-22 10:13:34 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 10:30
  • 签到天数: 66 天

    [LV.6]常住居民II

    61

    主题

    1万

    回帖

    8333

    积分

    二级逆天

    积分
    8333

    终身成就奖特殊贡献奖原创先锋奖社区居民灌水天才奖优秀斑竹奖宣传大使奖忠实会员最爱沙发社区劳模

    QQ
    发表于 2020-7-22 10:44:02 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    7 天前
  • 签到天数: 1 天

    [LV.1]初来乍到

    2

    主题

    590

    回帖

    779

    积分

    二级逆天

    积分
    779

    社区居民终身成就奖

    QQ
    发表于 2020-7-22 11:02:32 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    1809

    回帖

    8

    积分

    二级逆天

    积分
    8

    社区居民终身成就奖特殊贡献奖原创先锋奖

    QQ
    发表于 2020-9-30 02:50:31 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-8-29 12:41
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    475

    回帖

    470

    积分

    二级逆天

    积分
    470

    社区居民终身成就奖

    QQ
    发表于 2020-10-3 06:12:30 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-6-14 16:03
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    0

    主题

    1万

    回帖

    7618

    积分

    二级逆天

    积分
    7618

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    QQ
    发表于 2022-7-29 14:48:16 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    公告:服务器刚移机,
    大家请不要下载东西。
    会下载失败


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    ( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

    平平安安
    TOP
    快速回复 返回顶部 返回列表