TI中文支持网
TI专业的中文技术问题搜集分享网站

关于CC1310 中easylink的使用问题

节点主要程序如下

while(!Addr_Valid_Flag)
{

NodeAddr_TxPacket.dstAddr[0] = 0x4a;
NodeAddr_TxPacket.payload[0] = macAddrLsb;
NodeAddr_TxPacket.len = 1;
EasyLink_getAbsTime(&absTime);
NodeAddr_TxPacket.absTime = absTime + EasyLink_ms_To_RadioTime(RandomNum*20);
if(EasyLink_transmit(&NodeAddr_TxPacket) != EasyLink_Status_Success)
{
Display_printf(hDisplaySerial, 0, 0, "TX macaddr fail");
}

//set mac addr filter
concentratorAddress = 0x7a; 
EasyLink_enableRxAddrFilter(&concentratorAddress, 1, 1);
// receive serial number
if(EasyLink_receiveAsync(echoRxCenterCb,0) != EasyLink_Status_Success)
{
Display_printf(hDisplaySerial, 0, 0, "RX serial number fail");
}
//wait 1s for RX
Semaphore_pend(echoDoneSem, 1000000 / Clock_tickPeriod);

}
while(1)
{
Display_printf(hDisplaySerial, 0, 0, "Done");

}

主要想实现节点给网关发送mac地址,网关再回给节点一个确认信号,这是节点的部分程序。现在在调试期间遇到一个问题,在上电的第一个while循环时,easylink_transmit发送没有问题,但是没有接收到网关回复的确认信号,按照我程序的逻辑,应该进行下一次while循环,但是在第二次while循环时,easylink_transmit函数的返回状态就不正确了,不为EasyLink_Status_Success,就发送失败。所以想请大家帮忙看看我程序哪里有问题。

Viki Shi:

easylink_transmit是阻塞调用,指令没有完成之前会block,原地等待结果

user5018061:

回复 Viki Shi:

那为什么在第一个while循环时,easylink_transmit没有问题,在进入第二次循环时就有 问题了呢

user5018061:

回复 Viki Shi:

我换成EasyLink_transmitAsync也还是有这个问题

赞(0)
未经允许不得转载:TI中文支持网 » 关于CC1310 中easylink的使用问题
分享到: 更多 (0)