This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC1310:UART 射频桥接器

Guru**** 2380000 points
Other Parts Discussed in Thread: SMARTRF06EBK, CC1310
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/687536/cc1310-uart-rf-bridge

器件型号:CC1310
主题中讨论的其它部件:SMARTRF06EBKCC1350SYSBIOS

您好论坛!

我正在处理一个基本上是 UART 桥接器的项目。下面是项目的流控制:

发送器(使用 SMARTRF06EBK 的 CC1310 DK):

1)等待 UART 数据、直到使用 UART Echo API 接收到16个字节@38400bps。

2)使用 EasyLink Tx 异步 API 无线传输数据

接收器(使用 SMARTRF06EBK 的 CC1310 DK):

1)等待使用 Easy Link Rx 异步 API 通过无线接收发送的数据

2)通过 UART 发送接收到的数据(16字节)@38400bps

2个板独立运行代码、基本上是单工配置、发送器只能发送、而接收器只能接收。 没有后台进程。

如果我在发送端 UART 的字节之间没有任何延迟地发送不间断数据、那么目标应用就可以完美工作。

但是、如果发送器端 UART 的字节之间存在一些延迟、例如几毫秒、如果我将波特率保持在接收器38400、则接收器端会收到损坏的数据包。

但是、如果我将接收器 UART 侧的波特率更改为57600bps、那么无论我发送数据的速度是多慢还是多快、问题都会得到解决。

当我尝试调试该问题时、我发现接收器节点上的 UART 发送功能溢出、当再次调用 UART 写入功能时、UART 已经在发送数据、这就是当数据使用57600bps 快速传输时、问题得到解决的原因。'

约束条件是、我必须使波特率在两侧都保持相同(应用约束)。

请指导我如何解决问题。

此致

Ali

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ali、
    您是在阻塞模式还是回拨模式下使用 UART?

    这里还有一个示例、该示例执行一些类似的操作
    e2e.ti.com/.../586620

    此致、
    Prashanth
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好,普拉什朗

    我是 UART TX UART Rx EasyLink TX 异步和轻松链接 Rx 异步...所有4个功能均处于同步模式

    如果以等效的方式发送数据、则 intervals..it 可以正常工作...当数据在无间隔的情况下发送时、则为 fine...it 只有当数据不对称地发送时、才是当我发现问题时... 28个数据包中有3到4个数据包损坏...其余 25正常

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ali、
    我不知道为什么会发生这种情况。 是否可以共享代码片段?
    此致、
    Prashanth
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、当然...我将与 you...in 分享我认为不应该发送固定数据包数据的平均时间...而是使用一个周期等于通过 UART @38400bps...in 发送16字节所需时间的计时器中断。该持续时间...如果大于此时间、我应该发送尽可能多的字节 小于1...这样、我将能够每4ms 发送一次数据、从而使数据传输与非停止数据的传输一样对称
    或者、如果我要固定数据包大小、则填充额外的字节、使数据包大小始终等于16、持续时间为4ms、并丢弃接收器中的这些字节
    这两个想法如何?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../uart_5F00_rf_5F00_brdge_5F00_tx.c

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../uart_5F00_rf_5F00_brdge_5F00_rx.c

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经上传了这两个软件的片段、请忽略任何错误、因为我没有编译和下载、请告诉我为什么当波特率在两边与 I-e 38400相似时、我无法传输慢速和快速数据的混合数据、
    如果输入端的数据流不停止、我可以发送数据。
    如果我将接收器侧的波特率切换为57600、那么一切看起来都可以正常工作
    @到智能设置未连接、我使用的是 DSSS=4、K=4 μ s 符号速率为500kbaud、接收器端的 Rx 滤波器带宽为1243Hz、偏差为250kHz
    由于我使用的 DSSS=4、125远高于38.4kbps、因此有效吞吐量为500/4=125kbaud、因此我看不到溢出的任何可能性
    请提供指导
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ali、

    您的代码一瞥。 我看到您正在回调函数 rxDoneCb 中执行 UART_WRITE。 通常、回调函数应用于设置标志或发布信标、并避免过度处理。 我建议您将 UART_WRITE 输出到新任务中、并将该任务上的信标发布到 rxDoneCb 函数中。 请在 此处访问 e2e.ti.com/.../586620、访问4034.uartRxTx_CC1350_LAUNCHXL_TI.zip

    此致、
    Prashanth
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好,普拉什朗

    感谢您的反馈和时间。

    我看到您提到的示例是在单独的任务中执行该操作的正确方法、但我的 UART 写入函数不是回调函数?那么、该函数如何算作处理?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    uartwere()不是回调函数,但它会触发回调 UART_WRITE_CB()。 当您的函数可以使用另一个回调函数(RF Rx CB)触发回调(UART CB)时、可能会出现意外行为。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好普拉什特!
    我能够解决 issue...it 与射频吞吐量有关的问题。我使用了宽带 DSSS 补丁、其中 DSSS=4、k=4、当我切换到 DSSS=1、k=4时、无论数据输入到发送器的速度或速度如何、问题都得到了解决、这是数据流过大的情况 接收器、因为我的吞吐量是500/2/4=62.5kbps、因为 DSSS=4和1/2速率 FEC……所以有时无法处理38400 UART 波特率、并且错过了一些数据包。
    此致
    Ali
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我还有02个与同一应用相关的小问题
    1)我在回调模式下和 UART 回调内部被称为 UART 读取功能,以保持回调,1因为应用程序限制,我一次读取1个字节。如果我打开系统,然后将数据从 PC 发送到发送器,它工作正常,但如果是 数据是通过电缆发送的、我通过 PC 传输 UART 数据包中途将发送器翻转过来、我的程序会挂起一些时间、在下电上电上电上电时会出现问题、有时需要多个上电周期、我正在使用 CC1310 emk 开启 我的自定义板没有调试引脚、因此无法在 emk 位于自定义板上时调试代码、我必须取出代码并将其放入 DK Smarttrf06板进行调试、因此我无法同时接收 UART 数据和进行调试、我正在进行解调 全新电路板、希望您能在平均时间内提供帮助。
    2)因此、我现在使用的是 SF=1或2的 WB DSSS 模式、因此整个过程是125kbps 或250kbps、我想使用射频简易链路设置频率 API 快速更改射频频率、我无法快速更改频率、因为某些原因、API 阻止函数花费太长。为什么是 PLL 缓慢处理新频率???????。我使用了使用 DSSS 的 LRM 模式、是 WB DSSS 还是我使用的设置、但我没有发现任何此类问题、
    我对 LRM 模式的射频性能比 WB DSSS 更满意、但数据速率是我的应用 constraint...please 指南
    此致
    我正在连接我的 WB DSSS 模式设置
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    // TI-RTOS 射频模式对象

    RF_Mode RF_PROP =

     rfMode = RF_MODE_Proprietary"子模式1
     .cpePatchFxn =&rf_patch_cpe_genfsk、
     .mcePatchFxn =&rf_patch_mce_wb_DSSS、
     .rfePatchFxn = 0、
    };

    //覆盖 CMD_PROP_RADIO_DIV_SETUP
    uint32_t pOverrides[]=

       MCE_RFE_OVERRIDE (1、0、0、0、4、 0)、//从 RAM 运行 MCE、无 RFE 补丁(PA 斜升)
       //MCE_RFE_OVERRIDE (1、0、0、1、0、 0)、//从补丁运行 MCE 和 RFE、应用 PA 斜坡补丁
       HW32_array_override (0x6088.1)、
       (uint32_t) 0x0000001A、
       HW32_array_override (0x4038.1)、
       (uint32_t) 0x00000037、
       HW_REG_OVERRIDE (0x4020、0x7F00)、
       HW_REG_OVERRIDE (0x4064、0x0040)、     
       (uint32_t) 0x684A3、  //合成:设置 FREF = 4MHz (24MHz/6)
       (uint32_t) 0xC0040141、  
       (uint32_t) 0x0533B107、
       (uint32_t) 0x0A480583、  
       (uint32_t) 0x7AB80603、
       (uint32_t) 0x02010403、  
       (uint32_t) 0x00108463、  
       (uint32_t) 0x04B00243、
       ADI_REG_OVERRIDE (1、4、0x1F)、
       ADI_HALFREG_OVERRIDE (1、7、0x4、0x4)、
       HW_REG_OVERRIDE (0x6084、0x35F1)、
       (uint32_t) 0x00038883、
       (uint32_t) 0x00FB88A3、
       HW_REG_OVERRIDE (0x6088、0x1F0E)、// AGC 基准电平
       HW_REG_OVERRIDE (0x608C、0x3F13)、//PA 斜升
       // TX 功率覆盖
       ADI_REG_OVERRIDE (0、12、0xF9)、
       // LRM 覆盖
       HW_REG_OVERRIDE (0x52AC、0x0B03)、//DSSS = 4、K=4
       HW_REG_OVERRIDE (0x5108、0x0048)、//同步的相关器阈值
       //HW_REG_OVERRIDE (0x50F4、0x5014)、
       //HW_REG_OVERRIDE (0x50F8、0x0050)、
       ADI_REG_OVERRIDE (1、0x12、0x22)、 //将 RX_OUTQP 设为 ATEST0、将 RX_OUTIN 设为 ATEST 1
       (uint32_t) 0xFFFFFFFF、
    };


    // CMD_PROP_RADIO_DIV_SETUP
    RFC_CMD_PROP_RADIO_DIV_SETUP_t RF_cmdPropRadioDivSetup =

       .commandNo = 0x3807、
       .status = 0x0000、
       .pNextOp = 0、//插入适用的指针:(uint8_t*)&xxx
       .StartTime = 0x00000000、
       .startTrigger.triggerType = 0x0、
       .startTrigger.bEnaCmd = 0x0、
       .startTrigger.triggerNo = 0x0、
       .startTrigger.PastTrig = 0x0、
       .condition.rule = 0x1、
       .condition.nSkip = 0x0、
       .module.modType = 0x0、         //针对 LRM 模式进行了更改
       .modulation.deviation = 0x2bc、     /0x2bc、175KHz 偏差(250*100)
       symbolRate.prescale = 0xF、        /0xF、预分频值为15
       symbolRate.rateWord = 0x50000、    /0x50000、500kbps、预分频器为15。
       rxBw = 0x2F、                      //1410KHz 带宽
       .PreambBytes = 0x4、        
       .Conf.前置 放大器模式= 0x0、
       .formatConf.nSwBits = 0x20、        //32位同步字
       .formatConf.bBitVersal = 0x0、
       .formatConf.bMsbFirst = 0x0、       //首先为 LRM 模式发送 LSB
       .formatConf.fecMode = 0x0、         //未编码
       formatConf.whitenMode = 0x0、
       .config.frontEndMode = 0x0、        //差分
       config.biasMode = 0x1、            //外部偏置
       config.bNoFsPowerUp = 0x0、
       TxPower = 0xa73f、
       .pRegOverride = pOverrides、
       .centerFreq = 915、
       //.intFreq = 0x8000、                 // TX (如果默认)、1MHz (如果 RX)
       .intFreq = 0x0064、                 默认情况下为//TX、RX 情况下为1MHz
       .loDivider = 0x05、
    };

    // CMD_FS
    RFC_CMD_FS_t RF_cmdF =

       .commandNo = 0x0803、
       .status = 0x0000、
       .pNextOp = 0、//插入适用的指针:(uint8_t*)&xxx
       .StartTime = 0x00000000、
       .startTrigger.triggerType = 0x0、
       .startTrigger.bEnaCmd = 0x0、
       .startTrigger.triggerNo = 0x0、
       .startTrigger.PastTrig = 0x0、
       .condition.rule = 0x1、
       .condition.nSkip = 0x0、
       .frequency = 915、            //915MHz 频率
       fractFreq = 0x0000、
       synthConf.bTxMode = 0x0、
       .synthConf.refFreq = 0x0、
       .__dummy0 = 0x00、
       .__dummy1 = 0x00、
       .__dummy2=0x00,
       .__dummy3 = 0x0000、
    };

    // CMD_PROP_TX
    RFC_CMD_PROP_TX_t RF_cmdPropTx =

       .commandNo = 0x3801、
       .status = 0x0000、
       .pNextOp = 0、//插入适用的指针:(uint8_t*)&xxx
       .StartTime = 0x00000000、
       .startTrigger.triggerType = 0x0、
       .startTrigger.bEnaCmd = 0x0、
       .startTrigger.triggerNo = 0x0、
       .startTrigger.PastTrig = 0x0、
       .condition.rule = 0x1、
       .condition.nSkip = 0x0、
       .pktConf.bFsOff = 0x0、
       .pktConf.bUseCrc = 0x1、
       .pktConf.bVarLen = 0x1、
       .pktLen = 0x1E、//设置应用有效载荷长度
       syncdWord = 0x333C3C33、
       .pPKT = 0、//插入适用的指针:(uint8_t*)&xxx
    };

    // CMD_PROP_RX
    RFC_CMD_PROP_RX_t RF_cmdPropRx =

       .commandNo = 0x3802、
       .status = 0x0000、
       .pNextOp = 0、//插入适用的指针:(uint8_t*)&xxx
       .StartTime = 0x00000000、
       .startTrigger.triggerType = 0x0、
       .startTrigger.bEnaCmd = 0x0、
       .startTrigger.triggerNo = 0x0、
       .startTrigger.PastTrig = 0x0、
       .condition.rule = 0x1、
       .condition.nSkip = 0x0、
       .pktConf.bFsOff = 0x0、
       .pktConf.bRepeatOk = 0x0、
       .pktConf.bRepeatNok = 0x0、
       .pktConf.bUseCrc = 0x1、  
       .pktConf.bVarLen = 0x1、
       .pktConf.bChkAddress = 0x0、
       .pktConf.endType = 0x0、
       .pktConf.filterOp = 0x0、
       rxConf.bAutoFlushIgnored = 0x1、
       rxConf.bAutoFlushCrcErr = 0x1、
       rxConf.bIncludeHdr = 0x1、
       rxConf.bIncludeCrc = 0x0、
       rxConf.bAppendRssi = 0x1、
       rxConf.bAppendTimestamp = 0x0、
       rxConf.bAppendStatus = 0x1、
       syncdWord = 0x333C3C33、
       .maxPktLen = 100、//确保数据输入足够大
       .address0 = 0xAA、
       .address1 = 0xbb、
       endTrigger.triggerType = 0x1、
       .endTrigger.bEnaCmd = 0x0、
       .endTrigger.triggerNo = 0x0、
       .endTrigger.PastTrig = 0x0、
       .EndTime = 0x00000000、
       .pQueue = 0、//插入适用的指针:(dataQueue_t*)&xxx
       .pOutput = 0、//插入适用的指针:(uint8_t*)&xxx
    };
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    亲爱的普拉什兰特!

    我仍在等待回复!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ali、

    UART 挂起:与 Tx 任务相比、UART 在低优先级任务上运行吗? 降低波特率是否有帮助?

    2.为了快速更改频率,您可以尝试跳过 EasyLink 层并直接使用射频命令。 请检查此主题并查找 setFrequency()实现 e2e.ti.com/.../2543389

    此致、
    Prashanth
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好普拉什特!

    我正在运行一个任务...如果我一次读取16个字节、问题就会消失。我最近没有尝试过1到16之间的值、但问题仅出现几次、就像每次读取5次、每次读取1个字节一样...代码段 我所附的内容适用于本次讨论。为清楚起见、如果我切换到2个任务、优先级是1还是2??? 较高的数字定义了优先级或优先级?

    Regardinq 快速频率更改...SIR 问题仅出现在 WB DSSS 模式下、而不是在专有50kbps 模式下。我已在上述帖子中设置 SmartRF 设置。我使用50kbps 模式下的射频轻松链接、而 rfeasylinl 频率分配 API 工作得非常好

    此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ali、
    不建议在回调中读取 UART_Read()或 UART_write()。 尤其是当回调的可能迭代次数较高时、就像一次只读取1个字节一样。 任务堆栈很可能会溢出并导致其崩溃。 请在任务中执行 UART_READ(),并仅在回调中发布该任务的信号量。

    您能否在 WB DSSS 模式下共享有关频率变化问题的更多信息。 最好有一个代码片段来更改频率。 在使用 WB DSSS 模式时,setFrequency()中提供的示例是否也不起作用?

    此致、
    Prashanth
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好普拉什特!
    很抱歉、我对某些内容有点忙、但即使完成了一个独立的任务来传递 UART 读取函数、问题仍然存在:
    请在下面找到代码片段并阅读文章末尾的注释

    /* XDCtools 头文件*/
    #include
    #include
    #include
    #include
    /* BIOS 头文件*/
    #include
    #include
    #include
    #include
    #include
    /* TI-RTOS 头文件*/
    #include
    /*板头文件*/
    #include "Board.h"
    /* EasyLink API 头文件*/
    #include "EasyLink/EasyLink.h"
    /*取消定义以不使用异步模式*/
    #define RFEASINKTX_ASYNC
    #define RFEASINKTX_TASK_STACK_SIZE 1024
    #define RFEASINKTX_TASK_PRIORITY 2.
    #define UARTRX_TASK_STACK_SIZE 1024
    #define UARTRX_TASK_PRIORITY 3.

    Task_Structt txTask;//不是静态的,因此可以在 ROV 中看到*/
    静态 Task_Params txTaskParams;
    静态 Task_Params uartxTaskParams;
    静态 uint8_t txTaskStack[RFEASINKTX_TASK_STACK_SIZE];
    静态 uint8_t uarraxTaskStack[UARTRX_TASK_STACK_SIZE];
    /*引脚驱动器手柄*/
    静态 PIN_Handle pinHandle;
    静态 PIN_STATE 引脚状态;
    /*
    *应用 LED 引脚配置表:
    *-所有 LED 板 LED 均熄灭。
    *
    PIN_Config pinTable[]={
    BOARD_LED1 | PIN_GPIO_OUTP_EN | PIN_GPIO_LOW | PIN_PushPull | PIN_DRVSTR_MAX、
    BOARD_LED2 | PIN_GPIO_OUTP_EN | PIN_GPIO_LOW | PIN_PushPull | PIN_DRVSTR_MAX、
    PIN_TERMINATE
    };
    uint8_t UART_pkt_received=0;
    静态 uint16_t seqNumber;
    静态 Semaphore_handle txDoneSem;
    静态 Semaphore_handle uartxDoneSem;
    /*UART 回读功能*/
    void UART_READ_CB ();
    空 UART_READ_CB ()

    Semaphore_post (uartxDoneSem);

    空 txDoneCb (EasyLink_Status 状态)

    if (status =EasyLink_Status_Success)


    Semaphore_post (txDoneSem);



    静态空 rfEasyLinkTxFnx (UArg0、UArgarg1)

    /*为异步创建一个信号量*/
    Semaphore_Params 参数;
    ERROR_Block EB;
    /* Init 参数*/
    Semaphore_Params_init (&params);
    ERROR_INIT (&EB);
    /*创建信标实例*/
    txDoneSem = Semaphore_create (0、&params、&EB);
    EasyLink_init (EasyLink_Phy_Custom);
    EasyLink_setFrequency (868000000);
    EasyLink_TxPacket txPacket ={{0}、0、0、{0}};
    txPacket.dstAddr[0]= 0xAA;
    /*将输出功率设置为14dBm */
    EasyLink_setRfPwr (14);
    /*UART 相关参数*/
    UART_Handle UART;
    UART_Params uartParams;
    UART_PARAMS_INIT (uartParams);
    uartParams.writeDataMode = UART_DATA_BINARY;
    uartParams.readDataMode = UART_DATA_BINARY;
    uartParams.readReturnMode = UART_return_full;
    uartParams.readMode=uart_mode_callback;
    uartParams.readcallback=(UART_callback) UART_READ_CB ();
    uartParams.readEcho = UART_ECHO_OFF;
    uartParams.baudrate = 38400;
    UART = UART_OPEN (Board_UART0、uartParams);
    UART_READ (UART、INPUT、1);
    while (1)

    if (UART_buffer_full=1)

    UART_buffer_full=0;
    计数= 0;
    memcpy (txPacket.payload、UART_temp_buffer、16];
    txPacket.len =16;
    EasyLink_transmit异 步(&txPacket、txDoneCb);
    Semaphore_pend (txDoneSem、BIOS_wait_forever);



    静态空 uartxfunction (UARg arg0、UARg arg1)

    Semaphore_Params UART_Rx_params;
    ERROR_Block UART_EB;
    /* Init 参数*/
    Semaphore_Params_init (&UART_Rx_params);
    ERROR_INIT (&UART_EB);
    /*创建信标实例*/
    uartxDoneSem = Semaphore_create (0、&UART_Rx_params、&UART_EB);
    while (1)

    Semaphore_pend (uartxDoneSem、BIOS_wait_forever);
    UART_temp_buffer[count]=输入[0];
    count++;
    if (计数==16)

    UART_buffer_full=1;

    UART_READ (UART、INPUT、1);



    void txTask_init (PIN_Handle inPinHandle)

    pinHandle = inPinHandle;
    Task_Params_init (&txTaskParams);
    TxTaskParams.STACKSIZE = RFEASYS LINKTX_TASK_STACK_SIZE;
    txTaskParams.priority = RFEASINKTX_TASK_priority;
    txTaskParams.stack =&txTaskStack;
    txTaskParams.arg0 =(UINT) 1000000;
    Task_construction (&txTask、rfEasyLinkTxFnx、&txTaskParams、NULL);

    void uartxTask_init (PIN_Handle inPinHandle)

    pinHandle = inPinHandle;
    Task_Params_init (&uartxTaskParams);
    uartxTaskParams.STACKSIZE = UARTRX_TASK_STACK_SIZE;
    uartxTaskParams.priority = UARTRx_task_priority;
    uartxTaskParams.stack = uarraxTaskStack;
    uartxTaskParams.arg0 =(UINT) 1000000;
    Task_construct(&uartxTask, uartxfunction,&uartxTaskParams, NULL);

    /*
    *==== main ====
    *
    int main (空)

    /*呼叫板初始化功能。 *
    Board_initGeneral();
    /*打开 LED 引脚*/
    pinHandle = PIN_OPEN (&pinState、pinTable);
    if (!pinHandle){
    System_abort ("初始化板 LED 引脚时出错");

    /*清除 LED 引脚*/
    PIN_setOutputValue (pinHandle、Board_LED1、0);
    PIN_setOutputValue (pinHandle、Board_LED2、0);
    txTask_init (pinHandle);
    uartxtask_init (pinHandle);
    /*启动 BIOS */
    BIOS_start();
    返回(0);

    非常感谢您的帮助
    我没有共享完整的代码、我知道代码看起来可以将接收缓冲区阈值设置为16字节而不是1字节、功能保持不变、但情况并非如此、我只分享了与问题相关的内容、其余代码 与手头的任务无关。
    此致
    Ali
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Prashant 我在论坛上发现了一个主题、该主题强调了我目前面临的几乎相同的问题、请查看该帖子。但不同之处在于论坛上的人员使用的是 nortos、而我使用的是 TI RTOS drivers.below Thread、请也阅读我在该主题上的帖子、在该帖子中、我已向该主题的专家详细解释了我的问题。

    e2e.ti.com/.../2571251
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    关于频率变化问题、我正在使用我在上一帖子中共享的设置、请浏览我之前的帖子、看看我在 WB DSSS 补丁中使用的设置是否有问题、如果我在代码开始时仅设置一次频率 对于864000 MHz 或任何其他方式的任何值、我不会遇到任何问题、但如果尝试在数据包传输之间获取频率、发送器显然需要比应有的时间更长、或者 PLL 设置是否无法快速更改频率 我正在期待。我在中使用 easylinksetfrequency API 在我使用 easylinkasyncdtransmit API 发送完整的射频数据包之后、您可以参阅我在下面附加的代码段:

    EasyLink_transmit异 步(&txPacket、txDoneCb);
    Semaphore_pend (txDoneSem、BIOS_wait_forever);
    EasyLink_setfrequency (next 通道);
    NEW_CHANNEL_+;
    if (NEW_CHANNEL=5)
    NEW_CHANNEL_0;

    当我使用50kbps 预定义的 SmartRF 设置时、我成功地实现了上述逻辑。然而、在这种情况下、由于我的 UART 速率为38400、并且我始终从 UART 接收数据以无线方式传输、我将 RF 数据速率保持在至少2到3次 UART 数据速率、这样我就能够通过射频快速发送数据、从而在我节省的时间内快速传输数据并设置新频率。
    我无法理解的是、为什么我只在保留共享的设置时才会遇到问题、如果我的设置对于数据包之间快速更改频率无效、那么请使用 WB DSSS 补丁与我共享工作设置。
    我使用的 DSSS=1、K=4的射频数据速率为500kbps、因此有效吞吐量为250kbps、足以适应38400的 UART 数据速率、但我仍然将数据速率降低到了低至9600bps、以查看我是否发生了一些溢出、而在这种情况下则是如此 的50kbps 预定义模式、我将预定义设置更改为140kbps 射频数据速率、上面的逻辑工作正常。
    期待您期待已久的帮助
    我需要帮助、我的时间很短
    此致
    Ali
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在此主题中上传的 RF_UART.zip 项目:

    e2e.ti.com/.../647411

    显示了一个将射频和 UART 组合在一起的选项
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢你!
    您所连接的代码使 UART 在阻塞模式下运行、而我在回调模式下使用 UART、每次读取1个字节
    此致
    Ali