工具/软件:
大家好。
我正在努力解决我的 CC1310器件的一个问题、希望能得到您的帮助。
我的 CC1310定制板包含一个连接到 DIO6引脚的 MPU6050加速计、其配置如下。
PIN_Config pinTable[]={
/*Accelerometer 中断*/
CC1310_LAUNCHXL_ACEL_INT | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_NEGEDGE | PIN_HYSTERESIS、
PIN_Terminate
};
首先、我的 CC1310器件通过 DIO6引脚上的中断来检测运动并通过 UART 发送数据(这里一切都正常)。
从 UART 接收器件获得响应后、我的 CC1310器件(发送器)必须通过 SPI 从传感器读取数据、该数据被加载到有效载荷 TX 数据包并发送到 CC1310接收器件、后者必须用确认响应发送器(从这一点开始、有时会发生问题)。我观察到、如果上述射频消息的传输和接收没有正确完成、发送器中的系统崩溃。 (为解决此问题、我认为按下 cc1310设备(发射器)上的复位按钮后、一切都将正常工作、我的生活将会更快乐)但问题是、在复位后、CC1310无法检测到来自 MPU6050的运动中断、并且只有在断开并完全连接电源(电池)时、它才能再次正常工作。
什么会导致此行为、如何解决?
引脚复位是否会使 CC1310完全关闭、以及所有 DIO (包括射频内核)都打开?
这只是 MPU6050的问题吗?
我做了第二个代码、省略了 RF 消息传输部分、当通过 PIN 重置时、它的工作原理符合我的预期、因此我的直觉告诉我、问题可能是由该部分引起的。
这是我的射频部分、是否存在任何问题或我未考虑在内?
txPacket.PAYLOD[0]= 0xAE;
txPacket.PAYLOD[1]= 0x00;
txPacket.PAYLOD[2]= 0xB1;
txPacket.PAYLOD[3]= 0xDD;
uint8_t j、i;
for (j = 4、i = 0;j!=sizeof (ID_Main)+5;j++、++I){
txPacket.PAYLOD[j]= ID_Main[i];
}
uint8_t k、l;
for (k = 12、l = 0;k!=sizeof (TID)+13;k++、++l){
txPacket.PAYLOD[k]= TID[l];
}//*/
txPacket.len = 24;
memcpy (&txPacket.dstAddr、&dir_broadcast、sizeof (dir_broadcast));
EasyLink_transmitASYNC (&txPacket、TxDoneCb);
信标挂起(RXSem、BIOS_WAIT_FOREVER);
EasyLink_receiveASYNC (rxDoneCb、0);
if (SISPENT_PEND (RXSem、(3000000 / Clock_tickPeriod))= false){
if(EasyLink_abort ()== Easyh Link_Status_Success ){
信标挂起(RXSem、BIOS_WAIT_FOREVER);
}
}
提前感谢!