1、我这大约有100个终端,一个接收器。现在在测试的程序都没有开启ACK。发现有掉线的问题。
2、我的程序没跑协议栈,不组网,不找网,终端采集完数据直接发送,然后休眠。因为终端地址太多,我把主机的地址过滤关闭了。也就没法自动开启应答。所以想手动发送ACK帧,来保证数据发送不成功时,再次发送。
3、数据发送函数basicRfSendPacket(HOST_ADDR , pTxData, APP_PAYLOAD_LENGTH);数据接收函数:(basicRfReceive(pRxData, APP_PAYLOAD_LENGTH, NULL);
4、#define SACK() st(RFST = 0xD6;),我想在接收的数据判断正确之后,通过执行SACK()发送一个确认帧,通过监听发现主机并没有发送确认帧。
不知何原因,还是有什么设置没做。
初始化函数:
// Enable auto crc
FRMCTRL0 |= AUTO_CRC;
FRMFILT0 =0x0C; //关闭地址过滤
FRMFILT1 |=0x04; //定义未决数据位
SRCMATCH =0x0; // Recommended RX settings
TXFILTCFG = 0x09;
AGCCTRL1 = 0x15;
FSCAL1 = 0x00;
Yue TANG:
不组网,推荐用TI-MAC, 这种节点比较多的情况,你需要考虑的不仅是回ack,还有退避,冲突检测等。TIMAC可以帮你处理好这些。
http://www.ti.com/tool/timac?keyMatch=ti%20mac&tisearch=Search-EN-Everything
yongzhen yan:
回复 Yue TANG:
非常感谢!我试一下 。