主题中讨论的其他器件: SimpliciTI
您好!
我正在处理 CC430F5231模块。 我从 SLAA465C 中给出的示例代码开始。 我正在使用 LT_FIFO 代码。 但 TI 提供的就绪代码似乎无法正常工作。 它始终传输数据、但即使数据正确、CRC 校验也始终失败。 有人能帮我解决这个问题吗?
谢谢。
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.
您好!
我正在处理 CC430F5231模块。 我从 SLAA465C 中给出的示例代码开始。 我正在使用 LT_FIFO 代码。 但 TI 提供的就绪代码似乎无法正常工作。 它始终传输数据、但即使数据正确、CRC 校验也始终失败。 有人能帮我解决这个问题吗?
谢谢。
Piyush、
您是否能够使用 SmartRF Studio 确认器件正在正常通信? 我始终建议从 SmartRF Studio 开始、作为发送器和接收器。 然后、您转到后续步骤并根据 SLAA465C 中的示例代码创建自己的软件、但仍将 SmartRF Studio 用作接收器。 通过执行此操作、您可以确认您的发送器代码是否按预期工作、以便能够缩小问题范围。
此致、
/TA
Piysussh、
在我使用此驱动程序的经历中、我发现了我认为是错误的东西。 我只是想让您了解我发现的内容以及我的周围环境、从而为您提供帮助。 我发现使用代码时、芯片会产生错误、驱动程序会停止响应。 我将其追溯到以下函数:
//
//@fn ReadSingleReg
//@简要从无线电寄存器读取一个字节
//@param unsigned char addr Target 无线电寄存器地址
//@返回已读取字节的无符号 char data_out 值
//
unsigned char ReadSingleReg (unsigned char addr)
{
unsigned char data_out;
//检查有效的配置寄存器地址,0x3E 指的是 PATABLE
如果((addr <= 0x2E)||(addr == 0x3E))
//发送地址+指令+ 1个虚拟字节(自动读取)
RF1AINSTR1B =(addr | RF_SNGLREGRD);
其他
//发送地址+指令+ 1个虚拟字节(自动读取)
RF1AINSTR1B =(addr | RF_STATREGRD);
while (!(RF1AIFCTL1 & RFDOUTIFG))
;
DATA_OUT = RF1ADOUTB;//读取数据并清除 RFDOUTIFG
返回 DATA_OUT;
}
在需要修改一行代码的地方:
从: DATA_OUT = RF1ADOUT1B;//读取数据并清除 RFDOUTIFG
更改为 :data_out = RF1ADOUTB;//此调用不执行自动写入
这实际上也可以解决您的 CRC 错误问题、但我仍然建议您从 SmartRF Studio 开始、将其作为"已知良好的软件"
此致、
/TA
Matthew、您好!
是的、我使用的是与硬件连接的芯片天线。 同一硬件使用 RF Studio 进行了测试、可处理超过10、000个50字节的数据包、故障极少。 但是、当我使用 SLAA465C 中的 LT_FIFO 示例时、它不起作用。 特别是 CRC 校验。 如果我跳过 CRC 校验、则接收到的数据似乎会校正(平均>70%)。
我正面临着该主题提到的类似问题
https://e2e.ti.com/support/wireless_connectivity/proprietary_sub_1_ghz_simpliciti/f/156/t/569071
但是,从这次讨论中,我无法找到解决我的问题的办法。
无论以何种方式接收到的数据在大多数情况下都是正确的、我尝试在代码中插入手动 CRC 校验。 这将增加有效载荷、但我可以负担得起。
谢谢
-Piyush
尊敬的 Matthew:
1) 1)您使用的确切电路板和器件是什么、因为标题中提到的器件与问题说明中提到的器件之间存在差异
我正在使用基于 CC430F5137的开发板。 (抱歉、我在初始问题说明中输入错误。) 我在网上购买的这件硬软件。 同一硬件使用 SimpliciTI 协议并经过测试已超过6个月、运行正常。 此硬件以433MHz 运行。 我还使用 RFstudio 7测试了此硬件、如前所述工作正常。
2) 2)您是否正在使用固定或可变 LT_FIFO 示例?
是的、我正在使用 SLAA465C 应用报告中提到的 LT_FIFO 示例。 我已从文件夹 CC430x513x RF Examples>RF_Examples_CCS>Fixed_LT_FIFO 导入代码。
我已经对代码进行了一些修改。 我所做的更改是
433MHz 的 RFsettings (从 RFstudio 生成的文件)
一个发送器定期传输数据(*约1秒)并在传输后切换 LED。
另一个仅接收数据并切换 LED 的接收器、然后将其发送到连接到机器的串行端口(这是可选的)。
我没有在没有这些微小更改的情况下使用代码、因为我的硬件具有不同的连接。 但我认为它应该起作用。
现在、如果我启用 CRC 校验、则它会显示由于 CRC 故障而未成功接收数据。 但是、如果我跳过 CRC 校验并将数据发送到串行端口、那么大部分时间数据似乎都是正确的。
3) 3)我在电路板上执行了固定 LT_FIFO 示例的干净导入、并能够确认正确操作。 您是否能够在不对代码进行修改的情况下执行同样的操作?
是的、它是干净导入的、但有一些小警告、例如项目已使用不同的编译器进行编译等。 等等
由于我的硬件具有不同的连接和频率、因此我几乎不能说它是否正常工作。
如果您需要更多信息、请满足我的要求。
谢谢
尊敬的 Matt:
我也是这样做的、也是按照您的建议开始的。 我将再次尝试、并将进行最小的更改以解决问题。
我已开始使用套件 http://www.ti.com/tool/MSP-EXPCC430RFX
稍后、我切换到了与 eZ430类似的另一个硬件。 这与此套件 https://www.aliexpress.com/item/CC430F5137-development-board-CC430F6137-CC430-ez430-development-board-MSP430-CC1101/32642794077.html 类似
这款新硬件我已经过 RF Studio 测试、与 SimpliciTI 配合使用非常好、也用于某些项目。
根据您的建议、我将再次导入代码并尝试解决问题。 如果我遇到类似的问题、会将其发送给您。
谢谢
-Piyush