您好!
首先、为了节省材料复制、请参阅此主题、了解有关我正在使用的 PHY 设置的详细信息:
因此问题产生的一个问题是、我无法获得 RFC_CMD_HS_RX_s.rxConf.bAppendStatus 才能正常工作。
我试图通过实施地址过滤来调查伪同步-在没有替代方案的情况下、这似乎是扩展同步字的有效方法( RFC_CMD_HS_RX_s 结构在某些方面看来是有限的,而例如, RF_cmdPropRxAdv 允许两个32位同步字、这可能已经解决了我的原始问题)。 但是 、由于 RFC_CMD_HS_RX_s 没有 RFC_hsRxStatus_t 成员、因此我能够访问 addressInd 字段以证明我的地址过滤工作正常的唯一方法是使用 RFC_CMD_HS_RX_s.rxConf.bAppendStatus。 RFC_hsRxStatus_s 的文档"接收状态字可能附加到接收缓冲区中的消息"建议 bAppendStatus 将附加到 两个字节 回复到接收到的数据包。 因此我有以下代码、其中 NUM_APTERD_BYTES 为0、现在为2:
#define NUM_DATA_ENTRIES 5 #define NUM_MAILBOX_ENTRIES 10 #define NUM_APPENDED_BYTES 2 // This will accommodate the bAppendStatus two bytes #define RF_QUEUE_DATA_ENTRY_HEADER_SIZE (8 + 4) // Pointer = General + uint32_t pointer pData #define RF_QUEUE_QUEUE_ALIGN_PADDING(length) ((4 - (length % 4)) % 4) // Padding offset #define RF_QUEUE_DATA_ENTRY_BUFFER_SIZE(numEntries, dataSize, appendedBytes) \ (numEntries*(RF_QUEUE_DATA_ENTRY_HEADER_SIZE + /* dataSize + */ appendedBytes + RF_QUEUE_QUEUE_ALIGN_PADDING(RF_QUEUE_DATA_ENTRY_HEADER_SIZE + /* dataSize + */ appendedBytes)))
注意、 数据大小 被注释掉(即零)是因为我使用的是指针数据类型、因此实际队列本身中没有有效负载/数据。
我对工作代码所做的唯一其他更改是在发布 RF RX 命令之前:
RF_cmdRxHS.rxConf.bAppendStatus = 1;
只有这两个变化,所有的接收失败。 我有一些调试、输出如下内容:
struct __RFC_STRUCT rfc_hsRxOutput_s {
uint16_t nRxOk; //!< Number of packets that have been received with CRC OK
uint16_t nRxNok; //!< Number of packets that have been received with CRC error
uint16_t nRxAborted; //!< Number of packets not received due to illegal length or address mismatch
uint8_t nRxBufFull; //!< Number of packets that have been received and discarded due to lack of buffer space
我看到除0之外的所有成员的值 nRxBufFull ,该值在每次接收失败时递增。
- 可 RFC_hsRxStatus_s 可以通过附加到数据包以外的任何方式进行访问?
- 我没有这样做、应该得到的是、 bAppendStatus 工作中?
TIA、
Sean。